Barista
A modular statusline for Claude Code CLI - real-time context usage, rate limits, costs, git status, and 20+ customizable modules
Install / Use
/learn @pstuart/BaristaQuality Score
Category
Development & EngineeringSupported Platforms
README
Barista ☕
Serving up fresh stats for your Claude Code sessions.
A feature-rich, modular statusline for Claude Code CLI that brews real-time development information including context usage, rate limits, costs, and more.
What's New in v1.6.1 🆕
- Hex-Encoded Keychain Fix - Handles macOS 15+ and recent Claude Code versions that store OAuth credentials as hex-encoded data in the Keychain (community contribution by @gcko)
- Progressive fallback: tries plain JSON, then hex-decoding via
xxd, then regex extraction
v1.6.0
- Rate Limit 429 Backoff - Automatically backs off API calls after receiving 429 responses
- Version Display - Shows current Barista version in installer and statusline
- Update Checker - Enhanced update checking from GitHub releases
v1.5.0
- Smart Terminal Layout - New
LAYOUT_MODEsetting with intelligent line wrappingsmart(default) - Wraps at separator boundaries when content exceeds terminal widthnewline- Forces Claude's right-side info to next linewrap- Pads output to line boundarytruncate- Cuts output with "..." to fit on same linenone- No adjustments, natural terminal behavior
- Prevents awkward mid-module line breaks on wide statuslines
- Configurable
RIGHT_SIDE_RESERVEandTERMINAL_WIDTHsettings
v1.4.0
- Custom Config Directory - Respects
CLAUDE_CONFIG_DIRenvironment variable for users who relocate their Claude configuration from~/.claude/ - All paths (cache, logs, usage history, user config) resolve dynamically
- No changes needed if using the default location
v1.3.0
- Enhanced Color Themes - 5 distinct visual themes that actually look different:
default- Standard emoji (🟢🟡🟠🔴)minimal- Subtle geometric shapes (◦ ◐ → ⎇)vibrant- Bold heart colors (💚💛🧡❤️)monochrome- Pure ASCII ([OK] [~~] [!!] [XX])nerd- Nerd Font icons (requires Nerd Font)
- Improved Spacing - Status indicators now have proper spacing in normal/verbose modes
- Smart Compact Mode - Separator padding and status spacing automatically removed in compact mode
- Fixed Installer Preview - Preview now shows actual sample data instead of just icons
v1.2.0
- Memory Optimizations - Fixed unbounded history file growth, added file size caps
- Interactive Update Check - Installer now prompts to check for updates on startup with version display
- 4-Level Rate Limit Colors - Visual indicators at 50%/75%/95% thresholds (🟢→🟡→🟠→🔴)
- Monorepo Performance - Git module now limits output to prevent memory spikes in large repos
v1.1.0
- Auto-Update Checking - Barista checks GitHub for updates and can self-update
- Interactive Installer - Arrow key navigation with space to toggle selections
- Customizable Separators - Choose from pipe, arrow, bullet, and more
- Color Themes - Default, minimal, vibrant, or monochrome
- Display Modes - Normal, compact, or verbose output
- Live Preview - See your statusline before installing
- Bash 3.2 Compatible - Works with macOS default bash (no brew required)
What's On The Menu ☕
Core Modules (The House Blend)
| Module | What It Serves | |--------|----------------| | directory | Current working directory name | | context | Visual progress bar showing context usage with auto-compact warnings | | git | Branch name, dirty status, staged/modified/untracked indicators | | project | Auto-detects Node.js, Nuxt, Next.js, Vite, Rust, Go, Python, Swift, and more | | model | Current Claude model and output style | | cost | Session cost with burn rate ($/hour) and tokens per minute (TPM) | | rate-limits | Real-time 5-hour and 7-day rate limit tracking with projections | | time | Current date and time | | battery | Battery percentage (macOS) |
System Modules (The Espresso Shots)
| Module | What It Serves | |--------|----------------| | cpu | CPU usage percentage | | memory | RAM usage | | disk | Disk space usage | | network | IP address and network info | | uptime | System uptime | | load | System load average | | temperature | CPU temperature (requires osx-cpu-temp) | | brightness | Screen brightness | | processes | Process count |
Dev Tools (The Specialty Drinks)
| Module | What It Serves | |--------|----------------| | docker | Docker container status | | node | Node.js version | | weather | Current weather via wttr.in | | timezone | Multiple timezone clocks |
Fresh Brew Sample
📁 myproject | 📊 ██████░░ 75%🔴 (10k→⚡) | 🌿 main [●+] 📝 3 | ⚡ Nuxt 🚀 | 🤖 Claude Opus 4.5 | 💰 $2.50 @$5.00/h | 5h:45%🟢 7d:78%🟠 | 📅 01/12 🕐 04:30 PM | 🔋 85%
With different separators:
📁 myproject › 📊 ████░░░░ 50%🟢 › 🌿 main › 🤖 Opus # Arrow style
📁 myproject • 📊 ████░░░░ 50%🟢 • 🌿 main • 🤖 Opus # Bullet style
DIR: myproject | CTX: ####---- 50%[OK] | GIT: main # ASCII mode
Temperature Gauge
Context Usage (3-level): | Indicator | Usage | Status | |-----------|-------|--------| | 🟢 | Below 60% | Smooth sipping | | 🟡 | 60-75% | Getting warm | | 🔴 | Above 75% | Boiling over |
Rate Limits (4-level): | Indicator | Usage | Status | |-----------|-------|--------| | 🟢 | Below 50% | Plenty of headroom | | 🟡 | 50-75% | Moderate usage | | 🟠 | 75-95% | High usage | | 🔴 | Above 95% | Critical, near limit |
Requirements
- Claude Code CLI - Installation Guide
- Bash 3.2+ - Works with macOS default bash
- jq - JSON processor (required)
- bc - Basic calculator (usually pre-installed)
- macOS - For battery and OAuth keychain access (Linux support partial)
# Install dependencies on macOS
brew install jq
Installation
Quick Brew
# Clone the repo
git clone https://github.com/pstuart/Barista.git
cd Barista
# Run the installer
./install.sh
The interactive installer features:
- Arrow key navigation - Use ↑/↓ to move, Space to toggle, Enter to confirm
- Module categories - Core, System, Dev Tools, and Extra modules
- Display customization - Icons, separators, colors, and themes
- Live preview - See your statusline before installing
- Automatic backup - Your previous statusline is saved
Installer Options
# Installation
./install.sh # Interactive installation with keyboard navigation
./install.sh --defaults # Install with core modules, no prompts
./install.sh --minimal # Quick install with minimal modules
./install.sh --force # Same as --defaults, no confirmation
# Display options
./install.sh --no-emoji # Install without emojis (ASCII mode)
./install.sh --no-color # Install without colors
# Updates
./install.sh --check-update # Check if a newer version is available
./install.sh --update # Download and install the latest version
./install.sh --version # Show current version
# Other
./install.sh --uninstall # Uninstall and restore previous statusline
./install.sh --help # Show all options
Staying Up to Date
Barista automatically checks for updates when you run the installer. You can also manually check:
./install.sh --check-update # Check for updates
./install.sh --update # Update to latest version
Manual Brew
-
Copy barista to your Claude directory:
CLAUDE_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}" cp -r barista "$CLAUDE_DIR/barista" chmod +x "$CLAUDE_DIR/barista/barista.sh" -
Configure Claude Code settings:
Edit your
settings.json(in$CLAUDE_CONFIG_DIRor~/.claude/):{ "statusLine": { "type": "command", "command": "~/.claude/barista/barista.sh" } } -
Restart Claude Code to taste your fresh statusline.
Customization
Interactive Display Preferences
The installer lets you customize:
| Setting | Options | |---------|---------| | Icon Style | Emoji icons or ASCII text | | Status Indicators | 🟢🟡🔴 Emoji, ●●● Dots, or [OK][WARN] ASCII | | Progress Bars | ████░░ Blocks, ▓▓▓░░ Shaded, ●●●○○ Circles, #### Hash | | Separators | | Pipe, ║ Double, › Arrow, • Bullet, : Colon | | Color Themes | Default, Minimal, Vibrant, Monochrome | | Display Mode | Normal, Compact, Verbose |
Configuration Files
Edit barista.conf or create a user override config in your Claude config directory:
# Default location
~/.claude/barista.conf
# Or if using a custom config directory
$CLAUDE_CONFIG_DIR/barista.conf
Custom Config Directory
If you've moved your Claude configuration from the default ~/.claude/, set the CLAUDE_CONFIG_DIR environment variable:
export CLAUDE_CONFIG_DIR="/path/to/my/claude-config"
Barista will automatically use that directory for:
- User config overrides (
barista.conf) - Cache files (
barista-cache/) - Debug logs (
barista.log) - Rate limit history (
.usage_history)
No other configuration changes are needed.
Per-Directory Overrides
Create .barista.conf in any project directory to customize the statusline for that project:
# ~/myproject/.barista.conf
# Minimal statusline for this large monorepo
DISPLAY_MODE="compact"
MODULE_WEATHER="false"
MODULE_ORDER="directory,context,git,model"
Configuration i
