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.
wt install stripe@latest twilio@latest clerk@latest
wt up
# ✓ stripe running on :4111
# ✓ twilio running on :4112
# ✓ clerk running on :4113
Mocks look right. Sandboxes work sometimes. But you keep finding the real bugs in production.
They don't track state, fire webhooks, or break the way real APIs break. You're testing against a fantasy.
Rate-limited. Incomplete. Can't simulate failures. Can't run offline. Can't scale.
Stripe had a blip. Twilio was slow. Clerk rotated something. Your CI is red and you did nothing wrong.
What happens when Stripe returns 429s during peak checkout? When Twilio drops webhooks? You find out when your customers find out.
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.
# 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
wt up
# ✓ stripe running on :4111
# ✓ twilio running on :4112
# ✓ clerk running on :4113
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"),
},
)
Your existing tests. Your existing SDK calls. Zero changes beyond the base URL.
Run your full dependency stack on your laptop. No network, no API keys, no rate limits. Local development, fully offline.
Deterministic integration tests. Single binaries, fast startup, zero external dependencies. Your CI goes green because your code works.
Inject real failure modes. What happens when Stripe returns 429s during peak? When Twilio drops 10% of webhooks? Find out before your customers do.
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.
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.
A living, growing catalog of behavioral API twins.
Accounts, Balance, Transfers, Payouts, Webhooks
PaymentsUsers, Sessions, Organizations, JWT validation
Auth & IdentityMessages, Verify (OTP send/check)
CommunicationsEmail send, delivery status
CommunicationsEvent capture, batch ingestion
AnalyticsStore API, product catalog
E-CommerceStore API, orders
E-CommerceLoyalty programs, points, rewards
Loyalty & RewardsReviews, loyalty, referrals
Loyalty & RewardsLoyalty programs, campaigns
Loyalty & RewardsCRM data, contacts, records
CRM & DataStore data, lead generation
CRM & DataLogo image retrieval
Utilitiestwin-{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 →
| 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 |
wt CLIwondertwin.yaml manifest
# 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 ./...