Agent Theatre

io.github.shreyassaw5394由 GitHub 账号 shreyassaw5394 发布v1.9.0更新于 Nov 4, 2026

Watch your coding agent work as a film: opens and replays the Agent Theatre stage for a repo.

已验证STDIO仅桌面开发者工具数据与分析

概览

AI 生成的概览

把 Claude Code 会话变成仓库的动画舞台,让助手打开实时或回放画面,并报告哪些文件发生了改动。

可以做什么
  • 为仓库文件夹打开或复用实时动画舞台,并返回访问地址
  • 列出该文件夹过去的 Claude Code 会话,并打开其中一次的回放
  • 报告舞台活动:事件与节拍数量、最近的事件类型、钩子是否已安装
  • 汇总改动地图:被读取、编辑、新建或删除的文件及行数,并可输出供拉取请求使用的 Markdown
  • 把 Claude Code 钩子安装到本地设置文件,并保留备份
适用场景
适合想以类似影片的方式直观查看编码助手在仓库中做了什么,或需要按会话快速了解它改动了哪些文件,用于复查工作或撰写拉取请求说明时。
运行要求
通过 npx 作为本地 stdio 进程运行(需 Node 22+)。面向 Claude Code 会话;实时观看需安装 Agent Theatre 钩子或 Claude Code 插件。本地舞台仅绑定 127.0.0.1。未声明任何 API 密钥或环境变量。
安装前请注意
install_hooks 会修改 Claude Code 的设置文件(会保留备份)。把改动地图发布到拉取请求会使用你自己的 gh 登录,并把路径和行数发送到 GitHub,但仅在你确认后执行。舞台只处理仓库相对路径和行数;文件差异仅在你打开时才从磁盘读取。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Agent Theatre,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Agent Theatre

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.

[Lanterns, Juno at login.ts]

What did the agent change?

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]

  • At the end of every turn, Claude Code shows a one-line summary under the reply, e.g. 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.
  • In the terminal: npx agent-theatre changes (--md for Markdown, --json, --reads).
  • On the pull request: npx agent-theatre changes --pr posts (or updates) one comment with the map, using your own gh login, after asking you.
  • In VS Code: an Agent changes list in the Explorer, a dot on every file the agent touched, and the editor's own diff on click.

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:

EpisodeKindWhat happens
The login timeoutbug fixtwo failing tests, one grace window, a green run — and the evidence chip
The research briefresearchfield notes, a data file, two web searches, one written brief; no tests claimed
The export endpointnew featuretwo new buildings rise, a route is wired, the suite is green first time
The renamerefactorsix files touched, one test catches a slip, fifty-eight pass
Ship 1.4.0deployall shell work at the forge: build, plan, a timeout, a retry, a rollout, a tag
The audithelperstwo helpers arrive at the dock and fan out while the lead keeps working

Watch them at agenttheatre.dev or locally with ?demo=research, ?demo=feature, ?demo=refactor, ?demo=deploy, ?demo=subagents.

Status

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.

Install

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).

WhereHowNotes
npm (CLI)npx agent-theatreNode 22+. npx agent-theatre replay for past sessions
Claude Code plugin/plugin install agent-theatre --marketplace shreyassaw5394/agent-theatreone step on Claude Code 2.1.275+; brings the hooks, a /theatre command and a skill
Homebrewbrew install shreyassaw5394/tap/agent-theatretap: shreyassaw5394/homebrew-tap
VS Codesearch Agent Theatre in Extensions, or Marketplacecommands: Open the stage (live), Replay a session…, Switch folder. .vsix also on every release
Cursor / Windsurf / VSCodiumagent-theatre.vsix from the latest release → Extensions → ⋯ → Install from VSIX…same extension; Open VSX listing coming
MCP server (Cursor, Windsurf, Claude Desktop, Codex, Gemini CLI, VS Code Copilot)npx agent-theatre initregisters agent-theatre serve with every agent on your machine; --repo writes .mcp.json / .cursor/mcp.json / .vscode/mcp.json for the team. One-click: [Cursor] [VS Code]
Just watchagenttheatre.devsix synthetic episodes, no install

First run (CLI):

sh
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-byte

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.

MCP tools

agent-theatre serve is an MCP server (stdio). Any MCP client can:

