Navigator
00Overview
Design mock, first committed 2026-04-29. The runtime is ironsilk on PyPI with the tide CLI, and the working cockpits are /tide and tide studio. What exists today is on the Tide Cockpit page.

Hermes Navigator

A domain context layer for terminal-heavy development. Three active domains, ~120 terminals, and a fourth domain still unborn — designed to learn from the three. Transforms an environment where intelligence is buried into one where context surfaces instantly.

Issuejgwill/Miadi#265Phase1 · R1+R4Modeobserver (default)CLItide
Creative intent

"Research is Ceremony"

The system exists not to fix fragmentation, but to create cohesion: every terminal, editor buffer, and session becomes a knowable node in a visible landscape.

The discreet widget is the resting state — 95% of the time, a small badge. The expanded view is for when you ask.

How the three surfaces sit together

Spatial wireframe

surfaces · widget · domain map · panes
Rendering diagram...

The widget is always present. Peek expands inline; pin opens the domain map. Selecting a quadrant drills into its panes. The phone is a peer attach point, not a separate channel — it reaches the same tmux sessions the desktop touches.

The four directions of the navigator

One wheel, four domains

overview · click a quadrant
miadiWaabinong14TERMINALSaureonZhaawanong9TERMINALSunbornEpangishmok—UNBORNmedicine-wheelKiiwedinong6TERMINALSHERMESnavigator
selected: miadi

Each quadrant is a development domain. The west quadrant (Epangishmok) is the unborn fourth — drawn dashed. Selecting it reveals the inheritance edges from the three active domains.

Glossary

A domain is an organizing context bucket — a cluster of repos, tmux sessions, and paths that share a common purpose. The word is deliberate: Hermes Navigator usesDomainConfig / DomainMatch as its core models, not folders or workspaces.

Domain relations

How domains relate

domains.yml · relational graph
Rendering diagram...

Each domain in domains.yml can declare typed relations to other domains (teaches, learns_from, synchronizes_with). The unborn fourth inherits from the three active ones.

What you build with it

The four scenarios

Morning orientation. Sit at the desk, glance at the widget. 14 Miadi terminals, last cwd ~/src/Miadi/rispecs/, 14 hours since last touch. No reconstruction.

Walking with continuity. Name a session. Walk away. Continue on Telegram. Return home to a desktop already prepared.

Safe active control. "Close all Aureon test terminals." Three proposals appear in the queue. Approve in one keystroke. Never drop into a script.

Adopting the unborn. When the fourth domain is named, its first context is composed from the patterns it descends from.

Step-by-step · walking with continuity
  1. 14:25 · desk. Type tide session new -s miadi-spec-sprint in the active pane. The widget pulses; the session is named.
  2. 14:27 · desk. Start claude-code inside the session. It runs as the foreground process; the pty is the session.
  3. 14:30 · phone, leaving. Open the Telegram bot. Send /attach miadi-spec-sprint. The bot replies with a tap-to-open URL — HMAC-signed, expires in 10 minutes, scope rw.
  4. 14:31 · phone, in the elevator. Tap the URL. ttyd opens; the byte stream the claude-code agent is emitting fills the screen.
  5. 14:45 · phone. Type a follow-up instruction. The agent reads it as input on its pty — there is no second agent. Continue thinking in the car.
  6. 16:02 · desk, returning. Widget shows the session is active, 1 pending approval. Click pin → domain map → the same pane. tide session attach miadi-spec-sprint joins mid-stream. No replay.