Aller au contenu
Developer Preview — APIs and language features may change before 1.0

Glyph System

Ce contenu n’est pas encore disponible dans votre langue.

mashin has a visual language. Every runtime event, governance decision, and platform component is represented by a bracket-framed symbol. The same symbols appear in execution traces, the IDE, terminal output, error messages, and documentation. If you learn the symbols, you can read any mashin trace in any human language.

The rule

Every symbol has exactly one meaning. No symbol appears in two contexts.

The bracket frame [ ] is the governance boundary made visual. Nothing escapes the brackets. The frame is the brand.

Quick reference

IDENTITY EXECUTION GOVERNANCE SIGNALS
[*] machine [≡] compute [√] allow [!] signal
[□] krate [◎] reason [⊘] deny
[∴] koda [○] mem read [?] hold
[~] kortex [◉] mem write [x] terminate
[#] kanon [→] call [+] recorded
[⊞] kura [⊳] decide
[◇] kore […] await
[Ξ] kodex [⇄] network
[▷] kanvas
[♡] kardia

Identity glyphs

These identify platform components. They appear in navigation, documentation, and architecture diagrams.

GlyphNameWhat it is
[*]machineThe universal unit. The asterisk is a wildcard: machines can be anything.
[□]krateA packaged machine. The outlined square: sealed, self-contained.
[∴]kodaThe reasoning engine. “Therefore”: the conclusion drawn from premises.
[~]kortexThe network fabric. The wave: data flowing between machines.
[#]kanonThe governance ledger. The hash mark: the cryptographic chain.
[⊞]kuraThe registry. A grid of cells: a structured catalog.
[◇]koreThe verified kernel. The diamond: formally verified, unbreakable.
[Ξ]kodexThe text-first rendering surface. Three lines on a page.
[▷]kanvasThe graphical interface layer. Outward-facing, presenting.
[♡]kardiakoda’s core personality. The heart of cognition.

Execution glyphs

These represent step types at runtime. They appear in Kine traces, step timelines, and monitoring. Color indicates status: blue = running, green = completed, red = failed.

GlyphStep typeWhat it means
[≡]:computePure computation. Structured evaluation, no effects.
[◎]:reasonFocused reasoning. An LLM, symbolic planner, or solver is thinking.
[○]:remember readMemory recall. Reaching into stored knowledge.
[◉]:remember writeMemory store. Writing new knowledge.
[→]:callInvoking another machine. Directed action, delegation.
[⊳]:decideBranch point. Forking into paths based on a condition.
[…]:awaitSuspended. Waiting for external input, webhook, or timer.
[⇄]networkData exchange. Bidirectional communication via kortex.

Governance glyphs

These represent what the runtime decided. They appear alongside execution glyphs in traces and audit logs.

GlyphWhat it means
[√]Allow. All governance checks passed.
[⊘]Deny. Governance intercepted. Capability not declared, budget exceeded, or policy violated.
[?]Hold. Requires human review before proceeding.
[x]Terminate. Forced stop. Circuit breaker, timeout, or kill signal.
[+]Recorded. A ledger event was written. The hash chain extended.

Signal glyph

GlyphWhat it means
[!]Signal. Something needs attention. Run failure, governance alert, or system event.

Reading a trace

An execution trace is a sequence of glyphs. Each line tells you what happened, what was checked, and what decided what.

[*] emailTriager run started
[○] recall previous_context reading memory
[√] governance: allowed
[◎] classify reasoning with claude-sonnet
[√] governance: allowed
[⊳] route deciding: urgency == "high"?
[?] send_reply hold: awaiting human approval
[√] approved by [email protected] governance: approved
[→] @mashin/actions/slack/post calling external machine
[[*]] slack_post nested execution
[⇄] POST api.slack.com/chat network call
[√] governance: allowed
[[*]] done nested execution complete
[+] behavioral ledger hash chain event recorded
[→] {escalated: true, response: ...} final output
[*] emailTriager run complete (1.2s, $0.003)

A person unfamiliar with mashin can read this trace and understand what happened. That is the test.

In terminal output

Every glyph has an ASCII fallback for terminals without Unicode:

$ mashin run emailTriager --input '{"email": "..."}'
[*] emailTriager
[o] recall previous_context [v]
[@@] classify [v]
[|>] route
[?] send_reply hold: awaiting approval...
[v] approved
[->] slack/post [[.]] [<>] POST api.slack.com [v]
[+] ledger
[->] {escalated: true}
[*] done (1.2s, $0.003)

In error messages

The glyph tells you the category before you read the text:

[⊘] Governance denied: capability "net.http" not declared
Machine: emailTriager
Step: fetch_data (line 23)
[x] Run terminated: budget exceeded ($0.50 limit, $0.51 spent)
Machine: research_agent
[?] Hold: awaiting approval for send_email
Machine: emailTriager
Approve: mashin approve run_01JQ... step send_email
[!] Signal: run failed
Machine: emailTriager
Error: SMTP connection refused

Color mapping

Colors are symbolic. Each carries a single meaning. Color reinforces but is never required; the glyph alone must be sufficient.

ColorHexSymbolic meaningUsed with
Emerald green (brand)#10B981Identity, life, intelligence[*] [∴] [◇] all identity glyphs
GreenAllowed, verified, completed[√]
AmberAttention, governance, hold[?] […] [!]
RedDenied, terminated, boundary[⊘] [x]
BlueActive, thinking, in motion[◎] [≡] [→] [⊳]
GrayRecorded, structural, at rest[+]

Neutrals (structure) + Emerald green (intent) + Amber (governance) + Red (boundaries) = meaningful system.

Design constraints

  • Bracket frame: every glyph is contained in [ ]. The governance boundary made visual.
  • Typographic only: interior symbols are mathematical, geometric, or punctuation. No emoji, no pictographs.
  • Monochrome capable: every glyph works in a single color.
  • Terminal renderable: every glyph has a plain-text ASCII fallback.
  • 1:1 mapping: every symbol has exactly one meaning across all contexts.

Implementation

React:

import { Glyph } from '@mashin/kodex'
<Glyph type="reason" state="active" /> // [◎] in blue, pulsing
<Glyph type="verified" state="success" /> // [√] in green
<Glyph type="denied" state="blocked" /> // [⊘] in red

SwiftUI:

GlyphView(glyph: .reason, state: .active, size: .compact)
GlyphView(glyph: .verified, state: .success)

Terminal (Elixir):

IO.puts("[@@] classify [v]")
IO.puts("[|>] route")
IO.puts(" [?] send_reply hold: awaiting approval")