Role-based access — built in
Admin, QA, and Viewer roles enforced via Supabase RLS. QAs can author and run; Viewers can read; Admins handle credentials and integrations. Invite via email, single-sign-on on the roadmap.
Operators running white-label exchange software in production need more than test scripts. They need isolation, lifecycle controls, and rails that refuse to break things. That's what we ship.
100%
Tenant data isolation
Row-level security at the database, scoped storage buckets per workspace, audit log per trigger.
3
Capture buckets, 3 retention windows
Screenshots, network bodies, HAR — each with its own private bucket and TTL.
0
Lines of bespoke code per tenant
One scenario, every white-label. Tenant-scoped credentials, env-scoped secrets.
Everything below is core to the platform — not an upsell. The enterprise plan adds SLA, dedicated support, and SSO.
Admin, QA, and Viewer roles enforced via Supabase RLS. QAs can author and run; Viewers can read; Admins handle credentials and integrations. Invite via email, single-sign-on on the roadmap.
Scenarios marked prod_safe: false refuse to run against production tenants. Destructive actions like api_initiate_withdraw are blocked unless both the WL flag prod_trading_test_enabled AND scenario.prod_safe are set. No accidents.
Every action in the runner is documented, schema-validated, and surfaced inline in the editor. Schema changes are coordinated across runner + panel + edge functions. No silent drift.
Run events stream over Supabase Realtime. The live console rebuilds in <50ms as each step lands. No log tailing, no SSH into runners.
Screenshots and request bodies upload only when something interesting happens — failures, key milestones, or explicit ui_screenshot. Storage expires on a schedule. Costs don't surprise you.
Twilio inbox webhook stores incoming SMS in sms_inbox. auth_wait_sms polls it for the OTP, with a regex you control. Authenticator-only? auth_solve_totp generates the 6-digit code from the stored secret. Either way: unattended.
Bring us a tenant. We'll bootstrap it, write the first scenario, and have a scheduled smoke check running before the call ends.