paddington
A fast, minimal status line renderer for Claude Code, written in Rust.
Reads Claude Code's JSON status input from stdin and outputs a compact, color-coded multi-line status bar showing:
- Line 1 — Project path, git repo/branch, worktree, PR status, session name
- Line 2 — Model name, context window usage
- Line 3 — Session cost (with running monthly total), duration, lines changed
Session cost data is automatically persisted to a local SQLite database, enabling monthly analytics.
Install
Usage
Configure as your Claude Code status line command in ~/.claude/settings.json:
Custom Templates
Paddington's output is fully customizable via a MiniJinja template in $XDG_CONFIG_HOME/paddington/config.toml (defaults to ~/.config/paddington/config.toml):
[]
= """
{{ blue }}{{ path_raw }}{{ reset }} {{ yellow }}{{ branch_raw }}{{ reset }} {{ git_dirty }}
{{ model }} {{ gray }}[${{ cost_raw }}]{{ reset }}"""
Every variable has two forms:
- Auto-colored (
{{ model }}) — wraps the value in its default ANSI color - Raw (
{{ model_raw }}) — plain text, use with explicit color tags for custom coloring
Available Variables
| Variable | Description | Default Color |
|---|---|---|
path |
cwd relative to project root | blue |
repo_owner, repo_name |
GitHub owner/repo | yellow |
branch |
git branch or short SHA | yellow |
worktree |
worktree name | blue |
pr_number, pr_state |
PR number and review symbol (✓/✗/~) | magenta |
session_name |
session name | magenta |
model |
model display name | green |
model_id |
raw model identifier | gray |
context_used, context_total, context_pct |
context window (in k / %) | gray |
cost, monthly_cost |
session / monthly cost (USD, 2 decimal) | yellow |
duration |
session duration | gray |
lines_added, lines_removed |
lines changed | green / red |
project_name |
project directory basename | blue |
session_id |
session identifier | gray |
hostname, username |
machine / OS user | gray |
datetime |
current time (HH:MM) | gray |
paddington_version |
version string | gray |
git_dirty |
"dirty" if uncommitted changes | yellow |
Color tags: {{ blue }}, {{ yellow }}, {{ green }}, {{ red }}, {{ magenta }}, {{ gray }}, {{ reset }}
If no config file exists, paddington uses a built-in default template that matches the standard output. If the config has errors, a warning is shown in the status line and the default template is used as a fallback.
Validate & Preview
Validates your config file and renders a preview with mock data — no live Claude Code session needed.
Monthly Analytics
View cost breakdowns by day, model, and project:
Data is stored at $XDG_DATA_HOME/paddington/sessions.db (defaults to ~/.local/share/paddington/sessions.db).
Build
The release profile is configured with LTO and symbol stripping for a small binary.
Credits
Heavily inspired by Starship