open_stage
Open the live Agent Theatre stage for a repository folder: the repo becomes a stage and the running Claude Code session animates on it. Returns the URL to open. Reuses a stage that is already running for that folder.
cwdset
io.github.shreyassaw5394Published by GitHub account shreyassaw5394v1.9.0Updated Nov 4, 2026
Watch your coding agent work as a film: opens and replays the Agent Theatre stage for a repo.
Turns a Claude Code session into an animated stage for a repo, letting an assistant open live or replayed views and report which files changed.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Watch your coding agent work — as a film, not a log.
Agent Theatre turns a Claude Code session into an animated scene. Your repo becomes a stage: folders are districts, files are buildings, test files are beacons. The agent is a character — one of a cast of twelve — who walks to the files it reads, builds on the files it edits, runs tests at the beacons, and chases bug gremlins when they fail. Subagents arrive at the dock as other members of the cast. Live, or replayed from any past session.
Twenty-one stages. Agent Theatre reads what your repo is — a web app, a backend, a CLI, data work, a game, infrastructure — and suggests the stages that suit it: Island, Orbit, Metropolis, Harbour, Observatory, Greenhouse, Workshop, Arcade, Kingdom, Outpost, Snowfield, Canopy, Lagoon, Volcano, Cloudtop, Reef, Bazaar, Monastery, Moonbase, Lanterns — and, in the weeks around Halloween, Halloween: jack-o'-lanterns, bats, a ghost-white gremlin and the odd jump scare (switch them off with Scares in the toolbar). Or hit Surprise me.
And one honest detail: if the agent says the job is done but no test has passed since the last edit, a gremlin hides behind it.
The Changes view turns the same session into a map of every file the agent touched: folders as blocks, files sized by lines changed and coloured by what happened (new, edited, deleted, read), plus anything changed during the session that the agent did not do (you, a formatter, another tool). Drag the time slider to see the map at any moment, filter to one helper, click a file for its diff, or copy the whole thing as Markdown for a pull request.
[The Changes view: files the agent touched, by folder]
this turn: 3 files changed (+50 −2) · 1 new · 1 deleted with a link to the map. Turn it off with AGENT_THEATRE_SUMMARY=0.npx agent-theatre changes (--md for Markdown, --json, --reads).npx agent-theatre changes --pr posts (or updates) one comment with the map, using your own gh login, after asking you.Built from the agent's own events and checked against git, so shell edits (sed -i, heredocs, rm) are confirmed on disk
before they appear, and changes committed mid-session still count. Paths and line counts only; a diff is read from your
disk only when you open it.
Same session, different stages, different leads. The picker reads your repo and suggests three.
Six bundled episodes, each a different kind of work in a different repo — all synthetic, hand-written, never a captured session:
Watch them at agenttheatre.dev or locally with ?demo=research, ?demo=feature, ?demo=refactor, ?demo=deploy, ?demo=subagents.
v1.6.0 — the Changes map; on npm as agent-theatre, VS Code extension on every
release, six playable episodes at
agenttheatre.dev. Live via hooks and replay of real sessions both verified
end-to-end on real repos. Design notes in docs/design.md.
Pick whichever fits how you work. All of them run the same local stage on your machine. It talks only to 127.0.0.1, except when you post a change map to GitHub yourself (changes --pr).
First run (CLI):
Flags: --port <n>, --no-open, --set <stage-id>; replay --latest skips the picker. Global install if you prefer: npm i -g agent-theatre.
In the stage: hover anything for what it is and what happened to it this session. Live stages show Live at the edge and a Go live button whenever you have scrubbed back. Whole repo pulls back to every building (wheel to zoom). Full screen (or F) keeps just the stage and the transport bar. Export clip records what you see and hear to mp4/webm with a share sheet (download, system share, X, LinkedIn). When the agent needs you, the stage says so and points you back to Claude Code (in VS Code it focuses the Claude Code input); you answer there, never on the stage. When the agent goes quiet the stage says so: after ~20 s "thinking…", after 90 s the house lights dim, the lead sits down, ambience thins and a banner counts the silence; the moment an event arrives it all comes back. When the session ends, the banner says so. A stage watches the folder it was started in; several stages at once (browser, VS Code, another repo) all receive events.
agent-theatre serve is an MCP server (stdio). Any MCP client can:
Listed on the MCP Registry as io.github.shreyassaw5394/agent-theatre.
AgentEvent schema: read_file, edit_file (+n −m), run_command (intent), test_result, subagent_start/stop, waiting_for_user, turn_end, …walk_to, build, run_tests, spawn_gremlin,
chase, celebrate, unverified_claim — with a mood: curious, focused, lost, happy.prefers-reduced-motion respected. Twenty-one stages, each with its own silhouette — gabled
harbour houses, pagoda tiers, onion domes, moonbase capsules, bazaar tents — on the same
geometry; a cast of twelve characters from one procedural routine.Everything runs on your machine; nothing is sent anywhere unless you post a change map to GitHub
yourself. The event stream never contains code, prompts, command text or search queries — only
repo-relative paths, counts, a command's first word and a classified intent. This is a tested
invariant (packages/core/tests/privacy.test.ts plants secrets in a fixture session and asserts
none reach the stream). The hook strips each Claude Code event down to those paths, counts and
flags before it sends anything, and sends only to a stage that answers with the id it registered
(packages/cli/tests/script.test.ts plants secrets in every hook field and asserts none are sent).
The server binds to 127.0.0.1 only. Hooks always exit 0, never block your agent, and give up within about half a second.
packages/core (schema, adapters, island, director — no DOM, no fs) ·
packages/cli · packages/web · packages/vscode · fixtures/ (synthetic sessions).
Questions, stages worth showing off, ideas for v2: Ship at Midnight Discord, one server for every tool, with a channel for Agent Theatre.
agenttheatre.dev — the story, a playable Episode 1, all twenty-one stages, the cast,
the privacy sheet and install notes. agenttheatre.com redirects there. The site is site/ in this
repo, deployed on Vercel from main; the playable demo is the real web bundle at /theatre/.
MIT © 2026 Shreyas Sawant and Agent Theatre contributors.
Independent project, not affiliated with or endorsed by Anthropic, Microsoft, Anysphere (Cursor), Codeium (Windsurf), OpenAI or Google. Claude and Claude Code are trademarks of Anthropic; other names belong to their owners.
Agent Theatre is a free, non-commercial passion project. MIT licensed; bundled third-party code is listed in THIRD_PARTY_LICENSES.txt. It runs locally and sends no telemetry (privacy).
Source: README.md at commit 3860896
Open the live Agent Theatre stage for a repository folder: the repo becomes a stage and the running Claude Code session animates on it. Returns the URL to open. Reuses a stage that is already running for that folder.
cwdsetList past Claude Code sessions for a repository folder (newest first) that Agent Theatre can replay. Returns ids, titles and times only.
cwdlimitOpen a replay of a past Claude Code session on the stage. Omit session_id for the newest. Returns the URL.
cwdsetsession_idWhat the live stage for a folder has seen so far: event and beat counts, the last few event kinds, and whether hooks are installed. Never returns file contents.
cwdThe change map: which files the agent read, edited, created or deleted (in the live stage for a folder, else the newest session), with line counts, files changed during the session but not by the agent, and a Markdown version for a pull request. Paths and counts only; never file contents.
cwdmarkdownsession_idInstall the Agent Theatre hooks into ~/.claude/settings.json (non-destructive, keeps a backup). Not needed when the Claude Code plugin is installed.
Takes no parameters.
90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
cd your-reponpx agent-theatre hooks install # once — skip if you installed the Claude Code plugin, it brings the hooksnpx agent-theatre # opens the stage for this repo; run Claude Code in another terminalnpx agent-theatre replay # pick any past Claude Code session of this repo and watch itnpx agent-theatre changes # what the agent touched: files, lines, new, deleted (--md, --pr)npx agent-theatre hooks uninstall # reverses the install byte-for-byteClaude Code ──hooks──▶ agent-theatre (local) ──WebSocket──▶ browser / VS Code webview │ │ └─ JSONL transcript ─────┘ (replay)