Windows-only helper that shows Claude Code activity in Discord Rich Presence. It runs a small background daemon that applies updates and keeps Discord in sync while you work.
# from repo root
.\install.ps1
The installer builds the helper (if Go is available), writes config (if you enter a Client ID), and installs/updates the plugin. If a manual install exists, it removes the old clawd-presence folder first.
Claude Code hooks invoke dist/windows/claude-hooks/presence.ps1. The script writes the desired presence state and a background daemon applies it to Discord. On session end, the daemon clears or idles your presence based on config.
install.ps1.Global config path:
%APPDATA%\ClawdPresence\config.jsonExample:
{
"discord": {
"clientId": "YOUR_CLIENT_ID",
"largeImageKey": "clawd",
"largeImageText": "Claude Code",
"smallImageKey": "terminal",
"smallImageText": "Windows"
},
"privacy": {
"showRepo": true,
"showBranch": true,
"showToolName": true
},
"behavior": {
"onSessionEnd": "clear",
"updateDebounceMs": 500
}
}
Optional (no file): set CLAWD_PRESENCE_CLIENT_ID or DISCORD_CLIENT_ID in your environment. If no Client ID is configured, the helper uses a shared default application ID.
Project override:
<repo>\.claude\presence.json (same schema as global config).\install.ps1
If you use a manual install, also pass -PluginDir to your plugins folder. The script removes any existing clawd-presence directory before reinstalling.
Use this when the Claude CLI is unavailable or marketplace install fails.
go build -o dist\windows\clawd-presence.exe .\cmd\clawd-presence
# Example: plugins directory is %USERPROFILE%\.claude\plugins
.\install.ps1 -PluginDir "$env:USERPROFILE\.claude\plugins" -Mode Junction
Add these commands to your .claude/settings.json hooks if you want to wire hooks by hand:
{
"hooks": {
"SessionStart": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File C:/path/to/dist/windows/claude-hooks/presence.ps1",
"timeout": 5
}]
}],
"UserPromptSubmit": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File C:/path/to/dist/windows/claude-hooks/presence.ps1",
"timeout": 5
}]
}],
"PreToolUse": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File C:/path/to/dist/windows/claude-hooks/presence.ps1",
"timeout": 5
}]
}],
"PostToolUseFailure": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File C:/path/to/dist/windows/claude-hooks/presence.ps1",
"timeout": 5
}]
}],
"Stop": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File C:/path/to/dist/windows/claude-hooks/presence.ps1",
"timeout": 5
}]
}],
"SessionEnd": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File C:/path/to/dist/windows/claude-hooks/presence.ps1",
"timeout": 5
}]
}]
}
}
presence.ps1 file.dist/windows/clawd-presence.exe clear or restart Claude Code.install.ps1 to reinstall and refresh the plugin files..\dist\windows\clawd-presence.exe diagnose
%APPDATA%\ClawdPresence\config.json<repo>\.claude\presence.json%LOCALAPPDATA%\ClawdPresence\state.json%LOCALAPPDATA%\ClawdPresence\logs\YYYY-MM-DD.logMatches 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.
npx claudepluginhub mihir-s-05/claude-code-discord-windows-rich-presence --plugin clawd-presenceDiscord Rich Presence for Claude Code. On its first session this plugin runs the project's own installer (npx claude-rpc@latest setup) — wiring the hooks, starting the daemon, and registering login autostart — then stays out of the way.
Native Windows toast notifications for Claude Code with window activation
Discord channel for Claude Code — messaging bridge with built-in access control. Manage pairing, allowlists, and policy via /discord:access.
Menu bar status indicator for Claude Code: animated spark, elapsed timer, and open/close lifecycle.
v3.32.0: the `curl … install.sh | bash` one-liner now sets up BOTH the terminal statusLine and the desktop HUD in one shot on macOS — the macOS binary bundles the HUD (PyObjC), so no `pip install '[hud]'`, no venv, no extra steps. v3.31.0 makes the desktop HUD's AgentParty channel list actionable: single-click a channel to open a menu — open the matching Claude CLI session (claude://resume deep link), open it in the AgentParty client (agentparty:// deep link the client handles), or pin it to the collapsed pill; the HUD UI is now fully English. Lightweight Claude Code status-line monitor with switchable styles, themes, slash commands, and a local AgentParty bridge for Codex workflows. v3.29.12 keeps the entire AgentParty status block session-correct when several sessions share one project: channel, identity, unread count, message preview, and listener state now come from the matching config-owned cache slot. Claude Code remains the full native statusLine data source for quota/session/context/cache/activity fields; Codex support is the local AgentParty presence bridge and never calls AgentParty, renders or transmits tokens, makes network requests, or adds OpenAI quota accounting. v3.29.6 adds a depletion ETA to a maxed projection (`→100%·1h12m`) and stops calling a quiet-channel listener "down" while its process is alive. v3.29.5 makes launchd/systemd-spawned daemons recognizable to `cs daemon stop` and the upgrade drift-kill (they were unkillable), and stops an exiting daemon from deleting the current owner's pidfile. v3.29.4 makes `cs upgrade` the single documented upgrade path and fixes the daemon's silent auto-upgrade failure under launchd/systemd (uv/pipx not on the service PATH). v3.29.3 fixes the same respawn loop on Linux/systemd (Restart=on-failure) and reads the new AgentParty listener.mentions_only contract field instead of probing argv. v3.29.2 stops launchd from respawning a redundant daemon every 10s and cuts warm render time from ~6ms to ~2.4ms. v3.29.1 fixes a daemon crash on any render slower than the tick interval (a negative time.sleep()) — the reason the daemon kept dying and never picked up upgrades. v3.29.0 redesigns the AgentParty block (monochrome glyphs, listening state stated outright, last message on its own line with unread/@mention markers) and fixes the listener heartbeat field that made every live listener render as `down`, plus three daemon defects that kept an upgrade from reaching the running daemon. Requires the cs CLI from PyPI (pip install claude-statusbar or uv tool install claude-statusbar).
Warns you before a rate limit or auto-compact, not after. A pure-bash Claude Code status bar (no jq, Node optional) for macOS, Linux, and Windows: usage pacing + burn-rate forecast, context warnings, live activity, cost, git, and 8 themes.