About 5 minutes. You start a private GitHub holding one
open bug report, your own coding agent triages it, and you read the twin’s own
record of every call it made — including the
201 on the comment it wrote and
the state that changed behind it.api.github.com, boots from a declared starting state,
records every request, and never touches github.com. What you write at one call
is there at the next — and gone when the sandbox stops.
Before you start
- A Pome account.
pome loginopens the browser sign-in and creates one if you do not have it. No credit card. - Your own coding agent — Claude Code, Cursor, anything that can run a shell command and read JSON back.
- Node 18+ for
npx, pluscurlandjqfor the transcripts below. Your agent can read the raw JSON withoutjq; it is here to keep the blocks short.
ANTHROPIC_API_KEY, no model inference paid
for by Pome: your agent is both the operator and the actor. It drives Pome,
and it is the thing that acts on the twin.
Nothing on this page is graded. No task file, no criteria, no score — and no
agent eval is charged, because an eval is only ever burned when a run is graded.
A sandbox you start, drive and stop costs you nothing. Grading appears exactly
once in this curriculum, at the
support-triage capstone, where the agent under test
is sealed off from the criteria that judge it.
Paste this
Hand this to your coding agent as-is. It names the twin’s own action vocabulary (add_issue_comment, add_assignees) and the boundary it must not cross.
The world
sandbox create boots a GitHub twin from its declared starting state and hands
back the URLs that reach it. It also writes the connection secrets to
.pome-sandbox.env at mode 0600, and says so on stderr.
api_url with the one bearer the sandbox accepts:
acme/api, holding one open bug report. Read it
the way any GitHub client would:
bug. That is the starting state, and it is
the same every time you create this sandbox — which is what makes anything you
observe next reproducible.
Now the triage: two writes, then two reads back through the twin.
Read the tape
Every call above was recorded by the twin as it happened. This is the part neither a mock nor a staging account gives you: an account of the run written by the service, not by the agent.- Five rows, in the order they happened. Read top to bottom and the triage is legible without asking the agent what it did: it looked, it wrote twice, it checked.
201onPOST .../issues/1/comments, stampedtool: add_issue_comment. The twin stamps its own action vocabulary on the row whether the call arrived over REST or over MCP, so the same work reads the same either way.state_mutation: trueon exactly the two writes. It means the call landed — a write the twin refuses readsfalse, nottrue.- No
toolonPOST .../issues/1/assignees. Only a short list of GitHub actions is stamped by name today; every other call is identified by method and path. That is why the assertable check below binds toadd_issue_comment. fidelity: semantic. This surface carries a full behavioural contract, not a response shape with placeholder values.
What you could assert here
Nothing on this page was graded, but a tape and a final state are exactly what a graded check reads. The GitHub twin already declares these — no authoring required, andlist_checks on the Pome MCP prints the full set with what each
one actually compares:
Pointers, not a task. Turning them into a graded exam is the
capstone below, and
Write a task is where the grammar lives.
How real is this twin?
Every surface you called above is compared against a captured response from the real GitHub API, re-run daily and published. The GitHub row on status.pome.sh carries the current count of twin responses that match, names every divergence we have ruled on by id, and states how old the captured baseline is. Nobody has to take our word for the fidelity, including us — a twin that drifts turns that row red. Which surfaces are covered, and which are shape-only, is on the GitHub twin reference.Next: the one graded lesson
The support-triage capstone
The same twins, now an exam: a sealed agent under test, a deliberate failing
score, and one line of prompt that turns it green.
GitHub twin reference
Every route and MCP tool the twin serves, by use case, with its fidelity tier.
Write a task
Turn the checks above into a graded exam for your own agent.
pome sandbox
Create, list and stop sandboxes — including multi-twin ones.