1. I was constantly jumping between terminals to see which session needed input.
2. Using git worktrees added setup friction (installing deps, bootstrapping environments, etc.), which discouraged parallel work.
So I built ccmux.It’s a thin layer on top of tmux that:
- Adds a glanceable sidebar UI showing all Claude Code sessions
- Surfaces attention-needed states with visible alerts
- Wraps git worktrees with a lightweight workflow abstraction so spinning up parallel tasks feels cheap
Technical details: - tmux provides the pane/session orchestration
- The sidebar is built with Python’s Textual (rich TUI)
- Each Claude Code session runs as a window in a nested tmux session.
I now use it daily to juggle multiple AI coding sessions without losing context. Happy to answer questions or dive into implementation details.
jlongo78•1h ago
raykamp•1h ago
"persistent session replay" are you meaning more of a "resume" than "replay" ? I'm a little bit confused by the description, but curious to understand.
If I'm understanding it correctly, I think you'll appreciate what ccmux offers for streamlining the switch/resuming sessions: a sidebar that shows ongoing tasks that can be named. Each one requires just a mouse click or key binding to switch into.
jlongo78•1h ago
The named sidebar sounds useful for switching. My main need is the conversation history staying searchable and tied to that named scope, so when I return days later I can reconstruct what the agent was doing and why. Does ccmux persist that context across sessions?
raykamp•1h ago
The ccmux sessions are tied 1-to-1 with claude code sessions. If a the ccmux "workspace", ccmux's tmux session, gets killed or a user intentionally kills/deactivated a ccmux session, it can be reactivated easily. Under the hood it's just ccmux tracking claude code session IDs and attempting to resume said session when reenabling.
Your input has me thinking there could be a couple features to consider:
jlongo78•49m ago
On the context side, maybe a short freeform note field attached at session creation? Branch name gets you partway there but doesn't capture intent. Something like "refactoring auth layer - blocked on X" would make resurrection much faster after a few days away.
I work mostly in backend infra and developer tooling.
raykamp•38m ago
Expanding on that idea, the short freeform note/summary could be optionally auto generated and continually maintained (if scope shifts) by the Claude session. Akin to AI summarizing changes and writing git commits for us.