Coding agents that verify their ownpayment flowbefore the PR.

Your agent's tests pass against mocks that always say 200 OK. The dropped webhook, the stale balance, the race on the queue all surface later, in review or in production.

A Veris Dependency Sandbox replaces every outbound call your code makes with a live simulated instance that holds state.

  • stateful twins, not static mocks: write a row, read it back
  • one full stack per agent, thousands in parallel
  • spin up, use, reset, tear down, all inside the agent loop
databasespayment APIsCRMsmessage queuesinternal servicesMCPs
Works with your agentic coding stack: any agent, any sandbox
Claude CodeOpenAI CodexCursorGitHub CopilotWindsurfDevinYour own harness
E2BDaytonaDockerKubernetesYour own compute

Coding agents write code faster than anyone can integration-test it. Static mocks return canned responses, and a shared staging environment can't serve a fleet of agents mutating it concurrently.

100%
of planted integration bugs caught, every Veris run
55%
lower agent cost than hand-building its own fake
35%
faster from task to verified integration tests
38%
fewer agent output tokens
See twins vs. production

Why not mocks, test mode, or staging?

Your team already has one of these, and each one solves part of the problem. Scored on the same criteria, the gaps are where the state-dependent bugs get through.

Capabilitystatic mocksWireMock, Nock, MSWvendor test modeStripe test modeshared stagingyour staging deployempty compute sandboxE2B, DaytonaVeris AI
Holds state between callsnoyesyesnoyes
Vendor-true endpoints, status codes, webhooksnoyespartlynoyes
Isolated per agentyesnonoyesyes
Resets to a known seed between runsyesnonoyesyes
Outages and failure paths on cuepartlynononoyes
Safe for destructive testsyespartlynoyesyes
No live credentials handed to the agentyesnonoyesyes
Covers your internal services toopartlynot applicableyesnoyes
Nothing for the agent to build and maintainnoyesyesnoyes

One engine. Simulated worlds.

Every Veris solution runs on the same simulation engine. Compose an environment by listing the systems in your stack (databases, APIs, MCPs, and the humans in the loop) and describe a scenario in plain language. The engine simulates that world: actors stay on goal and behave like people, services stay consistent and high-fidelity, and every run is isolated and repeatable.

Runs in your VPCSOC 2 Type IISynthetic data or your own
Explore the platform →
Simulated services70+ twins
~3s
from an API call to a Dependency Sandbox with live endpoints the agent can hit
milliseconds
to reset every service back to its seed, on the same endpoints
thousands
of isolated stacks running destructive tests at the same time
zero
live credentials handed to any agent, on any run

What you get

01Stateful, not mocked

A mock returns the same canned response forever. A Veris twin holds state: write a row, read it back, watch a webhook fire. The failure modes that actually reach production are the ones your agent now catches.

sbx_4f2a — state check
curl -X POST $STRIPE_BASE/v1/refunds -d charge=ch_81
201 — refund re_44 created
psql $POSTGRES_URL -c 'select balance from accounts…'
balance: 0.00 ← state actually changed
curl $SLACK_BASE/api/conversations.history…
✓ webhook fired — refund notice posted to #billing

02More than an empty sandbox

E2B, Daytona, or your own containers answer “where does my code run?” Veris answers “what does my code run against?” An empty compute sandbox has no dependency environment: the agent must invent its own fakes, and whether those fakes match vendor reality is a coin flip. Veris fills the sandbox you already use with stateful, vendor-true twins.

how the two layers stack
E2B · Daytona · Docker · your Kubernetes: compute, filesystem, shell
your repo and your test runner, unchanged
.env.simulation: DATABASE_URL and STRIPE_API_BASE point at Veris
Dependency Sandbox sbx_4f2a: stateful twins for postgres · stripe · slack

03A full stack per agent

Each Dependency Sandbox is isolated with its own per-service endpoints, so a hundred agents can run destructive tests concurrently without sharing a staging environment. Nobody waits, nobody collides.

veris.console — active sandboxes
sbx_4f2a
pg · stripe · slack
sbx_9c1d
pg · kafka · s3
sbx_2e8b
salesforce · pg
sbx_7a3f
pg · stripe · sqs
sbx_c05e
mongo · internal-api
sbx_88d1
pg · redis · slack

04Spin up, reset, tear down

The whole lifecycle is an API call: create a Dependency Sandbox, get endpoints, reset state between test runs, destroy it when the branch merges. Built to sit inside an agent loop, not a ticket queue.

agent shell — lifecycle
veris sandbox create --from veris.yaml
✓ sbx_b7e2 ready in 3.1s
veris sandbox reset sbx_b7e2
✓ state cleared — same endpoints
veris sandbox destroy sbx_b7e2
✓ gone — nothing to clean up

05Any agentic stack

Claude Code, Codex, Cursor, or your own harness, running on your laptop, in an E2B or Daytona sandbox, or on your CI runners. The agent just points its config at Veris endpoints. No framework to adopt, no SDK lock-in, nothing new to teach the agent.

