Show what Claude Code is doing as a live Discord Rich Presence card.
Hooks into Claude Code's lifecycle events and updates your Discord status in real time.
Single session (professional preset) · Multiple sessions (dev-humor preset)
- Live activity updates — Your Discord card reflects what Claude is doing right now (editing, searching, running commands, thinking)
- Self-healing daemon — If the daemon dies (system restart, sleep/wake), it auto-restarts on the next Claude Code session
- Multi-session support — Running multiple Claude Code instances? The card escalates with quirky messages and aggregated stats
- Activity mode detection — Dominant activity type (coding, terminal, searching, thinking) changes the card icon
- Rotating tooltips — Hidden easter eggs on hover, rotating every 5 minutes
- Auto-reconnect — Daemon handles Discord RPC disconnects gracefully
- Node.js >= 18
- jq (
brew install jq/apt install jq) - Discord desktop app running
- Claude Code CLI installed
npm install -g claude-code-discord-status
claude-presence setupOr try it without installing globally:
npx claude-code-discord-status setupTip: The global install (
npm install -g) is recommended — it puts the CLI on your PATH and keeps files in a stable location. Thenpxapproach works for a quick try but relies on npm's cache directory.
Setup will:
- Create a config at
~/.claude-presence/config.json - Copy the hook script to
~/.claude-presence/for persistence - Add lifecycle hooks to
~/.claude/settings.json - Start the daemon in the background
The daemon auto-restarts when needed — if it gets killed (system restart, sleep/wake), the next Claude Code session brings it back automatically.
npm install -g claude-code-discord-status@latest
claude-presence doctor --fixMigration is automatic — your config, hooks, and settings are moved to the new ~/.claude-presence/ directory on first run.
Two components work together:
- Hooks — Bash scripts fired by Claude Code lifecycle events (session start/end, tool use, prompt submit). They POST updates to the daemon's HTTP API. If the daemon isn't running, the hook auto-starts it.
- Daemon — Background process that holds the Discord RPC connection, tracks all sessions, resolves what to show, and pushes it to Discord.
See docs/architecture.md for the full deep dive.
claude-presence setup # Interactive setup wizard
claude-presence status # Check daemon status and active sessions
claude-presence start -d # Start daemon in background
claude-presence stop # Stop the daemon
claude-presence preset [name] # Change message style
claude-presence doctor # Diagnose and fix issues
claude-presence doctor --fix # Auto-fix all issues
claude-presence update # Update to latest version
claude-presence uninstall # Remove everythingAll commands also work with
npx claude-code-discord-status <command>.
Config file: ~/.claude-presence/config.json
| Key | Env Override | Default | Description |
|---|---|---|---|
discordClientId |
CLAUDE_PRESENCE_CLIENT_ID |
1472915568930848829 |
Discord Application Client ID |
daemonPort |
CLAUDE_PRESENCE_PORT |
19452 |
Local HTTP server port |
preset |
CLAUDE_PRESENCE_PRESET |
minimal |
Message style preset |
The default client ID works out of the box — it's a public app identifier, not a secret.
See docs/setup.md for all config options, timeouts, and how to use a custom Discord application.
Choose how your Discord status sounds. Set during setup, or change anytime:
claude-presence preset # Interactive selection
claude-presence preset dev-humor # Set directly| Preset | Style | Example |
|---|---|---|
minimal |
Terse, just the facts (default) | "Coding" |
professional |
Clean, understated | "Actively developing" |
dev-humor |
Classic programmer jokes | "// TODO: sleep" |
gen-z |
Quirky, meme-flavored | "No thoughts just code" |
chaotic |
Pushing to main, living dangerously | "Deploying on a Friday" |
Override via environment variable:
export CLAUDE_PRESENCE_PRESET=professionalWhen you're running multiple Claude Code sessions, the card gets quirky:
- 2 sessions — "Dual-wielding codebases", "Pair programming with myself"
- 3 sessions — "Triple threat detected", "Three-ring circus"
- 4 sessions — "4 parallel universes deep", "One for each brain cell"
- 5+ sessions — "Send help (5 projects)", "Gone feral (6 projects)"
Plus aggregate stats like 23 edits · 8 cmds · 2h 15m deep and rotating hover tooltips like "Technically I'm one Claude in a trenchcoat".
See docs/multi-session.md for the full message pool and how the resolver works.
git clone https://github.com/BrunoJurkovic/claude-presence.git
cd claude-presence
npm install
npm run build
npm testSee CONTRIBUTING.md for guidelines.
MIT