workspace-native · terminal-native

A control surface for coding agents.

Dispatches Claude, Codex, and any agent CLI onto a daemon that owns each agent's PTY and terminal. The dashboard runs in yours.

$brew install trentkm/stormlight/stormlight source on github →
stormlight

workspaces · agents · spanreed — the selected agent's real terminal, live

design

The daemon owns the terminals. The dashboard just visits.

Each agent is one daemon session: a PTY plus an authoritative terminal emulator. A snapshot is exact state; an attach is a byte stream, never a screen scrape.

agents outlive the dashboard

Close it and nothing stops. The daemon's sessions are the roster.

conversations outlive agents

Every session lands in an append-only log; H reopens any of them, with everything already said and done.

workspace-native

Linked worktrees group into one workspace; each checkout stays a distinct execution root.

bytes, not strings

Messages arrive as a bracketed paste into the PTY. Hooks are wired per launch — nothing is written to ~/.claude or ~/.codex.

attention

Amber is an inbox.

It clears when you engage with a result — not when you scroll past it.

● working Running. A glow sweeps the name — visible, ignorable.
○ waiting Finished with a result you haven't seen. First in, first out.
! question · approval · auth Blocked on you. The row goes loud; Enter walks into the prompt.

the engine underneath

Built on windrunner.

A persistent terminal session engine for Go.

Windrunner owns PTYs, runs a real VT emulator for each one — pure Go, no cgo — and keeps them alive in a daemon that outlives any client. It's the engine inside tools like tmux and screen, extracted and embeddable. Stormlight is its first consumer: the daemon is the stormlight binary itself, started on demand. Nothing else to install.

  • A library first — daemon and wire protocol are packages, not requirements
  • Snapshots are exact serialized state, then the live byte stream
  • Bytes on the wire — bring any front end: a Go TUI, xterm.js, a bot

install

$brew install trentkm/stormlight/stormlight