Summon Claude Code as an embodied avatar that follows you around your computer so you can always keep tabs on your running Claude Code instances. golem-code renders a procedurally generated agent avater in a floating native window that reacts in real-time to your coding agent's activity — tool calls, subagent spawns, permission requests, and more.
- macOS (the native overlay window uses macOS-specific APIs)
- Claude Code installed and configured
golem-code works as a combination of a wrapper CLI around claude code, and a claude code plugin.
curl -fsSL https://raw.githubusercontent.com/chrisjpatty/golem-code/main/install.sh | shThis downloads the latest summon binary for your Mac and installs it to /usr/local/bin. Set SUMMON_INSTALL_DIR to install elsewhere:
SUMMON_INSTALL_DIR=~/.local/bin curl -fsSL https://raw.githubusercontent.com/chrisjpatty/golem-code/main/install.sh | shAfter installing the binary, open Claude Code and install the plugin:
/plugin marketplace add chrisjpatty/golem-code
/plugin install golem-code
This registers the hooks that let Summon see what Claude Code is doing. You only need to do this once.
summonsummon --updateThis downloads the latest release and replaces the current binary in-place.
summon is a drop-in wrapper for Claude Code. Use it exactly as you would use claude:
# Start a new session
summon
# Start with an initial prompt
summon "Fix the failing tests in src/utils"
# Continue the most recent conversation
summon -c
# Resume a specific session
summon -r <session-id>
# Work in a different directory
summon --cwd ~/my-project
# Open the face in a browser tab instead of the native overlay
summon --browser
# Forward flags to Claude Code (everything after -- is passed through)
summon -- --model sonnetsummon [options] [prompt]
Options:
-p, --prompt <text> Initial prompt to send to Claude Code
-c, --continue Continue the most recent conversation
-r, --resume <session-id> Resume a specific session
--cwd <dir> Working directory (default: current directory)
--port <port> Server port (default: 6661)
--browser Open face in browser instead of native overlay
--no-open Don't auto-open the browser/overlay
--update Update summon to the latest version
-v, --version Show version
-h, --help Show help
-- Pass remaining arguments to Claude Code
Summon sits between you and Claude Code:
- Spawns Claude Code in a PTY (pseudo-terminal), so your terminal experience is unchanged
- Runs an HTTP/WebSocket server that receives hook events from a bundled Claude Code plugin
- Launches a native overlay window (Tauri/Rust) that renders the 3D face via a WebGL frontend
- Translates hook events into facial expressions
When you launch a second summon instance, it checks ~/.golem/instances/ for a running primary. If one is found, the new instance connects as a peer over WebSocket and forwards its events — the primary's overlay renders both faces side by side. Each peer gets assigned a unique color from a 12-color palette.
If you don't want the native overlay or are on a non-macOS platform, use --browser to open the face in a browser tab instead:
summon --browserThe 3D face renders identically in the browser — you just lose the floating always-on-top overlay behavior.
- Check that port 6661 is available (or use
--portto pick another) - Try
summon --browserto verify the face renders in a browser
- Make sure the Claude Code plugin is installed: run
/plugin install golem-codeinside Claude Code - Check that Summon's server is running — look for
[summon] Golem server: http://localhost:6661in your terminal output
- Each instance registers in
~/.golem/instances/. Stale entries from crashed sessions are cleaned up automatically, but you can manually clear that directory if needed.
# Install dependencies
bun install
# Build everything (frontend + overlay + CLI)
bun run build
# Skip the Rust overlay build (faster, browser-only mode)
bun run build --skip-overlayThis produces a single compiled binary at dist/summon. The overlay binary is embedded inside it and extracted to ~/.golem/bin/ on first run.
# Run from source (builds frontend on demand, uses local overlay binary)
bun run summon
# Run with Vite dev server for frontend hot-reload
bun run summon -- --devpackages/
cli/ Bun CLI — PTY spawning, HTTP/WS server, instance registry, peer coordination
frontend/ React Three Fiber 3D face rendering — procedural geometry, expressions, post-processing
overlay/ Tauri/Rust native macOS overlay — transparent window, CoreGraphics cursor tracking
plugin/ Claude Code plugin — hook definitions that POST events to the CLI server
types/ Shared TypeScript types — event protocol, commands, color palette

