Skip to content

Adapters

Adapters teach gmux how to interpret specific tools. When you launch a session, gmux automatically detects what you’re running and applies the right adapter.

An adapter watches the terminal output of your process and reports structured status to the sidebar:

  • Working — the tool is busy (cyan pulsing dot)
  • Idle — the tool is waiting (no dot)

Without an adapter, gmux still tracks whether the process is alive — but with one, you get meaningful at-a-glance status like “thinking” or “42/50 passed”.

You don’t configure adapters. gmux recognizes tools by their command name:

Terminal window
gmux claude # → claude adapter
gmux codex # → codex adapter
gmux pi # → pi adapter
gmux bash # → shell adapter (fallback)
gmux make build # → shell adapter (fallback)

If no specific adapter matches, the shell adapter handles it.

Always active. Tracks terminal title changes so your shell’s PS1 or tool-set window titles appear in the sidebar.

Active when claude is installed. Provides:

  • Live status detection (working while assistant responds, idle when done)
  • Session titles from conversation files or Claude’s auto-generated titles
  • Resumable sessions — exited sessions stay in the sidebar, click to resume via claude --resume

See Claude Code integration for details.

Active when codex is installed. Provides:

  • Live status detection (working while agent responds, idle on task completion)
  • Session titles from your first prompt (system context filtered out)
  • Resumable sessions — exited sessions stay in the sidebar, click to resume via codex resume

See Codex integration for details.

Active when pi is installed. Provides:

  • Live status detection (thinking, waiting for input, etc.)
  • Session titles from conversation files
  • Resumable sessions — exited sessions stay in the sidebar, click to resume

See pi integration for details.

Any process can report its own status without a custom adapter. gmux sets $GMUX_SOCKET in the child’s environment:

Terminal window
curl -X PUT --unix-socket "$GMUX_SOCKET" \
http://localhost/status \
-H 'Content-Type: application/json' \
-d '{"label": "building", "working": true}'

Adapters are Go files in packages/adapter/adapters/. See Writing an Adapter for the recipe, or Adapter Architecture for the runtime model.