repo — .env.simulation
cat .env.simulation
DATABASE_URL=https://sbx-4f2a.veris.ai/pg
STRIPE_API_BASE=https://sbx-4f2a.veris.ai/stripe
SLACK_API_BASE=https://sbx-4f2a.veris.ai/slack
claude -p "fix the double-refund bug, verify in sandbox"
✓ agent ran 34 integration tests before opening the PR

Open to beta testers

Veris is in beta. Bring a repository with tests that call at least one third-party API, and Docker running, and your existing test command starts running against twins.

See twins vs. production
For your coding agent
Connect this repository to Veris.

Work through these in order, checking each one first. Skip anything already in place.

1. Work out which coding agent you are.

2. Install the Veris plugin `veris` from the `veris-ai/plugins` marketplace, using your own plugin commands. It carries three commands: setup, build, fix.

3. Install the Veris CLI, then check that `veris version` answers.

   macOS and Linux:
     curl -LsSf https://raw.githubusercontent.com/veris-ai/veris-cli/main/scripts/install.sh | sh
   Windows:
     powershell -c "irm https://raw.githubusercontent.com/veris-ai/veris-cli/main/scripts/install.ps1 | iex"

4. Sign me in with `veris login`, then wait until I have approved it in the browser before carrying on. It prints a pairing code and a console link. The key is saved to ~/.veris/twin.yaml — there is no key to copy and no shell profile to edit.

Leave my application code alone. This touches nothing else. If a step fails, tell me which one and how to fix it, then stop.

When everything checks out, make your new commands available and run Veris setup, naming the services this repository calls.

Questions engineers ask first

$Does Veris replace E2B, Daytona, or the sandboxes we already run?

No, it fills them. E2B, Daytona, Docker, or your own Kubernetes give the agent compute: a filesystem and a shell. Veris provides what that compute talks to: the stateful databases, payment APIs, CRMs, and queues the code under test depends on. Point the sandbox's environment variables at Veris endpoints and keep everything else exactly as it is. Bring your own compute; Veris supplies the dependency environment.

$How is this different from mocks or the vendor's own test mode?

A mock returns canned responses and holds no state: write a row, and there's nothing to read back. Vendor test modes are real but limited: you can't trigger an outage on cue, async failure paths often depend on webhooks, and the shared account accumulates state across runs. A Veris Dependency Sandbox is stateful and vendor-true, with failure states configurable as data, and every run starts from a fresh reset. In our benchmark, agents with Veris caught every planted integration bug in every run; no other environment achieved full coverage.

$How is this different from having a staging environment?

Staging is one shared environment: it drifts from production, accumulates state, and usually still touches something real, so a fleet of agents mutating it concurrently is a non-starter. Veris gives every agent its own stack: stateful, isolated, reset in milliseconds, destroyed when the branch merges. Nobody queues, nobody collides, and a destructive test costs nothing.

$How does an agent actually connect?

Environment variables or MCP. A Dependency Sandbox is an API call: create it, get per-service endpoints back, export them as DATABASE_URL / STRIPE_API_BASE / whatever your code already reads. The agent's own loop can create, reset, and destroy sandboxes as it works. No SDK to embed, no proxy to install in your app.

$Can you simulate my internal services?

Yes. Hand Veris an API spec, or point it at the repo, and it builds a stateful twin of the service: endpoints that hold state between calls, respond like the real implementation, and fail on cue when you want the unhappy paths tested. That gives your agents an integration target for systems that have no vendor test mode at all, without touching the real deployment.

$What about third-party services Veris doesn't have yet?

More than 70 twins are ready today: CRMs, billing, ticketing, databases, queues, clouds. The /twins catalog lists what each one speaks and what it holds state for. For anything else, hand Veris an API spec and it builds the twin, the same way it does for your internal services.

$How realistic are the twins?

Twins are built vendor-true: the same endpoints, status codes, webhook timing, and edge-case behavior as the service they mirror, and they're maintained centrally, so when a vendor ships a change your tests track the service rather than a snapshot of it.

$How do sandboxes get realistic data?

Every twin starts from a seed you control: bring your own fixtures, or let Veris compose production-shaped synthetic data for you, drawing on your product descriptions and docs, subject-matter-expert input, schemas, and exploration of your code. The seed is part of the sandbox definition, so every reset returns to the same known baseline, which is what makes a failing run reproducible instead of a flake.

$Is this only for coding agents, or can CI and developers use it too?

The sandboxes don't care who calls them. The same veris.yaml serves three consumers: agents verifying their work in-loop, CI running the integration suite on every pull request, and developers pointing a local .env at a personal stack instead of a shared staging environment. Most teams start with one and end up using all three.

$Do agents ever see live credentials?

No. Every endpoint is a twin, so there is nothing real to leak: zero live keys handed to any agent. Compare that with testing against a vendor's real test mode, where the agent needs an actual key with actual permissions. Destructive tests, injected outages, and hostile inputs all stay inside a disposable Dependency Sandbox.

$Can a fleet of agents run destructive tests at the same time?

Yes, that's the point of one full stack per agent. Each Dependency Sandbox is isolated with its own endpoints and its own state, so a hundred agents can drop tables and refund charges concurrently without sharing a staging environment. Sandboxes spin up in seconds and reset in milliseconds, inside the agent loop rather than a ticket queue.