Sandboxes for AI agents,
in your repo.

Stateful fakes of Slack, GitHub, Datadog and eight more tools. Your coding agent runs your agent against them, sees what broke and fixes it.

  • Slack
  • GitHub
  • Datadog
  • PagerDuty
  • Salesforce
  • HubSpot
  • Gong
  • Google Analytics 4
  • Google Ads
  • LinkedIn Ads
  • ChatGPT Ads
claude · support-botreal run · 8 tool calls · 36 s
› The Slack support bot in this repo has a bug. Fix it and prove the fix works.
● npx ancha runexit 1
✕ replied_in_thread 0/1 · mentions_reset_link 1/1 · no_deletes 1/1
● npx ancha explain latest
expected≥1 message in #support from @support-bot in thread of $question
actual0 matching; $question has not been posted yet
● npx ancha baseline save before
● Edit agent.mjs +5 −2
● npx ancha run --compare beforeexit 0
✓ replied_in_thread 1/1 · mentions_reset_link 1/1 · no_deletes 1/1
● The bug: the bot replied to the wrong message.
#supportAncha's Slack
Dan Ito

Reminder: password resets live at https://acme.dev/reset

support-botAPP

You can reset your password at https://acme.dev/reset.

Answered an hour-old reminder.
Carol Diaz

Hi! How do I reset my password?

Never posted: the bot had already exited.

A fresh Claude Code session (Opus 5.5) fixing a Slack bot it had never seen. Shortened from the run log; nothing added. 4 of 4 valid trials fixed and proven.

The tools talk to each other.

A Datadog monitor pages PagerDuty, PagerDuty posts to Slack, and a merged pull request deploys. The outage ends only when the fix reaches production.

scenes/examples/living-incident/scene.yaml · excerpt
twins: [slack, github, datadog, pagerduty]
world_rules:
  faults:
    - ref: exhausted_pool
      resolved_when: { file_at: [$checkout_repo, production, src/db.ts],
                       equals: "export const pool = { max: 20 };\n" }
  integrations:
    - { from: datadog, to: pagerduty,
        handle: pagerduty-checkout, service: $checkout_service }
    - { from: pagerduty, to: slack, service: $checkout_service }
  pipelines:
    - { repo: $checkout_repo, on: merge_to_default,
        workflow: deploy-checkout, duration: 15s, sets: production }

Runs in your repo.

npx ancha init adds a config, a starter scene and a skill your coding agent follows. Put ancha run in npm test and CI runs it too.

ancha.yaml
agent:
  command: node agent.mjs
  execution:
    mode: container
    image: node:24-slim
    files: [agent.mjs]
scenes: [scenes/**/scene.yaml]
trials: 20            # a fresh world for every trial
min_pass_rate: 0.95
package.json
"scripts": { "test": "ancha run" }

Sealed and fast.

In container mode your agent has no network. Ancha's relay is its only way out, so it can't reach the real Slack or GitHub.

  • to create a sandbox, median of 2004 ms
  • to reset it to its starting state, median0.26 ms
  • of memory per sandbox~1 MB
  • network interfaces for your agent in container mode0

Measured on 2026-10-28 on an Apple Silicon laptop.

11 tools. 218 endpoints.

A call outside coverage returns the tool's own error and counts as a gap, never as a pass.

  • Slack21 endpoints
  • GitHub61 endpoints
  • Datadog26 endpoints
  • PagerDuty17 endpoints
  • Salesforce14 endpoints
  • HubSpot18 endpoints
  • Gong5 endpoints
  • Google Analytics 44 endpoints
  • Google Ads9 endpoints
  • LinkedIn Ads17 endpoints
  • ChatGPT Ads26 endpoints
  • Your toolTell us which →

Try it on your agent.

Ancha is in private preview.