Skip to main content
pome run is the core workflow: it loads a task markdown file (or every .md in a directory), boots the matching twin, spawns your agent with injected environment variables, records the trace, and scores the result against the acceptance criteria. Hosted is the default — runs are recorded and scored on app.pome.sh. Use pome run --local to run against the in-process local twin (GitHub, Stripe, or Slack depending on the task): it records the trace but does not score — evaluation is a hosted feature.

Usage

Arguments

Options

Environment variables

Pome injects these into the agent process during a run: For hosted Stripe runs, Pome may also set POME_STRIPE_API_BASE and POME_STRIPE_API_KEY instead of the generic twin URL pattern. Use pome run --local to run against the local in-process twin and skip hosted auth — it records a trace but does not score (evaluation is a hosted feature). POME_LOCAL=1 is the internal escape hatch that runs locally and scores (used by pome matrix).

Examples

Output

Each run writes artifacts under runs/<task>/<run-id>/:
  • events.jsonl — canonical event stream (TwinHttpEvent, LlmCallEvent, etc.)
  • score.json — per-criterion verdicts and aggregate satisfaction score. Not written for --local runs (evaluation is hosted; --local captures the trace only).
  • state_initial.json / state_final.json — twin state before and after the agent
Hosted runs also print a cloud: URL to the dashboard.

Exit codes

Returns the worst exit code across all tasks in a batch. See CLI overview — exit codes.