ancha.

Production, simulated.

Stateful testing playgrounds for AI agents.

Your agent works inside a simulated company. Every tool keeps its state, call after call, and you judge each attempt by what it changed there, not by what it said.

  • Slack
  • GitHub
  • Datadog
  • PagerDuty
  • Salesforce
  • HubSpot
  • Gong
  • GA4
  • Google Ads
  • LinkedIn Ads
  • ChatGPT Ads
Ancha · Product overviewancha.io · October 2026

Where agents get tested today.

  • Mocks forget.

    A stubbed Slack returns the same reply no matter what the agent did one call earlier.

  • Staging is shared.

    One workspace, many runs. Yesterday's messages and tickets leak into today's result.

  • Production is production.

    The first real test of a refund or a page is a customer, a teammate, or an on‑call engineer.

Ancha gives every attempt its own copy of the company, with each tool's state intact, and shows you what the attempt left behind.

The problem2

A stateful replica of your agent's entire world.

The tools it calls, the people it works with and the things that happen around it, copied for each attempt and sharing one state.

acme simulated company
Your agent

Your code, your harness

  • Datadog

    Checkout alert fires

  • PagerDuty

    Pages your agent

  • Slack

    Ben asks what broke

  • GitHub

    The fix deploys

  • BBen developer
  • RRachel on-call
  • GGreg database
Checks on the end state what changed in every tool · closed alpha
  • Took the page within 45 s
  • Reverted the bad config
  • Told the team the cause
  • Checkout is healthy again

One clock, deterministic ids, per-world credentials. Nothing an attempt does can reach the real Slack, GitHub or a customer.

What a playground is3

Tests that remember what your agent did.

Every call changes what the next one sees. When the attempt ends, you read the world back, tool by tool.

  • Before the attempt starts
    • Checkout error rate monitoralert
    • Incident: checkout failingtriggered
    • #ops · Ben: “Which deploy was this?”unanswered
    • PR #88 · revert checkout configopen
  • After the attempt ends
    • Checkout error rate monitorok
    • Incident: checkout failingacknowledged · 38 s
    • #ops · agent: “Config push at 14:02. Reverting.”reply
    • PR #88 · revert checkout configmerged

An attempt is judged on the right-hand column, read back from every tool, not on its transcript.

State is the point4

Same start. Independent attempts. Every call kept.

A run from the demo workspace: an on-call agent pages and acknowledges an incident, three times from one seed.

The Ancha console: attempt 1 of the Page and acknowledge task, with its Datadog and PagerDuty calls in order
  • Three attempts, one start

    Each attempt gets its own copy of the world. What one attempt changes, no other attempt sees.

  • Every call, in order

    Reads, writes and messages, each with its tool and the simulated time.

  • Then the end state

    The Tools tab reads back what the attempt left in every twin.

Screenshot from app.ancha.io. Checks are in closed alpha, so attempts show Ungraded.

Independent attempts5

What teams put in a playground.

Four agents from the demo workspace, each a saved test with tasks and repeated attempts. Bring your own agent; these show the shape.

  • Support triage

    SlackGitHub
    1. File the latest question as a GitHub issue
    2. Post the workaround
    3. Reply with an ETA
    4. Daily summary

    4 tasks · 9 attempts

  • Incident response

    DatadogPagerDutySlack
    1. Page and acknowledge
    2. Mute during rollback
    3. Drill: page and resolve
    4. Status report

    4 tasks · 9 attempts

  • CRM hygiene

    HubSpot
    1. Add a contact
    2. Advance the Acme deal
    3. Move to a named stage
    4. Pipeline report

    4 tasks · 9 attempts

  • Release notes

    GitHubSlack
    1. Notes to the team
    2. Notes to #announcements

    2 tasks · 5 attempts

Each test runs against its own world: Support workspace, On-call, Sales CRM and Engineering.

What teams test6

Fits the way you already build.

Point your agent at a hosted world from anywhere, or hand Ancha the agent and let it run the attempts.

  • Sandboxthe world is hosted, your agent runs anywhere
    $ npm install -g @ancha-labs/cli
    $ ancha login
    $ ancha sandbox create --tools slack,github
    $ ancha sandbox connections <id>
    $ ancha sandbox fork <id> --count 20
    SLACK_API_URL=https://app.ancha.io/t/…/e/…/slack/api/
    SLACK_BOT_TOKEN=xoxb-…
    GITHUB_API_URL=https://app.ancha.io/t/…/e/…/github
    GITHUB_TOKEN=ghp_…
  • Playground runyour agent in its own container, N attempts
    Upload the folder or point at a repositoryat app.ancha.io
    Pick tools, write tasks, choose attemptsresults grouped by task
    $ ancha secrets set OPENAI_API_KEYread from your shell, stored on your workspace's machine
    ANCHA_API_KEYone key for scripts and CI, no browser
How it fits7

The tools, as twins.

The endpoints your agent already calls, over one shared state, with the credentials it expects. A call a twin does not support fails in the service's own error format, never as a fake success.

  • Slackchannels, threads, events
  • GitHubrepos, PRs, checks, webhooks
  • Datadogmonitors, logs, metrics
  • PagerDutyincidents, on-call, routing keys
  • Salesforceclosed alpha
  • HubSpotclosed alpha
  • Gongclosed alpha
  • GA4closed alpha
  • Google Adsclosed alpha
  • LinkedIn Adsclosed alpha
  • ChatGPT Adsclosed alpha
  • Another tool?tell us which one
  • Next
  • Stripe
  • Linear
  • Notion
  • Gmail
  • Okta
  • Shopify
  • Attio
  • Better Stack
Worlds8

Your agent reaches the world and your model. Nothing else.

Two containers per attempt on a private network. Nothing an attempt does can touch the real Slack, GitHub or a customer.

Agent container your project, your start command
  • Read-only root, tmpfs workspace · fresh per attempt
  • Task and twin credentials as environment · never in the prompt
  • Model traffic only to the exact domain you allow · openrouter.ai, api.openai.com
World container the twins, one shared state
  • Per-world fake credentials · useless anywhere else
  • Deterministic clock and ids · same seed, same start
  • State captured at the end · the evidence for the verdict
  • Local: Docker on your machine, nothing leaves itancha ui · ancha run
  • Hosted: one private machine per account, worlds reachable from your CIapp.ancha.io
How it runs9

Bring your agent.

A project folder and a start command are enough. The first world is ready when you sign in.

  1. 1Sign in

    Email link or password at app.ancha.io. Your workspace starts with a sample agent, a world and a test you can rerun.

  2. 2Connect your agent

    Upload the folder or point at a repository. Ancha prepares it in a container and checks it can reach the twins.

    $ npm install -g @ancha-labs/cli
    $ ancha login
  3. 3Run, read, repeat

    Pick tools, write tasks in plain English, choose how many attempts. Open any attempt and read the world it left behind.

  • Sign inapp.ancha.io
  • Design partnersancha.io
Get startedancha.io