Betty
A real-time TUI monitor for Claude Code sessions.
Install
curl -fsSL https://betty4.sh/install.sh | bash
Or directly with uv / pip:
uvx --from betty-cli betty # run without installing
uv tool install betty-cli # install permanently
pip install betty-cli # with pip
Use
# Start betty
betty
# In another terminal, run Claude Code as usual
claude
The companion auto-detects your session. No hooks or configuration needed.
Options
| Flag | Description |
|---|---|
--global, -g |
Watch all projects |
--worktree, -w |
Watch across git worktrees |
--style |
UI style (rich or claude-code) |
--version, -v |
Show version |
Commands
| Command | Description |
|---|---|
config |
Configure LLM summarization and UI settings |
mock --demo |
Generate mock sessions for development |
Keybindings
Navigation
| Key | Action |
|---|---|
j/k |
Navigate turns |
g/G |
Jump to beginning/end |
1-9 |
Switch sessions |
h/l |
Switch panels (manager expand mode) |
Display
| Key | Action |
|---|---|
o / Space / Enter |
Expand/collapse turn or span |
e/c |
Expand/collapse all |
f |
Cycle filters (All, Spans, Tools, Read, Write, Edit, Bash) |
s/S |
Toggle summaries / Summarize all |
Views
| Key | Action |
|---|---|
M |
Toggle manager view |
T |
Toggle tasks view |
P |
Toggle plan view |
I |
Toggle insights (analysis) panel |
Analysis & Annotations
| Key | Action |
|---|---|
A |
Analyze selected turn/span/session |
[/] |
Zoom analysis level (turn / span / session) |
n |
Annotate selected turn |
a |
Toggle/clear alerts |
Agent
| Key | Action |
|---|---|
B |
Toggle agent panel (closed / full / compact) |
? |
Ask Betty a question about the session |
Other
| Key | Action |
|---|---|
O |
Open PR in browser |
x |
Export to Markdown |
m |
Edit monitor instructions |
D |
Delete session |
Esc |
Close panel / clear selection |
q |
Quit |
Betty Agent
Betty Agent is a continuous session observer that tracks what Claude Code is doing and flags problems in real time. It combines heuristic detectors with optional LLM-powered narrative and drift detection.
Enable
betty config --agent
Or set the environment variable BETTY_AGENT_ENABLED=true.
What it does
- Goal tracking — extracts the session goal and current objective, updating as the user gives new instructions
- Progress assessment — classifies sessions as
on_track,stalled, orspinningusing error rates, retry patterns, and tool diversity - Error spike detection — warns when error rate exceeds 40% in recent tool calls
- Retry loop detection — flags when the same tool is called 3+ times consecutively
- Stall detection — notices gaps of 2+ minutes between turns
- File change tracking — logs Read/Write/Edit operations with line counts
- Milestones — marks every 10th tool call and 5th user message
- LLM narrative (optional) — generates a 2-3 sentence situation report describing current activity
- Goal drift detection (optional) — compares recent activity against the session goal and warns if the assistant has gone off track
- Ask Betty — press
?to ask a natural-language question about the session; Betty answers citing turn numbers and file paths
Configuration
The agent uses your existing LLM configuration (set via betty config). LLM features (narrative, drift detection, goal determination, Ask Betty) require a configured LLM provider. Heuristic detectors work without one.
| Setting | Default | Description |
|---|---|---|
enabled |
false |
Enable the agent (opt-in) |
update_interval |
5 |
Minimum turns between LLM updates |
max_observations |
50 |
Max observations kept per session |
Observations and reports are cached to disk (~/.cache/betty/) and persist across restarts.
License
MIT
Release files for betty-cli 0.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| betty_cli-0.15.0.tar.gz | 107.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| betty_cli-0.15.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 230.6 kB
Release files / betty_cli-0.15.0.tar.gz
| Download URL | betty_cli-0.15.0.tar.gz |
|---|---|
| Size | 107.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9cb72900903b168b86848954b568aa5a710a10ab3816def41e56dd314a282113
|
|
BLAKE2b-256 checksum How to use checksums |
a99daffe90a9789109c1bc32cccdc4a05a75b5e0143736dfea5a4c6b0fae5b3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.
Transparency logRelease files / betty_cli-0.15.0-py3-none-any.whl
| Download URL | betty_cli-0.15.0-py3-none-any.whl |
|---|---|
| Size | 122.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
98ed382063b8905665e78e9eec6c6ab39253b2f8981aa71ed96b302512c31cfb
|
|
BLAKE2b-256 checksum How to use checksums |
c2634e77cbe4ae37048952fea20ab4e16916ba83cf95fa6c27540703749cb3c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.
Transparency log