Development environment tooling born from building Proofpoint Satori. A reproducible setup for an AI-first terminal environment connecting a MacBook to a DGX Spark via persistent, drop-proof connections with built-in AI agent notifications.
┌─────────────────────┐ UDP (Mosh) ┌──────────────────────────┐
│ MacBook │ ◄─────────────────────────► │ DGX Spark │
│ │ │ │
│ cmux (Ghostty GUI) │ │ Zellij (multiplexer) │
│ ├─ AI sidebar │ │ ├─ Claude Code pane │
│ └─ Notification │ ◄── OSC 777 sequences ──── │ ├─ GPU Monitor pane │
│ rings │ │ └─ Project Logs pane │
└─────────────────────┘ └──────────────────────────┘
| Machine | Requirement |
|---|---|
| MacBook | macOS, Homebrew |
| DGX Spark | Ubuntu/Debian with apt, nvidia-smi, SSH access |
./scripts/setup-local.shInstalls cmux and mosh, then configures Ghostty for SSH terminfo injection.
./scripts/push-terminfo.sh <DGX_HOST>Exports the xterm-ghostty terminfo so the DGX recognises your terminal. Run this once per DGX host.
From your MacBook, deploy and run the remote setup over SSH:
./scripts/deploy-remote.sh <DGX_HOST>This copies the setup script and Zellij layout to the DGX, runs the install (mosh, zellij, notifications), and cleans up the temporary files.
mosh <DGX_HOST> -- zellij --layout satoriThis opens the Satori workspace: Claude Code on the left, GPU monitor and logs on the right, with the tab bar and status bar framing the layout.
- Drop-proof sessions — Mosh uses UDP; closing your laptop lid or losing Wi-Fi just dims the screen and resumes instantly.
- AI notification rings — When Claude Code exits or needs attention,
cmux's sidebar glows blue via OSC 777 escape sequences, even if you're in a different tab. - Task-specific layouts — Three named Zellij layouts for different working modes: default workspace, research/discovery, and code review.
- Agent status indicators — Pane titles update dynamically with Unicode status glyphs (⟳ working, ◉ waiting, ✓ done, ✗ error) via the
satori_statusshell function.
| Layout | Command | Purpose |
|---|---|---|
satori |
zellij --layout satori |
Default workspace: Claude Code + GPU monitor + logs |
satori-research |
zellij --layout satori-research |
Discovery sessions: Claude Code (60%) + Reference + Notes |
satori-review |
zellij --layout satori-review |
Code review: Claude Code + Diff View + Tests + Logs |
.docs/specification.md # Original architecture specification
layouts/
satori.kdl # Default workspace layout
satori-research.kdl # Research/discovery layout
satori-review.kdl # Code review layout
scripts/
setup-local.sh # MacBook: install cmux + mosh, configure Ghostty
push-terminfo.sh # MacBook: push xterm-ghostty terminfo to DGX
deploy-remote.sh # MacBook: deploy and run remote setup over SSH
setup-remote.sh # DGX: install mosh + zellij, deploy layouts + notifications
The setup installs these functions into your shell rc on the DGX:
notify_cmux "Title" "Body"— Trigger cmux notification rings via OSC 777.satori_status working|waiting|done|error ["Label"]— Update the Zellij pane title with a status glyph.claude-watch [args...]— Wrapsclaude code: sets status indicators during execution and fires a notification on exit.
- Zellij layouts — Edit files in
layouts/to add panes, change split ratios, or swap commands. Allsatori*.kdlfiles are deployed automatically. - Notifications — Call
notify_cmuxfrom any script or shell session. - Status indicators — Call
satori_statusto update pane titles programmatically. - Multiple DGX hosts — Run
push-terminfo.shanddeploy-remote.shfor each host.