
chat + terminal · macOS
Cherminal is a calm, room-driven Ghostty manager for living with CLI agents like Claude Code and Codex. Your ~/dev folders are rooms; every conversation you start lives in one. See them all. Jump back into any one without losing your place.
you@mac ~/dev/api ❯ claude --resume
· reattaching session a1b2c3d4 …
✻ Found it. The race is in the token refresh.
I'll share one in-flight refresh so concurrent requests don't stampede the endpoint.
· Edited auth/session.ts (+24 −6)
✓ tests passing · review clean
❯
conversations · a real Ghostty terminal · context watch
the load-bearing rule
Cherminal watches agents the way a window manager watches windows: by reading the OS, never by injecting into the app. It reads Claude and Codex session files and matches processes by PID. The agent never knows Cherminal is running, so its hot path stays clean and the whole thing stays fast.
what it is
A room is just a folder under ~/dev, your existing methodology, untouched. Every conversation you start lives in its room. The rail lists them all, by room or by recency: live, idle, dormant, pinned.
Tabs keep every conversation alive at once. Move between them without killing the agent underneath. That is the load-bearing move: jump away, and jump back, without losing your place.
Close a pane and the agent keeps running off-screen, parked in a side rail at near-zero memory. Reattach whenever you want. The conversation rail is your home base.
The right rail shows the live state of the one conversation you're in: files touched this turn, the git diff in its room, the token budget. It belongs to the conversation, not the room.
The middle pane is a real Ghostty terminal, GPU-fast and true-color, nothing re-implemented. The agent runs in it exactly as it would anywhere, and never knows Cherminal is there.
Not a general-purpose product. Hardcoded to one stack: Claude Code, Codex, Ghostty, ~/dev. No settings sprawl, no Feed, no approval queue. Small enough to understand, and to delete.
Apple Silicon · macOS · open source