Claude Code Status Line
Introduction
Powerline-style status line for Claude Code.
Requires a Nerd Font installed and setup as your terminals default font.
Recommendation is to install either:
- FiraCode Nerd Font
- JetBrainsMono Nerd Font
Installation
pip install cc-statusline
On newer Linux systems, install with:
pip3 install --break-system-packages cc-statusline
It is recommended to install this status line with the cost tracking hook:
cc-costtrack
see cc-costtrack.
Configuration
Add to ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "cc-statusline"
}
}
Upgrade
Upgrade with pip regularly:
pip install cc-statusline -U
On newer Linux systems, install with:
pip3 install --break-system-packages cc-statusline -U
Features
Segments
project > branch_name > ai_model > ctx% | tokens | cost > quota / usages / enterprise > cli | mcp
Example (Pro/Max plan):
my-app > feat/abc123 > Opus 4.6 > 12% | 58.3k | 1.42$ > 34% (2h05m) > 61% (4.2d) > cli | mcp
Example (Enterprise plan / Anthropic API key):
my-app > feat/abc123 > Opus 4.6 > 12% | 58.3k | 1.42$ > $78.50 22d > cli | mcp
Segment breakdown
| # | Segment | Description |
|---|---|---|
| 1 | Directory | Current working directory name. |
| 2 | Git branch | Branch name with color coding: red for main/master, yellow for staging, blue otherwise. Shows worktree icon if in a worktree. And, language icon, based on best guess. |
| 3 | Model | Active Claude model name. |
| 4 | Context | Context window usage: percentage, input tokens, and session cost (USD). Turns red at 80%+ usage. |
| 5a | Window quota | (Pro/Max only) 5-hour rolling usage percentage and time until reset. |
| 5b | Weekly quota | (Pro/Max only) 7-day usage percentage and time until reset. |
| 5c | Cumulative | (Enterprise / API key only) Monthly cumulative cost* (all sessions) and days remaining in billing period. |
| 6a | CLI Services | Auth status for CLI services (green = authenticated, red = not): GitHub CLI, Atlassian CLI. |
| 6b | Services | Auth status for MCP services (green = authenticated, red = not): Notion MCP, Atlassian MCP, Figma MCP. |
* Cost is estimated, and requires the cost tracking hook to function.
Detected languages
The branch segment appends an icon for the detected project language:
- Terraform
- Node.js
- TypeScript
- Python
- Rust
- Go
- Java
- Perl
- Shell
Caching
Data is cached at multiple tiers to keep the status line fast:
| TTL | Data |
|---|---|
| 1s | Git branch, stdin JSON (session data). |
| 10s | CLI/MCP auth status checks. |
| 60s | Directory name, language detection, monthly cost. |
| 5m | API rate limit usage (Pro/Max). |
Development
Set up a virtual environment:
python3 -m venv .venv
Activate the virtual environment before running any of the steps below:
source .venv/bin/activate
Testing
pip install -e ".[test]"
pytest
Build and publish
Build the distribution:
pip install -e ".[package]"
python -m build
This creates dist/ with .tar.gz and .whl files.
Configure Publishing to Pypi
Configure PyPI credentials in ~/.pypirc:
[distutils]
index-servers =
pypi
testpypi
[pypi]
username = __token__
password = pypi-<your-api-token>
[testpypi]
repository = https://test.pypi.org/legacy/
username = __token__
password = pypi-<your-test-api-token>
API tokens can be created at:
Alternatively, set credentials via environment variables instead of ~/.pypirc:
export TWINE_USERNAME=__token__
export TWINE_PASSWORD=pypi-<your-api-token>
To target TestPyPI, override the repository URL:
export TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/
Publishing to Test Pypi
To publish to TestPyPI first:
pip install -e ".[package,publish]"
# Using ini file:
twine upload --repository testpypi dist/*
# Or, with environment variables:
export TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/
twine upload dist/*
Publishing to Pypi
Publish to PyPI:
pip install -e ".[publish]"
twine upload dist/*
Metadata
Release files for cc-statusline 0.2.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 | |
|---|---|---|---|
| cc_statusline-0.2.0.tar.gz | 18.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cc_statusline-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.4 kB
Release files / cc_statusline-0.2.0.tar.gz
| Download URL | cc_statusline-0.2.0.tar.gz |
|---|---|
| Size | 18.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
15f2698b5486d087f5952546be2210b27f0a28a9fcdb4ebceb962c8fbc38bef3
|
|
BLAKE2b-256 checksum How to use checksums |
0c5958fdf49a1538ee1878d4822fc1b244709a2c4c7fa7f27eb7d3b85ef46e4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / cc_statusline-0.2.0-py3-none-any.whl
| Download URL | cc_statusline-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f88930993e53e46a15e92370a4522e456cda6db6cdd7194fc0e6b7b8903749fd
|
|
BLAKE2b-256 checksum How to use checksums |
0846bbbb1c26819dbae5b0ce847e39cd981da3abcec3903c833acd9ee7251cee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|