examplepay, so every command is safe to copy. Every block of output came from running the real binary.
1. Install and run the demo
demo needs no config. It stands up a fake provider, sends traffic through the agent, changes the provider’s responses behind your back, and prints the alerts. See Installation for Homebrew, release binaries and the container image.
2. Scaffold a config
pikopod.yaml is read from the working directory unless --config says otherwise. Unknown keys are startup errors, so a typo can never silently do nothing. The full key list is in the configuration reference.
3. Import a spec into a sandbox
--spec takes a local file or an http(s) URL: OpenAPI 3.x, Swagger 2.0, a Postman collection, a GraphQL schema, or a documentation page. Use your provider’s spec URL, or download the small example spec these docs use to follow along exactly:
--seed when you want reproducible transcripts. The credential is what the sandbox expects on every request, sent the way the spec’s auth scheme says.
4. See which failures already bound to your API
There is no binding step. The moment a spec is imported, pikopod’s eleven failure stories attach themselves to the operations it declares.scenario list shows what attached and, for anything that did not, why.
5. Run two of them
0 when everything passes, 1 when an assertion fails, 2 on a tool error. See Running scenarios.
6. Serve it and make your own tests meet the failure
For this step, point your tests at the sandbox. Then, in another terminal, put it into a scenario’s standing state so your own tests, Postman, or plain curl meet the failure:
7. Gate a build on a breaking spec change
This needs no sandbox, no proxy and no config file. It reads straight from git with no checkout:--format githubactions in CI and every finding lands inline on the pull request diff. See Spec diff and CI integration.
8. Watch a real provider
Tell the agent where the real provider is.pikopod init left a placeholder; replace it with the provider’s real base URL:
pikopod up, then point your app’s provider base URL at http://127.0.0.1:4700/examplepay, keeping your real provider credentials. The agent forwards everything untouched and observes afterwards.
What to expect, and when:
- Incidents fire from the first request. A 5xx, a 429, or an unreachable provider is a fact about one request and needs no history.
- Drift stays quiet for 50 samples and 48 hours per endpoint. A shape change is a claim about what is normal, and a reference built from five responses has not seen your optional fields yet. This is on purpose, and it is why nothing about drift appears on day one.
pikopod statusshows progress: every endpoint the agent has seen, its sample count, and whether it is warmed up.
9. Reproduce the failure on your laptop
pikopod incidents export <fp> writes a bundle that reproduce accepts in place of the fingerprint. See Reproduce.
10. Regress forever
What just happened
importnormalized the spec into pikopod’s internal representation, where every field carries provenance, and registered a sandbox underdata_dir.scenario listbound eleven provider-agnostic archetypes to the operations the spec declares, refusing the one it could not ground.scenario runexpanded two archetypes into concrete steps and ran them against an ephemeral engine.upstarted two listeners in one process: the sandbox on:4600and the observing agent on:4700.spec-diffnormalized two spec versions and derived a severity for every change by one fixed rule.incidentsread the event log, andreproduceturned one event plus its redacted recording into a runnable pack.
Adopt it in this order
- Day one: the sandbox and the CI gate. Import the spec, run the archetypes in CI with a pinned seed, and add
spec-diffto the pull request pipeline. Nothing is installed in your request path. - Then: the agent in staging. Point the staging app at the agent and let it warm up somewhere low-stakes. Incidents are useful immediately; drift becomes useful after two days.
- Then: the agent in production. One agent as a shared service, its
data_diron a persistent volume. The first thing production sees is a tool that has already been quiet for two days. See Deployment.
Next steps
The loop
Why the sandbox and the observer are one tool.
Use it from a coding agent
The same checks over MCP, with honest verdicts.
Webhooks
Deliveries wrapped and signed the way the provider documents.
Deployment
Where the agent runs, and where its state lives.