A theme-agnostic Claude Code plugin that dynamically tints your Ghostty terminal based on what Claude is doing. Works with any Ghostty theme — no bundled colors, no theme switching.
Session start → query your current colors via OSC → blend tints at runtime → per-tab isolation
On session start, the plugin queries your terminal's current background, foreground, and cursor colors. These become the "base" palette. When state changes occur, tint colors are blended into your base using HSL color math — preserving your theme's lightness while shifting hue and saturation.
Each Claude Code session captures its own TTY, so multiple tabs maintain independent color states.
| State | Trigger | Tint | Behavior |
|---|---|---|---|
| connected | Session starts | Green | Animated fade, returns to base after 1.5s |
| working | Tool use | Blue | Animated ping-pong |
| needs_input | Permission request | Amber | Instant snap, holds until resolved |
| completed | Claude stops | Gold | Animated fade, returns to base after 2s |
| error | Tool error | Red | Instant snap |
| base | Idle | — | Your original theme colors |
git clone https://github.com/aparente/ghostty-aura.git
Add to ~/.claude/settings.json:
{
"plugins": ["path/to/ghostty-aura"]
}
The hooks/hooks.json registers all hooks automatically via ${CLAUDE_PLUGIN_ROOT}.
On first session start, a default config is created at ~/.claude/aura-config.json. To customize interactively:
cd ghostty-aura
node lib/setup.js
Edit ~/.claude/aura-config.json. No absolute colors — only tints and intensity. Actual colors are computed at runtime from your queried base.
{
"states": {
"connected": { "tint": "#4ade80", "intensity": 0.15, "transition": "animate", "auto_to": "base", "auto_ms": 1500 },
"working": { "tint": "#38bdf8", "intensity": 0.2, "transition": "animate" },
"needs_input": { "tint": "#fbbf24", "intensity": 0.25, "transition": "instant" },
"completed": { "tint": "#facc15", "intensity": 0.15, "transition": "animate", "auto_to": "base", "auto_ms": 2000 },
"error": { "tint": "#f87171", "intensity": 0.3, "transition": "instant" }
},
"animation": { "steps": 8, "step_ms": 120 }
}
tint — color to blend towardintensity — 0..1, how far to shift from basetransition — "animate" (smooth fade) or "instant" (snap)auto_to / auto_ms — auto-return to another state after delay# Create a fake base file for testing
echo '{"bg":"#1a1b26","fg":"#c0caf5","cursor":"#c0caf5"}' > /tmp/aura-base-test.json
# Test blending
node lib/color.js blend "#1a1b26" "#38bdf8" 0.2
jq for JSON parsingWhen SessionStart fires, the hook captures the session's TTY path (e.g., /dev/ttys003) and saves it to /tmp/aura-tty-{session_id}. It also queries the terminal's current colors and saves them to /tmp/aura-base-{session_id}.json. Subsequent hooks look up these files to target the correct TTY with the correct base palette.
Matches all tools
Hooks run on every tool call, not just specific ones
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Ambient light communication for Claude Code. Supports static colors, gentle animations, and color temperature modes. Works with Philips Hue (via OpenHue) or any smart light system.
npx claudepluginhub aparente/ghostty-auraUpdates Ghostty window title with Claude Code status indicators showing current activity (working, editing files, running commands, etc.)
Claude Powerline statusline setup wizard
Auto-generated session titles + per-session colors in the statusline, so parallel Claude Code sessions are easy to tell apart at a glance.
A Claude Code statusline that shows reasoning effort (⚡) and thinking (💡). 5 presets (xsmall-xlarge), Catppuccin theme, no Node/Nerd Font, native PowerShell on Windows.
Ultra-compressed communication mode. Cuts 65% of output tokens (measured) while keeping full technical accuracy by speaking like a caveman.
Memory compression system for Claude Code - persist context across sessions