A git worktree per agent. Four players from one Play button. C# patched into the game while it runs, with no player build anywhere.
Not another assistant, not another MCP bridge. Those stop at the diff. This one runs the game and hands your agents the controls.
The whole Unity loop in one app, with the waiting taken out
An agent is only as fast as the loop it runs in. Here is one code change, run through the loop everybody uses today, and then through this one.
TddScenario that comes back pass or fail.Method bodies hot-reload; new fields, methods and types still need a normal recompile. The rest of the fine print →
One call makes an isolated git worktree and boots a headless Unity editor inside it. The agent opens a scene there, enters Play Mode, patches C#, takes a screenshot, and never touches the checkout you are working in. When it is done, you merge a branch.
// one call: branch the project, boot an editor in it unity_worktree_create(name: "shield-rework", launch: "headless-graphics") → .sspace/agent-worktrees/shield-rework on agent/shield-rework // every other tool takes that path and works there unity_open_scene(project_root: WT, scene_path: "Assets/Arena.unity", enter_play_mode: true) unity_exec_patch(project_root: WT, code: "...") unity_screenshot(project_root: WT) // back in your checkout, when it works git merge agent/shield-rework
Seconds, not a re-importA full worktree carries your uncommitted changes over and seeds Library copy-on-write, so the editor boots with everything already imported.
settings worktreesProjectSettings/ and Packages/ with an empty Assets/: a sandbox at your project's exact Unity version for work that starts from nothing.
Headless, per worktreeLaunched with a GPU device for screenshots, or -nographics for the cheapest possible run. Idle editors quit themselves after about ten minutes.
Hidden under .sspace/Not in the file tree, not in search, not in the parent checkout's git status. unity_worktree_list shows them and their editors; unity_worktree_remove clears them.
You can also start a session in a fresh worktree from the launch screen, so two agents you supervise never share a checkout. How agent worktrees work →
Netcode bugs only show up with real clients. An agent drives a four-player match inside the app, host and clients at once: it plays the scenario, finds the bug, fixes it and re-runs. You never build a player.
An agent shouldn't have to stop your session to change it. Through the MCP exec bridge it patches the running scene (below: 180 cubes spawned into a live game), and edited C# hot-reloads into the same session without a rebuild or restart. That covers Assembly-CSharp, asmdefs and embedded packages; new fields or methods still take a normal recompile.
One window: Unity modes, extra clones, agent terminals, alerts, editor, search, logs, resource stats. Terminals live in a detached daemon, so quitting or updating the app doesn't kill an agent mid-thought.
Unity runs out of sight while you watch the stream. One click shows the real editor window, the same running instance with no relaunch, for a pass through the Hierarchy and Inspector. One more click hides it.
Tests and long grinds don't need pixels. Normal hides the editor and streams at full fidelity, Headless Graphics drops the window but keeps the view, Headless NoGraphics drops rendering entirely; Update() then ticks past 5,000 times a second.
Every agent gets its own live terminal, tiled across panes, tabs and windows. Claude Code comes wired to Unity via MCP: it opens scenes, runs the game and reads the console on its own.
Detected from your PATH. Bring the subscription you already pay for.
Kick off a long run and walk away. A finished turn flashes green and plays a sound, a permission stop flashes amber, even from a tab you aren't looking at. Nine sounds ship with it, including the Half-Life HEV beeps.
Up to four lightweight clones in an auto-grid: one Play button, each with its own stream, console and hot-reload. It's the same grid an agent uses to test a match, except you hold the mouse.
A .gitignore-aware file tree, a real editor with git blame, full-text search with replace, fuzzy quick-open, in as many panes as you need.
Claude and Codex session and weekly limits, with reset times, straight from the status bar.
The Unity console streams into the app: counts, per-player filtering, every Debug.Log line, all searchable.
Live CPU and memory for every terminal, Unity instance and internal process.
unity_editor_status
unity_screenshot
unity_open_scene
unity_trace_writes
unity_stop_play
unity_trace_report
unity_refresh
unity_add_player
unity_relaunch
unity_remove_player
unity_shutdown
unity_arm_hot_reload
unity_resolve_dialog
unity_set_stream_fps
unity_set_stream_res
unity_exec_query
unity_source_find
unity_exec_patch
unity_source_grep
unity_logs
unity_source_read
unity_tdd_logs
unity_docs
unity_worktree_create
unity_worktree_list
unity_worktree_remove
unity_start_editor
It registers itself in the project. 27 tools open scenes, run Play, patch the live game, read the console, add clients and branch the project into a separate worktree per agent. It can also grep Unity's own C# source, so it works from how the engine behaves rather than from what it remembers.
public class HostJoinTest : TddScenario { public override IEnumerator Run() { if (IsHost) yield return StartHost(); else yield return JoinAndMove(); } }
Subclass TddScenario, write Run(). Any player executes it (headless or live, host or client) and reports pass or fail; every clone gets its own PlayerIndex and IsHost.
Dark, Light, Midnight, Nebula and Sepia recolor the app chrome instantly; terminals, editor and game view keep their own rendering.
It covers the folder, the terminals, the agents (down to model and reasoning effort), the Unity mode, and an optional fresh git worktree. On macOS the Library clones instantly with no extra disk, and an agent can branch itself another worktree later.
Unity's own two, and the four most-starred community bridges, checked against their repositories and pricing pages this week. Most of them are good at what they do. None of them show you the game running.
| Tool | What it is | Tools | Price | What it's best at |
|---|---|---|---|---|
| Satura Spacedesktop app · macOS, Windows | A bench that runs Unity for you and streams the game your agents are building | 27 + exec | $19/mo · bring your own agent | Watching the change run, and having the agent prove it without you |
| Unity AIUnity · official · open beta | Ask, Plan and Agent modes inside the editor, plus an MCP server and a gateway for your own keys | — | Credits · $10 per 1,000 | Zero setup on Unity 6.2+, because it comes with the engine |
| Unity CLIUnity · official · beta | A standalone unity binary; the experimental Pipeline package attaches it to a running editor |
— | Free | Evaluating C#, builds and tests from a shell or from CI |
| MCP for UnityCoplay · Python · 13k★ | The default bridge: editor tools over MCP for whichever client you use | 47 | Free · MIT | The widest Unity support in the field, 2021.3 LTS through 6.x |
| Unity-MCPIvan Murzak · C# · 3.7k★ | Tools plus reflection, so it can call any C# method, including private ones and ones inside DLLs | 70+ | Free · Apache-2.0 | Reaching methods nobody wrote a tool for, and adding your own in one line |
| mcp-unityCoderGamester · TypeScript · 1.9k★ | A Node bridge that can fire any MenuItem in the editor |
24+ | Free · MIT | Menu-driven workflows, and wiring itself into VS Code-like IDEs |
| Unity MCPAnkleBreaker · Node · 352★ | The largest catalog, with 254 of its tools behind a lazy discovery proxy | 330+ | Free · own license | Editor surface nobody else wraps: Shader Graph, terrain, NavMesh, ProBuilder, profiler, MPPM |
unity_exec_patch takes a C# body, so placing twelve objects, wiring their references, checking the result and printing back only what the agent asked for is a single call.unity_source_grep and unity_docs instead: the real signatures for your exact editor version, rather than a longer menu.| Play-Mode hot-reload | method bodies patched into the running session, state intact, nothing to annotate. Unity's experimental Pipeline package asks you to mark each method by hand |
| The game, in the app | the running game streamed into the window, with mouse and keyboard injected as real devices; the rest of the table can take a screenshot |
| 4-player clone testing | the agent boots synced clones and plays the match through them. MPPM tooling elsewhere launches clones, it does not play them |
unity_trace_writes | data breakpoints: what writes this field at runtime, and on which frame |
unity_resolve_dialog | clears a native modal that has frozen the editor, which C# inside Unity cannot do: its main thread is the one being blocked |
unity_source_grep | greps Unity's own C# source at your editor version, not the docs about it |
unity_worktree_create | branches the project per agent, each worktree with its own headless editor |
TddScenario | pass/fail scenarios the agent runs in-engine to prove the change |
Assistants get cheaper and smarter every quarter, and every one of them works better on this bench. Swap your agent whenever you like; you keep the same bench.
It drives the Unity editor and the agent CLIs already on your box. Nothing runs in the cloud.
macOS · WindowsApple Silicon and Windows x64. Auto-updating desktop app.
Unity 6Opened at your project's exact editor version, through Unity Hub.
Six, out of the boxWhichever of them are on your PATH. Every terminal is a real shell.
Bring your ownSatura Space never resells tokens and never asks for your API key.
The limits you'd otherwise discover after paying.
| Works today | Not yet |
|---|---|
| ✓Unity 6 (Mono scripting backend) | ✕Unity 2022/2021 LTS |
| ✓New Input System, injected as real devices | ✕Legacy Input Manager input injection |
✓Hot-reload of method bodies: Assembly-CSharp, asmdefs, embedded packages |
✕Hot-reload of new fields, methods, types (normal recompile) |
| ✓macOS Apple Silicon · Windows x64 | ✕Intel Macs, Linux |
| ✓Claude Code, Codex and Cursor with auto-registered Unity MCP |
If your setup is in the left column, you're 60 seconds from playing. If something in the right column is blocking you, say so on Discord; those votes rank our roadmap.
Bring your own AI subscription; Satura Space never resells tokens.
$15/mo on the annual plan.
No credits, no overage, no token markup. Agents bill through the subscription you already have; we charge for the bench.
Bring your own AI subscription; no token resale, no API keys. macOS (Apple Silicon) and Windows (x64), auto-updating.
Start with a free trial, no card required. Cancel anytime; card checkout only when you subscribe.
A little, nothing hidden: one line in Packages/manifest.json, the engine package in Packages/, a .sspace/ working folder, and MCP registration for the agents you use (.mcp.json, .claude/settings.local.json, .cursor/mcp.json). Everything but the manifest line is gitignored for you.
No. It launches the editor hidden and streams the game into a panel. When you do want it, Reveal Editor pops the real window out instantly.
The hidden instance is a full Unity editor whose windows are suppressed at the OS level; Reveal shows them. Same process, so it's instant, with no relaunch or domain reload, and Play Mode keeps streaming while you tweak the Inspector. Hide it again and nothing restarts.
Method bodies, during Play Mode, on Unity 6 (Mono), in any of your scripts: Assembly-CSharp, asmdefs and embedded packages. New fields, methods or types need a normal recompile; a patched Awake or Start only affects objects spawned after it.
An MCP server hands your agent the editor; every one of them stops when the code compiles. Satura Space is the app around that: Unity runs hidden, the game streams into the window, C# lands in the running session without a domain reload, and the agent plays the result through injected input before it reports back. Its own Unity MCP server is one part of the product, not the product.
Because the widest tool is a compiler. unity_exec_patch takes a C# body and runs it through Roslyn in the live editor, with no recompile, no domain reload and no need to leave Play Mode, so one call can place twelve objects, wire them and print back only what the agent asked for. That reaches every Editor API and every package in your project, including ones written after we shipped. The named tools cover what C# inside the editor cannot do: launch editors, branch worktrees, clear native modals, grep Unity's own source. Tool schemas also cost context on every turn, which is why the largest catalog in this space hides 254 of its 330 tools behind a discovery proxy.
Unity 6 across all three release streams: 6000.5.4f1, 6000.3.6f1 and 6000.1.17f1. Other Unity 6 patch releases generally work too; these are the ones we verify against.
Claude Code, Codex, Cursor, Grok Build, Kimi and opencode, whichever are on your PATH. The first three get the Unity MCP server registered automatically; every terminal is a real shell, so anything else works too.
No. Bring the CLI agents you already pay for; Satura Space never proxies prompts, resells tokens or asks for a key.
No. Frames move over a shared GPU texture and everything else rides local loopback. Crash reports are anonymous and scrubbed of project detail.
Yes, if it reads Unity's Input System: input arrives as a real keyboard and mouse device. Legacy Input Manager games won't see it.
Yes, two ways: up to four lightweight multiplayer clones of one session, each with its own stream, logs and hot-reload, plus git worktrees for as many independent sessions as your machine handles. Headless NoGraphics is single-player only.
Yes. Launch each session in its own git worktree from the start screen, or let an agent make its own: the Unity MCP tool unity_worktree_create branches the project into .sspace/agent-worktrees/<name> on branch agent/<name> and boots a headless editor there. Merge the work back with git merge agent/<name>.
Each clone is a real hidden editor pointed at a stub project that links back to your Assets and Packages and reads the main Library (the same trick as Unity's Multiplayer Play Mode), so it boots in seconds with no re-import. One Play button starts the grid; every clone gets its own stream, console, input and hot-reload, so your netcode sees separate players.