Jane
Consultant
Takes the task, decides the shape of it, and hands out the pieces.
gpt-5 · OpenAI
Give your AI agents a real workspace, real tools, and the ability to work together.
A theme decides the room, the palette and who your agents are portrayed as. It decides nothing else — the same team does the same work, wherever you put them.
A bullpen, a corkboard, and a team that argues about evidence.
A consulting team, a corkboard, and far too much coffee.
Unchanged. A world has no opinion about what you asked for.
Unchanged. Same roles, same models, same permissions.
Unchanged. Only the room and the cast are different.
Multiple agents. One workspace. Real tools. Real development workflows.
A chatbot hands you an answer and stops. The work — opening the file, running the command, checking whether it broke anything — is still yours. Backstage moves that boundary.
Every step after the answer is a person moving text between two windows.
the lead breaks it down and delegates
your project folder, on your machine
real tools, real output
a change in the project, and a diff to approve
The loop closes inside the project. You read the diff instead of assembling it.
You cast a team out of the world you chose and nominate a lead. The lead breaks work down, hands pieces to the agents it can reach, and puts the answers back together.
Consultant
Takes the task, decides the shape of it, and hands out the pieces.
gpt-5 · OpenAI
Technical Investigator
Reads the project and finds where the problem actually lives.
gemini-2.5-pro · Gemini
Terminal session
Runs the terminal: installs, builds, and the test suite. Keeps its own name, and borrows a body.
claude code · Local
Team Lead
Reads the diff before anything is committed, and says what is wrong.
gpt-5-mini · OpenAI
Four of the eight in this world. Change the world and the same team is played by a different cast — the roles, the tools and the permissions do not move.
JANEConsultant
Takes the task and breaks it into three
CHOTechnical Investigator
Traces the bug through the project
CLAUDETerminal session
Writes the fix and runs the suite
LISBONTeam Lead
Reads the diff and signs it off
JANEConsultant
Reports back, and queues the follow-up
delegate_task · agent_message · team_status — the team tools, exactly as the runtime registers them.
Every turn carries the agent, the model behind it, and the tools that ran. Nothing happens in your project that is not on this list.
Our login route lets an expired session through once. Find out why, and fix it.
Taking this one. Three pieces: find where the session is checked, find what changed around it, then fix it and prove the fix.
Cho has the trace. Claude has the terminal.
It is in src/auth/session.ts. The refresh runs before the expiry check, so a stale token is renewed and then validated — it passes once, and fails on the next request.
The order changed in the commit that added silent refresh.
Swapped the two calls so expiry is checked first, and covered the token that expires inside the refresh window.
Suite is green: 84 passed, 0 failed.
Read the diff. The fix is right and it is small — four lines and one new test.
One note: the same pattern is in the API middleware. Worth a follow-up, not part of this.
Done. An expired session is rejected on the first request now, and there is a regression test for it.
The commit is waiting on your approval, and Lisbon's middleware note is queued as its own task.
A scripted demonstration of a Backstage transcript. The tool names are real; the conversation was written for this page.
JANE
Task received, split into three
CHO
Searched the project for validateSession
CHO
Read src/auth/session.ts
CLAUDE
Running npm test -- auth
LISBON
Reviewing the working tree diff
JANE
git_commit is waiting on your approval
A tool that changes your project stops here and waits for you. Every failure path on that prompt denies.
Point Backstage at a folder on your machine. Agents orient themselves in it the way a new engineer would — read the manifest, walk the tree, find the entry point — before they change a single line.
filesystem_read · filesystem_search · git_log
A scripted demonstration. Nothing is executed in your browser.
Installs, builds and test runs happen in your project and come back with the output they actually produced. Running commands is its own permission, and a command that changes things waits for you.
terminal_run is a real PTY, not a transcript — so an interactive tool behaves like an interactive tool.
Claude Code is detected before it is launched, so you are told whether it is installed rather than left to read a shell error.
Each agent is configured with its own provider and model, so a cheap model can do the reading and an expensive one can do the thinking — in the same team, on the same task.
GPT models, driving any agent on the team.
Your API key
Gemini models, connected the same way.
Your API key
Detected on your machine and run in a real terminal inside Backstage. Your team lead can hand work straight to the session.
Your local install
Claude models as a directly connected provider.
Coming soon
Local models, never leaving the machine.
Coming soon
Open-weight models as another provider option.
Coming soon
Each agent carries its own provider and model.
A reader, a builder, a reviewer — same task.
All of them in one project folder, on your machine.
Every tool below is registered by the runtime and mapped to exactly one permission. The mapping fails closed: a tool with no permission recorded against it is reachable by nobody.
Point Backstage at a project on disk. Agents orient themselves in it before they touch anything.
A team lead breaks work down and hands pieces to the agents you connected it to. They report back.
A real PTY, not a transcript. Installs, builds and test runs happen in your project and come back with real output.
Read and search the project, then create and edit files — reading and writing are separate permissions.
Status, diff and log alongside the branch you are already on. Committing is a permission of its own.
Every tool maps to a capability, and every agent holds only the ones you granted. Unmapped tools reach nobody.
Add an API key for the providers you want to use, or point Backstage at your local Claude Code install.
Pick the project folder on your machine, pick a world, and cast the agents who will work in it.
Give the team a task in plain language. Your team lead decides who takes which part of it.
Watch the work happen — files, terminal, git — and approve anything that changes your project.
Backstage runs on your desktop, against a folder you pick, with keys you own. The parts of that which are enforced in code are below; nothing else is claimed.
Agents work in one folder: the project you chose. Reading it, writing to it, running commands in it and committing to it are four separate permissions, granted per agent.
A tool flagged as needing approval cannot run until you say yes, and every failure path denies — a timeout denies, a closed window denies, a cancelled run denies.
Provider keys are encrypted at rest against a key your operating system holds, scoped to the account signed into Backstage. The plaintext stays in the app's main process; the interface only ever learns that a key exists and its last four characters.
A request is made with the key the signed-in user stored, or it is not made. Backstage never reaches for an environment variable, another account's key, or a cached client — the absence of a fallback is the feature.
Model calls go from your machine to the provider you configured, on your key, and are billed to you. Backstage has no server in that path.
Bring your AI team into your desktop workflow.
Where the answer is “not yet”, it says not yet.
Backstage is a desktop application that gives AI agents somewhere to work. You point it at a project folder on your machine, connect the models you want to use, and cast a small team of agents into a pixel-art workspace. They read the project, run commands in it, and hand work to one another while you watch it happen.
Give your agents a workspace, connect your tools, and let them build together.