Skip to main content

Multi-session terminal chat for blemees-agentd (Claude Code + Codex).

Project description

blemees-tui

Multi-session terminal chat for blemees-agentd — Claude Code + Codex agents, side-by-side, in one process. Watch a session running in another terminal, take ownership when you need to type, and never lose a transcript across restarts.

Status: v0.1 alpha. The core loop is complete; see docs/IMPLEMENTATION.md for what's done and what's next, and docs/PARITY_BACKLOG.md for the curated parity backlog.

blemees-tui screenshot placeholder

Why

Claude Code and Codex are great in their own terminal, but bouncing between sessions, recovering from a closed shell, or watching a long-running agent from a second machine all leave you stitching tabs together by hand. blemees-tui is a thin presentation layer over blemees-agentd that keeps every session live in one window:

  • Multi-session sidebar with keyboard navigation (Ctrl+1..0, Ctrl+Tab, :select N).
  • Watch mode — observe a session running anywhere (blemees-agentd is a Unix-socket daemon; SSH-forward it across machines) and take ownership with one click.
  • Streaming Markdown transcript with collapsible reasoning, syntax-highlighted Edit diffs, Write previews per language, and live token estimates.
  • Persistent across restarts — sessions snapshot to disk after every turn; cold start paints from cache and only replays new daemon frames.
  • Per-session drafts — typed text travels with the session, not the composer.
  • First-class observability — footer chip, event-log overlay (Ctrl+E), raw-frame debug pane (Ctrl+D), persistent log file.

Install

# PyPI (when published)
pip install blemees-tui

# uv tool
uv tool install blemees-tui

# pipx
pipx install blemees-tui

# Homebrew (planned)
brew install blemees/tap/blemees-tui

Requires Python ≥ 3.11 and a running blemees-agentd ≥ 0.9.0 Unix socket.

Quickstart

# Auto-resolve the daemon socket (uses $BLEMEES_AGENTD_SOCKET, then
# $XDG_RUNTIME_DIR/blemees/agentd.sock, then /tmp/blemees-agentd-<uid>.sock)
blemees

# Or point explicitly:
blemees --socket /path/to/agentd.sock
Action Keys
New session Ctrl+N
Attach to existing (watch) Ctrl+T
Switch session F1F12, Ctrl+Tab
Switch to session ≥ 13 :select 13
Close current session Ctrl+W
Delete current session Ctrl+Shift+W
Interrupt turn Ctrl+C
Force reconnect Ctrl+R
Event log overlay Ctrl+E
Debug pane (raw frames) Ctrl+D
Save transcript (Markdown) Ctrl+S
Toggle reasoning visibility t
Help overlay ?
Quit q

/foo slash commands forward verbatim to the active backend (so Claude Code skills and Codex slash commands stay reachable). :foo is reserved for TUI commands — see :help.

Configuration

$XDG_CONFIG_HOME/blemees/tui.toml (or ~/.config/blemees/tui.toml):

[connection]
socket = ""                    # empty = auto-resolve

[defaults]
backend = ""                   # empty = first advertised by hello_ack
claude_model = "sonnet"
codex_model = "gpt-5.2-codex"
claude_permission_mode = "default"
codex_sandbox = "workspace-write"

[ui]
theme = "dark"                 # dark | light
sidebar_width = 28
show_thinking = false
markdown_code_theme = "monokai"

[logging]
level = "info"                 # debug | info | warn | error
keep_days = 7

CLI overrides:

blemees --socket /tmp/blemees-agentd.sock --log-level debug

Env-var overrides: BLEMEES_AGENTD_SOCKET, BLEMEES_TUI_THEME, BLEMEES_TUI_LOG_LEVEL, BLEMEES_TUI_BACKEND.

Persistence

Files under $XDG_STATE_HOME/blemees/tui/:

  • sessions.json — index of live + watching sessions.
  • history.json — bounded ring (200 entries) of closed-but-remembered sessions.
  • snapshots/<id>.json — full per-session in-memory state cached to disk so a TUI restart skips the full daemon replay.
  • transcripts/Ctrl+S Markdown exports.
  • tui.log — rotating log (weekly, 7 keep).

Develop

pip install -e '.[dev]'
pytest                          # 85 tests
ruff check .
ruff format --check .

See CONTRIBUTING.md for the workflow.

Docs

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blemees_tui-0.1.0.tar.gz (79.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blemees_tui-0.1.0-py3-none-any.whl (71.8 kB view details)

Uploaded Python 3

File details

Details for the file blemees_tui-0.1.0.tar.gz.

File metadata

  • Download URL: blemees_tui-0.1.0.tar.gz
  • Upload date:
  • Size: 79.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for blemees_tui-0.1.0.tar.gz
Algorithm Hash digest
SHA256 48088b35ab4ed44c7600777e552c8dc5fda9569d8cefb3a54a71e6092e998df0
MD5 57a51933ec80217475cc058514fe5447
BLAKE2b-256 0b4d567bcfc789e150c5daef8026566439b824a39be478db71dcc81773b86380

See more details on using hashes here.

Provenance

The following attestation bundles were made for blemees_tui-0.1.0.tar.gz:

Publisher: release.yml on blemees/blemees-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file blemees_tui-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: blemees_tui-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 71.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for blemees_tui-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4441d74c857c1c8091f3a31b55762e13d6e88337c6f4fc4c680fef3ee141d5ed
MD5 226c101e0c2b33e55094617a1a60fd8f
BLAKE2b-256 56d5a4e229305cba80895b071647e4ddb73d060144c344f2ab9efc1bb61ef7dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for blemees_tui-0.1.0-py3-none-any.whl:

Publisher: release.yml on blemees/blemees-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page