shipped v0.3.8 — self-healing hook paths presence.byStatus is the new default built solo by archer in weekends MIT licensed — fork it, ship it node SEA single-file binary — no install required discord rich presence for claude code shipped v0.3.8 — self-healing hook paths presence.byStatus is the new default built solo by archer in weekends MIT licensed — fork it, ship it node SEA single-file binary — no install required discord rich presence for claude code
a weekend project, shipped publicly

your claude code
claude sessions,
live 📡 on discord.

A small Node daemon that takes the lifecycle events claude code already fires — and pipes them into the discord rich-presence card on your profile. Your friends see what you're building, your future self gets lifetime stats. Zero polling between sessions.

$ claude-rpc setup && claude-rpc start
v0.3.8 · MIT · node 18+ · macos · windows · linux
Discord Rich Presence card showing Claude Code working in claude-rpc on Opus 4.7
discord profile · last tuesday
that's the whole pitch
grab the binary

one file. drop it anywhere.

Built with Node SEA — the CLI is a single executable with Node baked in. No runtime install, no npm install, no PATH gymnastics. The desktop app bundles the same binary plus a config GUI.

windows
NSIS installer with auto-update, or a portable .exe you can drop on a USB stick.
x64 · ~45 MB
get .exe installer or the portable build
macos
Apple Silicon .dmg. Drag, drop, done. Auto-updates from GitHub releases.
arm64 · ~95 MB
get .dmg intel? build from source
from source
Any OS with Node 18+. git clone, npm install, npm link. Linux / *BSD / WSL.
node 18+ · any arch
install guide github.com/rar-file/claude-rpc
the card

a different look for every state claude is in.

The card text follows whatever claude is doing right now — not a generic rotation that cycles through the same six stats forever. Lifetime numbers only show up when you're actually idle.

v0.3.6 · presence.byStatus
working thinking notification idle
while a tool is running the card shows the project, the tool name, the file claude just touched, and the live token count for the session.
Playing a game
Claude Code
Working in claude-rpc
Edit · src/scanner.js · 2.3k tokens
00:14:32 elapsed
View on GitHub → Claude Code
beyond the card

it's also a personal dashboard for your claude history.

Every aggregate below is computed locally by walking ~/.claude/projects. Incremental, cached, no telemetry, no network beyond the discord IPC itself.

01

all-time aggregates

Hours, prompts, tokens, sessions, streaks, hotspot files, lines added/removed, languages, bash commands, web domains, subagent runs — pulled from your transcripts and cached at ~/.claude-rpc/aggregate.json.

clawd typing
02

cost estimate

Per-model spend (Opus / Sonnet / Haiku) at public list prices. Edit one file to override.

src/pricing.js
03

cli & tui

Heatmap, hour histogram, top tools / files / projects / languages.

$ claude-rpc status
04

local web dashboard

SSE-pushed updates, range selector (7d/30d/90d/1y/all), day-detail modal, project drilldown.

$ claude-rpc serve · :47474
05

readme badges

Shields-style SVG generator and a live endpoint when the daemon's up.

06

six-tab settings gui

Electron config editor: presence (drag-reorder, variable autocomplete, presets), discord, assets, timing, daemon controls, stats.

07

auto-generated insights

claude-rpc insights prints 3–5 contextual lines about your week — trend, peak weekday, hotspot, cost pace, streak progress. Useful for stand-ups, useful for self-awareness, useful for nothing — up to you.

clawd sleeping
two-minute setup

three commands. that's it.

The first setup seeds a config, registers the lifecycle hooks with claude code, and copies the binary into a stable per-user location so future manual updates can never break your hook entries.

~ — claude-rpc setup
$ claude-rpc setup config seeded → ~/.config/claude-rpc/config.json exe installed → ~/.config/claude-rpc/bin/claude-rpc hooks → ~/.claude/settings.json ✓ done.   $ claude-rpc start ✓ daemon launched (pid 24871) logs: /tmp/claude-rpc/daemon.log   $ claude-rpc status ╰─ working in claude-rpc · Opus 4.7 8 prompts · 18 tools · 2.3k tokens
no polling

Hook-driven, not polling.

Claude Code fires lifecycle events on its own clock (SessionStart, PreToolUse, Notification, SessionEnd…). Each event updates a small JSON file on disk; the daemon watches that file and pushes a frame to discord within a second.

SessionEnd is authoritative.

When you close claude code, the presence clears immediately. No 5-minute "is it still running?" timeout. Shipped with v0.3.5.

architecture

three small pieces, glued by json files.

No database, no message bus, no background polling when claude code isn't running. The file-based IPC is intentional — it makes the whole system inspectable with cat and jq.

01

hook

Claude fires lifecycle events. Each one runs a tiny script that updates a shared state file.

~/.claude/settings.json
02

daemon

Long-running. Connects to discord's local IPC. Watches the state file, builds the card, pushes a frame.

src/daemon.js
03

scanner

Walks transcripts incrementally for the lifetime aggregates. Feeds the dashboards and the idle rotation frames.

~/.claude-rpc/aggregate.json
screens

browse the rest from a real desktop UI.

127.0.0.1:47474
Web dashboard
web dashboard
claude-rpc serve — range selector, heatmap, languages stack, leaderboards.
Claude RPC.app
Electron config editor
settings gui
six-tab electron editor — drag-reorder frames, variable autocomplete, daemon controls, live preview.
building in public

the recent history.

Shipping small. Each release tag is a real artifact you can download — no nightlies, no marketing-driven version numbers. Read the source on your way through.

changelog
latest first · all releases →
  • v0.3.8 self-healing hooks + state on packaged-default launch — fixes broken close detection after standalone-exe upgrades.
  • v0.3.7 auto-migrate existing configs into the v0.3.6 byStatus shape on upgrade.
  • v0.3.6 status-driven presence templates (presence.byStatus) + 9 new template vars (fileLang, gitBranch, …).
  • v0.3.5 canonical install path; SessionEnd treated as authoritative close signal.
  • v0.3.0 cross-platform desktop app, .dmg + .exe, auto-update.
  • v0.2.0 enriched data, redesigned web dashboard, full-settings GUI.
  • v0.1.0 initial commit. discord rich presence works end-to-end.

get it on your profile in two minutes.

Download, run claude-rpc setup, paste your discord application id into the config, start the daemon. That's the whole flow.