Skip to content

Latest commit

 

History

History
116 lines (86 loc) · 4.04 KB

File metadata and controls

116 lines (86 loc) · 4.04 KB

Wire identity in your terminal statusline

wire whoami --colored outputs the current session's persona — a deterministic nickname + emoji + color derived from the session's DID. Same DID always gets the same persona, across daemon restarts and machine migration.

Wire on this machine? Try it:

wire whoami --colored
# 🐅 winter-bay   (with ANSI 256-color foreground escape)

wire whoami --short
# 🐅 winter-bay   (plain text, safe for piping)

Drop it into your editor / terminal statusline to know at a glance which session you're talking to. Especially useful when running multiple Claude Code instances on the same machine — every session gets a distinct persona.

Claude Code statusline

Add to ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "wire whoami --colored 2>/dev/null"
  }
}

The statusline command runs every ~300ms. wire whoami reads local files only — no daemon round-trip, microsecond latency — safe at that cadence.

For richer statuslines that combine wire with other context (git branch, model name, etc.):

{
  "statusLine": {
    "type": "command",
    "command": "printf '%s | %s' \"$(wire whoami --colored 2>/dev/null)\" \"$(git -C \"$PWD\" branch --show-current 2>/dev/null)\""
  }
}

Tmux pane border / status bar

The persona's ANSI 256-color index is available via wire whoami --json:

wire whoami --json | jq -r '.persona.palette.ansi256_primary'
# 170

Tint the active pane's border with the persona's primary color:

wire_ansi="$(wire whoami --json 2>/dev/null | jq -r '.persona.palette.ansi256_primary')"
tmux set-option -p pane-active-border-style "fg=colour${wire_ansi}"

Drop into ~/.tmux.conf as a session-aware hook if you want it automatic.

Cross-session view

wire session list shows every session on this machine with its persona:

PERSONA                NAME              HANDLE            DAEMON     CWD
🦘 rosy-slate          dogfood-a         dogfood-a         down       (no cwd registered)
🦃 deep-ash            dogfood-b         dogfood-b         down       ~/Source/slancha-dogfood
🌻 noble-canyon        slancha-business  slancha-business  down       ~/Source/slancha-business
🐅 winter-bay          wire              wire              down       ~/Source/wire

Personas are colored in real terminal output (rendering plain here).

How personas are generated

Wire takes the session's DID (e.g. did:wire:winter-bay-b6f47edb), runs SHA-256, and uses distinct byte slices to index into:

  • A curated ~120-adjective × 120-noun word list (≈14,400 combinations)
  • A curated 64-emoji set (single-codepoint, terminal-stable)
  • HSL color space, with saturation 0.55-0.80 and lightness 0.50-0.65 — bounded for readability on both light and dark terminal backgrounds

The output is converted to a #rrggbb hex pair (primary + accent) and to the nearest ANSI 256-color cube index. All fields are deterministic — given the same DID, you always get the same persona.

Wire never stores personas on disk. They're computed at read time. This means future word-list additions or palette tweaks affect new identities without re-keying old ones; existing identities re-derive to the same persona every time because the seed (the DID) never changes.

Naming note (v0.12): the serialized JSON key is persona (wire whoami --json | jq .persona). It was character in v0.11 and earlier — update any old statusline scripts that read .character. The internal Rust type is still named Character.

Persona is display-only

Wire's protocol layer doesn't care about personas. Routing, signing, pair verification, and agent-card publication all continue to use the DID. The persona is the human-facing handle the operator sees; the DID is what peers see on the wire.

As of v0.11 the persona IS the addressable handle — agent-card.handle is set to the DID-derived persona at init, so peers reach you by the same string you see in your statusline. (v0.12 also surfaces it on the relay phonebook and wire notify toasts.)