{
  "markdown": "<div align=\"center\">\n\n<img src=\"assets/logo.svg\" width=\"240\" alt=\"claudebar\">\n\n**A powerline statusline for Claude Code: segments, themes, and a live TUI configurator in a single native binary.**\n\n[![CI](https://img.shields.io/github/actions/workflow/status/micschr0/claudebar/rust.yml?style=flat-square&label=CI)](https://github.com/micschr0/claudebar/actions/workflows/rust.yml) [![Release](https://img.shields.io/github/v/release/micschr0/claudebar?style=flat-square&label=release)](https://github.com/micschr0/claudebar/releases/latest) [![Downloads](https://img.shields.io/github/downloads/micschr0/claudebar/total?style=flat-square&label=downloads)](https://github.com/micschr0/claudebar/releases) [![Security](https://img.shields.io/github/actions/workflow/status/micschr0/claudebar/security.yml?style=flat-square&label=Security)](https://github.com/micschr0/claudebar/actions/workflows/security.yml) [![Provenance: attested](https://img.shields.io/badge/provenance-attested-2ea44f?style=flat-square)](SECURITY.md#verifying-a-release) [![Platform](https://img.shields.io/badge/platform-linux%20%7C%20macos-lightgrey?style=flat-square)](CLAUDE.md) [![Rust 2024](https://img.shields.io/badge/rust-2024-%23CE422B?style=flat-square)](Cargo.toml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)\n\n**[Documentation & live demo](https://micschr0.github.io/claudebar/)**\n\n</div>\n\n<img src=\"screenshots/normal.png\" alt=\"claudebar statusline pinned at the bottom of a Claude Code session\">\n\n## Install\n\n> [!NOTE]\n> Powerline glyphs need a [Nerd Font](https://www.nerdfonts.com/), or switch to the `ascii` style.\n> On macOS: `brew install --cask font-hack-nerd-font` (the font used in the screenshots).\n\n```bash\n# verifies SHA256, plus build provenance when gh is available\ncurl -fsSL https://raw.githubusercontent.com/micschr0/claudebar/main/install.sh | bash\n```\n\n**Homebrew**\n```bash\n# verifies SHA256\nbrew install micschr0/tap/claudebar\n```\n\n**mise**\n```bash\n# verifies SHA256 and build provenance automatically\nmise use -g github:micschr0/claudebar\n```\n\n**pnpm**\n```bash\n# same per-platform package, installable with any npm-registry package manager\npnpm add -g @micschr0/claudebar\n```\n\nThen wire it into Claude Code. It shows a diff, asks before writing, and backs up the old file:\n\n```bash\nclaudebar setup\n```\n\n<details><summary>What each install method verifies</summary>\n\nEvery method checks the SHA256 of the downloaded archive. Only some also verify [build provenance](https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds), which proves that this repo's `release.yml` built the binary. A matching hash on its own does not.\n\n| Method | SHA256 | Build provenance |\n|---|---|---|\n| `install.sh` | ✓ fatal on mismatch | ~ needs `gh`, authenticated |\n| Homebrew | ✓ | ✗ |\n| `mise` | ✓ | ✓ automatic |\n| npm / pnpm | ✓ (ships verified binary) | ✗ |\n| `claudebar-installer.sh` (hosted) | ✓ | ✗ |\n\n<sub>✓ verified, ~ conditional, ✗ not checked</sub>\n\n> [!NOTE]\n> The npm/pnpm packages ship the **already-attested** release binaries (built and\n> provenance-signed by `release.yml`, then repackaged unchanged). The package itself\n> carries no [npm registry provenance](https://docs.npmjs.com/generating-provenance-statements/),\n> since that would attest the repackaging workflow rather than the build. What\n> `install.sh` checks is the `release.yml` provenance on the binaries themselves.\n\n`install.sh` treats a checksum mismatch as fatal; a provenance error only warns. It scopes trust to `release.yml` via `gh attestation verify --signer-workflow`. To verify a download by hand:\n\n```bash\ngh attestation verify claudebar-x86_64-unknown-linux-musl.tar.gz \\\n  --repo micschr0/claudebar \\\n  --signer-workflow micschr0/claudebar/.github/workflows/release.yml\n```\n</details>\n\n<details><summary>Review the script first</summary>\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/micschr0/claudebar/main/install.sh -o install.sh\nclaude -p \"Audit this script for anything unsafe, then summarize what it does\" < install.sh\nbash install.sh\n```\n</details>\n\n<details><summary>Beta channel</summary>\n\nPrereleases (tagged e.g. `2026.7.6-beta.1`) ship to a separate Homebrew formula, so `brew upgrade` keeps stable users on stable:\n\n```bash\nbrew install micschr0/tap/claudebar-beta\n```\n\nOr via the script:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/micschr0/claudebar/main/install.sh | CLAUDEBAR_CHANNEL=beta bash\n```\n\n`micschr0/tap/claudebar` always tracks stable; `claudebar-beta` follows the latest prerelease. Back to stable:\n\n```bash\nbrew uninstall micschr0/tap/claudebar-beta && brew install micschr0/tap/claudebar\n```\n</details>\n\n## What it looks like\n\nColors shift as usage crosses **50%** and **80%**:\n\n<img src=\"screenshots/strip-normal.png\" width=\"860\" alt=\"Normal: calm baseline\">\n\n<img src=\"screenshots/strip-critical.png\" width=\"860\" alt=\"Critical: a rate limit is approaching\">\n\n<img src=\"screenshots/strip-overlimit.png\" width=\"860\" alt=\"Over limit: past the threshold\">\n\nAll segments. Four are off by default (dev-context, burn, clock, update-notice):\n\n<img src=\"screenshots/segment-pills.png\" width=\"860\" alt=\"Every claudebar segment: directory, git, model, context, dev-context, rate limits, lines, cost, burn, duration, clock, update notice\">\n\n## Configure\n\n```bash\nclaudebar config\n```\n\nFull-screen TUI: live preview, theme and style pickers, threshold sliders. `?` for keys, `s` saves, `q` quits.\n\n<img src=\"screenshots/config-tui.png\" width=\"860\" alt=\"claudebar TUI configurator with live preview, theme picker, and thresholds\">\n\n<img src=\"screenshots/config-tui-style.png\" width=\"860\" alt=\"claudebar TUI style picker with live preview for each style\">\n\nOr edit the TOML at `~/.config/claudebar/config.toml` directly (`claudebar edit`):\n\n```toml\ntheme = \"tokyo-night\"\nstyle = \"powerline\"\nsegments = [\"directory\", \"git\", \"model\", \"context\", \"lines\", \"rate-limits\", \"cost\", \"duration\"]\n\n[thresholds]\nwarn = 50   # bar turns yellow\ncrit = 80   # bar turns red\n```\n\n## CLI reference\n\n| Command | Action |\n|---|---|\n| `claudebar` / `claudebar render` | Read session JSON from stdin, write ANSI statusline to stdout |\n| `claudebar config` | Launch the TUI configurator |\n| `claudebar setup` | Wire claudebar into Claude Code's `settings.json` |\n| `claudebar list` | List built-in themes and styles |\n| `claudebar doctor` | Diagnose font, git, config, and PATH issues |\n| `claudebar update` | Check for a newer claudebar release (manual; never runs during rendering) |\n\nMore commands and flags: `claudebar --help`.\n\n### Checking for updates\n\n`claudebar update` compares your installed version against the newest GitHub\nrelease. You run it yourself, and the render path never blocks on the network,\nso the statusline cannot stall on it.\n\nIt compares against the newest **stable** release. Pass `--channel beta` to\ninclude prereleases.\n\n```bash\nclaudebar update\n# claudebar 2026.8.15 (stable channel)\n# Update available: 2026.8.16 (stable)\n# Install/update: https://github.com/micschr0/claudebar#installation\n```\n\nAdd the `update-notice` segment to see the result inline, as an \"↑ 2026.8.20\"\nbadge on the statusline. It is off by default and stays that way — `claudebar\nsync`, which adds segments introduced by newer versions, deliberately skips this\none and only tells you it exists. Add it to `segments` yourself to enable it.\n\nEnabling it opts into a background check, started at most once every 24 hours by\na detached child process that writes a small cache next to your config file. The\nstatusline itself only reads that cache and never waits for the check. With the\nsegment disabled the render path does no network or cache I/O at all; an\nexplicit `claudebar update` still writes the cache, since that is you asking for\na check.\n\nExit codes: `0` = up to date, `1` = check failed (e.g. no network), `2` = update\navailable. In `set -e` shells or `&&`-chains, where exit `2` reads as an error,\nadd `--check`: it still prints the result but exits `0` on success.\n\n## Uninstall\n\n```bash\nbrew uninstall claudebar\n# or: rm ~/.claude/claudebar   # script install\n# or: pnpm remove -g @micschr0/claudebar   # npm / pnpm install\n```\n\nThen remove the `statusLine` entry from `~/.claude/settings.json`, and `~/.config/claudebar/` if you want the config gone too.\n\n---\n\n**More:** [documentation & live demo](https://micschr0.github.io/claudebar/) · [build from source](https://micschr0.github.io/claudebar/#build) · [contributing](CONTRIBUTING.md) · [contributing a theme](CONTRIBUTING-themes.md) · [internals wiki](openwiki/index.md) · [changelog](CHANGELOG.md) · [verifying releases](SECURITY.md#verifying-a-release) · [report an issue](https://github.com/micschr0/claudebar/issues)\n\n## License\n\n[MIT](LICENSE)",
  "bytes": 8821,
  "sha": "5e04b3c3acdc4770c5c3271d7ac1e31030f71cddd3d3d4b10636fb1389f48f89",
  "repo_slug": "micschr0/claudebar",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_micschr0_claudebar_openwiki_index_md_060474de/readme"
}