ToolDoes
open_stagestart (or reuse) the live stage for a folder → URL
list_sessionspast Claude Code sessions of a folder: ids, titles, times
replay_sessionopen a replay of one session (newest by default) → URL
stage_statusevent/beat counts and the last few event kinds; never contents
what_changedthe change map: files read, edited, created, deleted, with line counts; Markdown for a PR on request
install_hooksinstall the Claude Code hooks (not needed with the plugin)

Listed on the MCP Registry as io.github.shreyassaw5394/agent-theatre.

How it works

Claude Code ──hooks──▶ agent-theatre (local) ──WebSocket──▶ browser / VS Code webview     │                        │     └─ JSONL transcript ─────┘  (replay)
  1. Events. Hook payloads (live) or transcript rows (replay) are normalised into a small, product-agnostic AgentEvent schema: read_file, edit_file (+n −m), run_command (intent), test_result, subagent_start/stop, waiting_for_user, turn_end, …
  2. Stage. The repo's file tree becomes a deterministic arrangement — one of six layout archetypes (ring, grid, strip, scatter, terrace, spine) chosen from the repo and the stage, so the same project is a ring island in one set and a terraced spine in another, and always the same in the same set. Capped to ~60 buildings by relevance; every file in the folder that the session touches is always placed. Work outside the folder (another repo, your home folder) raises nothing: the character doing it wears an "elsewhere: " badge instead.
  3. Director. Events become scene beats — walk_to, build, run_tests, spawn_gremlin, chase, celebrate, unverified_claim — with a mood: curious, focused, lost, happy.
  4. Renderer. PixiJS, isometric, soft lighting, easing everywhere — no linear tween exists in the codebase, a test makes sure. The camera frames the action; the whole stage appears only to open, celebrate and close, so it never gets cluttered. One key light: long soft cast shadows, gradient faces with ambient occlusion and rim light, aerial haze on far rows, bloom only on lamps and lit windows, cloud shadows drifting over the ground. 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.
  5. Sound. Every beat has a sound, all synthesized at runtime with the Web Audio API — no audio files, no licences to worry about. Every stage has its own voice (waveform, pitch, decay, the surface underfoot) and its own ambience — washes, pads and occasional details like gulls, bells, bubbles, wind or market murmur on a jittered timer, so nothing loops. Effects and background ambience toggle separately. The "needs your permission" chime is the one you'll notice.

Privacy

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).

ReadRenderedLeaves the machine
File pathsyesrepo-relativenever
File contentscounted only (±lines)only a file's diff, when you open it in the Changes view (read from your disk)never
Your promptstail never read; never storednonever
The agent's closing messagelast paragraph, truncated to 240 chars (turn_end.note)yes — shown with "your turn" so you know what it askednever
Command textfirst word + classified intent + redirect / delete targetsnonever
End-of-turn summaryfile paths and line counts of the turnshown by Claude Code under the replynever
PR comment (changes --pr)paths and line countsposted only when you confirm, with your own gh loginto GitHub, by you
Test outputsummary counts onlypass/failnever
Telemetry——none, ever
Audio—synthesized, no filesnever

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.

Repo layout

packages/core (schema, adapters, island, director — no DOM, no fs) · packages/cli · packages/web · packages/vscode · fixtures/ (synthetic sessions).

Community

Questions, stages worth showing off, ideas for v2: Ship at Midnight Discord, one server for every tool, with a channel for Agent Theatre.

Site

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/.

License

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).

来源:README.md,提交 3860896

工具

6

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

list_sessions

List past Claude Code sessions for a repository folder (newest first) that Agent Theatre can replay. Returns ids, titles and times only.

输入参数cwdlimit

replay_session

Open a replay of a past Claude Code session on the stage. Omit session_id for the newest. Returns the URL.

输入参数cwdsetsession_id

stage_status

What 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.

输入参数cwd

what_changed

The 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_id

install_hooks

Install the Agent Theatre hooks into ~/.claude/settings.json (non-destructive, keeps a backup). Not needed when the Claude Code plugin is installed.

无需输入参数。

版本历史

5
  1. v1.9.0最新Nov 4, 2026
  2. v1.8.1Oct 31, 2026
  3. v1.6.1Oct 29, 2026
  4. v1.5.5Oct 26, 2026
  5. v1.5.4Oct 26, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分