GitHub Catalog Activate Get Started

Stop mocking. Start cloning.

Behavioral API twins for local dev, CI, and chaos testing. Run real replicas of Stripe, Twilio, Clerk, and dozens more — locally, offline, no rate limits.

Dot the WonderTwin mascot
wt install stripe@latest twilio@latest clerk@latest
wt up
# ✓ stripe running on :4111
# ✓ twilio running on :4112
# ✓ clerk  running on :4113
Max the WonderTwin mascot

Your test infrastructure is lying to you

Mocks look right. Sandboxes work sometimes. But you keep finding the real bugs in production.

Max glitched

Mocks return right shapes, wrong behaviors

They don't track state, fire webhooks, or break the way real APIs break. You're testing against a fantasy.

Max sleeping

Sandboxes are rate-limited and online-only

Rate-limited. Incomplete. Can't simulate failures. Can't run offline. Can't scale.

Dot worried

Integration tests flake for external reasons

Stripe had a blip. Twilio was slow. Clerk rotated something. Your CI is red and you did nothing wrong.

Dot nervous

You find real bugs in production

What happens when Stripe returns 429s during peak checkout? When Twilio drops webhooks? You find out when your customers find out.

Not mocks. Not stubs. Twins.

A WonderTwin Stripe twin doesn't just return valid JSON. It tracks balances, creates transfers, fires webhooks, and maintains state across requests — just like the real Stripe API.

Built to pass compatibility tests against official SDKs.

Stateful Behavioral SDK-compatible
Glitched mock
Mock
vs
Dot celebrating
Twin

Three steps. No new framework.

1

Declare

# wondertwin.yaml
twins:
  stripe:
    version: "0.3.2"
    port: 4111
    seed: ./fixtures/stripe.json
  twilio:
    version: "latest"
    port: 4112
  clerk:
    version: "~0.2"
    port: 4113
Max reading
2

Activate

wt up
# ✓ stripe running on :4111
# ✓ twilio running on :4112
# ✓ clerk  running on :4113
Twins fist bump
3

Point at localhost

stripe.SetBackend(
  stripe.APIBackend,
  &stripe.BackendConfig{
    URL: "http://localhost:4111",
  },
)

// Everything else stays the same
transfer, err := transfer.New(
  &stripe.TransferParams{
    Amount:   stripe.Int64(1000),
    Currency: stripe.String("usd"),
  },
)
Dot pointing Max pointing

Your existing tests. Your existing SDK calls. Zero changes beyond the base URL.

Built for every stage of your workflow

✈️

Works on a plane

Run your full dependency stack on your laptop. No network, no API keys, no rate limits. Local development, fully offline.

🧪

Never flake again

Deterministic integration tests. Single binaries, fast startup, zero external dependencies. Your CI goes green because your code works.

💥

Break things on purpose

Inject real failure modes. What happens when Stripe returns 429s during peak? When Twilio drops 10% of webhooks? Find out before your customers do.

🤖

Your agent's new best friend

WonderTwin includes an MCP server so AI coding agents can discover, install, start, seed, and inspect twins natively. Unlimited API access for scenario testing at scale.

Every twin, same interface

All twins expose a standard admin API alongside their service-specific endpoints.

# Reset state between tests
curl -X POST localhost:4111/admin/reset

# Load seed data
curl -X POST localhost:4111/admin/seed -d @fixtures/stripe.json

# Inspect internal state
curl localhost:4111/admin/inspect/transfers

# Health check
curl localhost:4111/admin/health

Works with any test framework. Go, Python, Node, Rust, Java — if it speaks HTTP, it works with WonderTwin.

50+ twins and growing

A living, growing catalog of behavioral API twins.

Stripe

Accounts, Balance, Transfers, Payouts, Webhooks

Payments

Clerk

Users, Sessions, Organizations, JWT validation

Auth & Identity

Twilio

Messages, Verify (OTP send/check)

Communications

Resend

Email send, delivery status

Communications

PostHog

Event capture, batch ingestion

Analytics

Magento

Store API, product catalog

E-Commerce

WooCommerce

Store API, orders

E-Commerce

LoyaltyLion

Loyalty programs, points, rewards

Loyalty & Rewards

Yotpo

Reviews, loyalty, referrals

Loyalty & Rewards

Kangaroo

Loyalty programs, campaigns

Loyalty & Rewards

Clarify

CRM data, contacts, records

CRM & Data

Storeleads

Store data, lead generation

CRM & Data

Logo.dev

Logo image retrieval

Utilities

Built for contributors

twin-{name}/
├── cmd/twin-{name}/main.go
├── internal/
│   ├── api/
│   │   ├── router.go
│   │   └── handlers_*.go
│   └── store/
│       ├── memory.go
│       └── types.go
├── go.mod
└── go.sum

Every twin follows the same structure. Standard layout. Standard admin API. Standard build pipeline.

Most twins can be generated by an AI coding agent in 2–4 hours from public SDK documentation.

Read the docs. Feed the SDK to your coding agent. Submit a PR.

Contributing Guide →
Dot building Max building

How we compare

WonderTwin Mocks Sandboxes LocalStack
Behavioral fidelity State, logic, webhooks Schema only ~ Partial AWS only
Offline / local
No rate limits
Chaos testing
SaaS coverage 50+ services ~ Manual One vendor AWS only
SDK compatible
Single binary N/A Docker

Simple pricing. Powerful twins.

WonderTwin (Free)

Apache 2.0. Free forever.
  • Full twin catalog of latest versions
  • wt CLI
  • MCP server for AI agents
  • wondertwin.yaml manifest
  • Community support
Dot and Max waving together

WonderTwin Activate

Coming Soon
  • API version libraries — pin twins to specific SaaS API versions
  • Certified compatibility — quantified SDK compatibility scores
  • Resilience injection — rate limits, latency, outages, webhook delays
  • Known issue intelligence — real API quirks encoded into twins
Twins power fist bump

Get started in 30 seconds

# Install the CLI
brew install wondertwin-ai/tap/wt

# Add twins to your project
wt install stripe@latest twilio@latest

# Start everything
wt up

# Run your tests as usual
go test ./...