❯ ctx

Frictionless context-switching, in the terminal setup you already have.

ctx is a TUI and CLI for managing repo-scoped work contexts: each context is a fresh checkout on its own local branch, wrapped in a terminal multiplexer session with your panes already laid out. Spin one up per task, jump between them, archive them when you're done.

$ cargo install ctx-tui
ctx
╭─ [1] Contexts ───────────────────────────────────────────────────────────────────╮
│ NAME              REPO          BRANCH               STATUS  PR        AGENT     │
│ holy-tiger        papaya-nvim   mb/holy-tiger        *       open ✓    working   │
│ tokeniser-perf    bm25          mb/tokeniser-perf    ↑2      draft     idle      │
│ ppo-baseline      nano-rl       mb/ppo-baseline              failing   blocked   │
│ docs-pass         nano-rl       mb/docs-pass                 merged              │
│                                                                                  │
╰──────────────────────────────────────────────────────────────────────────────────╯
╭─ [2] Repos ────────────────────────────╮╭─ [3] Archived ─────────────────────────╮
│ NAME          URL                      ││ NAME        REPO         ARCHIVED      │
│ papaya-nvim * github.com/mb/papaya-nv… ││ lsp-hover   papaya-nvim  5 minutes ago │
│ bm25          github.com/mb/bm25       ││ stemming    bm25         3 hours ago   │
│ nano-rl       github.com/mb/nano-rl    ││ reward-fix  nano-rl      2 weeks ago   │
╰────────────────────────────────────────╯╰────────────────────────────────────────╯
 space Open  o Open PR  d Archive  n New context  / Filter  q Quit  ? Help

Agents let you work on several things at once. ctx takes the friction out of switching between them.

Fresh checkouts, not worktrees

Every context is a full clone on its own branch, based on the up-to-date default branch. No shared state, no git commands failing because you're in the wrong directory.

Sessions laid out your way

ctx is unopinionated about your setup. You describe the panes a context opens with (editor, git client, an agent, anything) and every session comes up that way, in the multiplexer you already use.

Status at a glance

Status columns are pluggable. Git state is built in; add PR status, agent state (working, monitoring, idle, blocked), or integrate your own.

Agent-native

Agents know how to use ctx. With the skill installed, they can manage contexts themselves: tell one to do something in a new ctx and it spins one up, works in there, and wraps up when it's done.

Is ctx for you?

ctx assumes that:

Get started

Just ask your agent to install ctx and set it up.

$ claude "install and set up ctx following its README: github.com/Michael-JB/ctx"