How it works
Each twin is a full API emulator that runs on Arga’s infrastructure and is reachable via a public URL. Your app talks to the twin URL instead ofapi.stripe.com or api.slack.com — no code changes needed beyond swapping environment variables.
Spin up twins
From your project directory:- npx (no install needed)
- Arga CLI
- Select twins — pick the services your app uses (Slack, Stripe, Notion, etc.)
- Review
.envchanges — the wizard detects your environment variables and rewrites them to point at twins. Your original.envis backed up to.env.arga-backup. - Wait for provisioning — twins spin up in under a minute
Example: testing a Stripe checkout flow
Example: testing Slack messaging workflows
conversations.create API. It also supports OAuth flows if your app has an “Add to Slack” install step.
Managing your session
Twin sessions last 10 minutes by default. Use these commands from your project directory:| Command | What it does |
|---|---|
arga wizard status | Check if twins are still running and when they expire |
arga wizard extend | Add another 10 minutes |
arga wizard reset | Reset all twins to their initial empty state |
arga wizard teardown | Destroy the session immediately |
.arga-session.json in your project root. Add it to your .gitignore.
From that same project directory, arga runs logs can read .arga-session.json automatically, so you can inspect the current logs snapshot for the active run without passing a run ID. Add --errors-only to focus on failed worker logs and warning/error runtime logs.
Restoring your original environment
.env manually since teardown doesn’t revert it.
Available twins
| Service | Type | What you can test |
|---|---|---|
| Stripe | UI | Payments, subscriptions, checkout, webhooks, billing portal, billing meters, dashboard |
| Slack | UI | Messaging workflows, OAuth install flow, file uploads |
| Discord | UI | Channel workflows, file uploads |
| GitHub | UI | Repos, PRs, issues, branches, commits, check runs, webhooks, OAuth |
| GitLab | UI | Projects, merge requests, pipelines, hooks, REST and GraphQL |
| Gmail | UI | Mailbox flows, drafts, labels, threads, and watches |
| Google Drive | UI | File CRUD, sharing, permissions |
| Google Calendar | UI | Event CRUD, calendar management |
| Dropbox | UI | File storage, uploads, downloads |
| Notion | UI | Pages, databases, workspace management |
| Box | Backend | File storage, enterprise management |
| Jira | Backend | Issues, projects, JQL, Agile, comments, and webhooks |
| Linear | Backend | GraphQL teams, projects, cycles, issues, labels, comments, OAuth, and webhooks |
| Salesforce | Backend | sObject CRUD, SOQL/SOSL, composite, limits and actions, support-style case and email-template flows |
| Waterfall | Backend | Company search, people search, enrichment, verification, and account lookups |
| Unified | Backend | Aggregated API across Slack, Drive, Calendar, Notion, Dropbox |
| Unstructured | Backend | Document parsing and partitioning |
Tips
Combine twins with Arga validation
Combine twins with Arga validation
After spinning up twins and starting your app, run an Arga validation against your local deployment (exposed via a tunnel like ngrok or Cloudflare Tunnel) to get automated browser-level testing with twins backing every integration.
Use twins in CI
Use twins in CI
You can provision twins in a CI pipeline by calling the API directly or running
npx arga-wizard non-interactively. Set ARGA_API_KEY as a secret and the wizard will skip the key prompt.Keep your .gitignore clean
Keep your .gitignore clean
Add these to your
.gitignore:
