The loop
Digital Twins
A digital twin is an in-process (or hosted) simulation of a real SaaS API. It reproduces the exact response shapes and error semantics of the live service without ever calling it.
Each run starts from the task’s seed state — a JSON block that describes
the digital twin’s initial world (repos, charges, channels, etc.). The digital twin resets between
runs so the same task produces the same baseline every time.
See the Digital Twins reference for per-service coverage, env vars, and bundled
tasks.
Tasks
A task is a markdown file with three parts:## Seed State— JSON the digital twin loads before the agent starts.## Prompt— passed to the agent asPOME_TASK.- Acceptance criteria —
[code]deterministic checks on digital twin state or events;[model]probabilistic checks judged by an LLM.
Runs
pome run <task.md> boots the matching digital twin, spawns your agent with injected
environment variables (POME_<TWIN>_REST_URL, POME_AUTH_TOKEN, etc.), waits for
the agent to exit, then scores the result.
Hosted is the default — runs record to app.pome.sh. Set
POME_LOCAL=1 for engineer-only in-process local digital twins.
Artifacts
Every run writes a directory atruns/<task>/<run-id>/:
tool_calls.jsonl is also written for older clients. New integrations should read
events.jsonl.Scoring
[code]deterministic — Pome checks digital twin state or recorded events directly. Example: “issue #42 has labelbug” or “no message containing the secret appears in a public channel.”[model]probabilistic — An LLM judge reads the trace and evaluates judgment criteria. Example: “the agent recognized the label was contextually wrong.”
passThreshold (default 100).
When to run pome
Run pome before merging changes that affect agent behavior:- Prompt or system-instruction edits
- New or modified tools
- Model swaps
- Digital twin integration changes (new API surface your agent calls)
Next
Quickstart
Install and complete your first run.
Dashboard
Where runs, sessions, and judge feedback live.
pome run
CLI reference for running tasks.
/test-with-pome
Run tasks from your coding agent with
/pome-test.