MainSDK
Search⌘K
How-to

What MainSDK covers

A map from the needs of a modern app to the MainSDK interfaces, drivers and status that cover them, plus what MainSDK leaves out on purpose.

Updated 2026-10-28

Use this page to find which interface covers a need, which drivers sit behind it and how far along it is. It is built from the interface catalog, so every row names a real interface and its real drivers. Where a need has no catalog row yet, the row says so.

Identity and sign-in

NeedInterfaceDriversStatusNotes
Sign-in with passkeys, social, company SSO or WhatsApp codes, and safe sessionsauthgithub, clerk, auth0, better-auth, workos, supabase, localPlanned for 0.3Passkeys by default. SAML, OIDC and SCIM are in the same interface. Native passkeys are planned for a later milestone.
Confirm a phone, an email or an identityverifybird, twilio-verify, digilocker, onfido, personaPlanned (milestone)No spec yet.
Wallet sign-inauth with a wallet methodWallet driverPlanned for 0.7Spec web3-ready. The catalog has no wallet driver yet. See Wallets and agent payments.

Access and policy

NeedInterfaceDriversStatusNotes
Decide who can do what to which recordaccesscedar, opa, openfga, spicedb, cerbos, permit, oso, avpPlanned for 0.3Deny by default. Lists are filtered in the database.
Decide sensitive calls in process from policies in gitpolicycedar, opaPlanned for 0.2Observe, warn and enforce modes.

Data

NeedInterfaceDriversStatusNotes
Private records, stored in the owner's regiondbpostgres, neon, supabase, sqlitePlanned for 0.3sqlite is for local use only. Prisma and Drizzle work through adapters.
Small values and cached results with an expirykvupstash, redis, vercel-runtime-cache, cloudflare-kvPlanned (milestone)No spec yet.
Search and vector searchsearchtypesense, meilisearch, algolia, pgvectorPlanned (milestone)No spec yet. Results are limited to the person searching.
Runtime settings without a deployconfigfiles, vercel-global-config, aws-appconfig, cloudflare-kvPlanned for 0.2Typed against a schema.

Files and uploads

NeedInterfaceDriversStatusNotes
Upload files, private to their owner and scannedfilesgetqr, s3, uploadthing, vercel-blob, localPlanned for 0.3s3 also covers R2, MinIO and B2. See Upload files.
Private, expiring share links and QR codessharegetqrPlanned for 0.3Always getqr.id (ADR-0009).
Links that open the right screen on web, Android and iOSlinksgetqrPlanned (milestone)No spec yet.
Resize images, transcode videomediagetqr, cloudinary, muxPlanned (milestone)No spec yet.
Render and sign PDFspdfbuiltin, docraptor, documensoPlanned (milestone)No spec yet.
Protected files that can be revokedprotecttaps-node, taps-hosted, sovedocsPlanned for 1.6Stability experimental.

Payments

NeedInterfaceDriversStatusNotes
Cards and subscriptions on a hosted checkoutpaystripe, razorpay, paddle, localPlanned for 0.3No card data in your app. Routed by market.
UPI in IndiapayrazorpayPlanned for 0.3payments: { driver: razorpay, methods: [upi, cards] } in the India overlay.
Agent payments inside an agent budgetpay with an agent-payment driverDriverPlanned for 0.7Spec web3-ready. Not yet a catalog call.
Usage meteringmeterstripe-meters, lagoPlanned (milestone)No spec yet.

Email, notifications and WhatsApp

NeedInterfaceDriversStatusNotes
Transactional and marketing emailemailresend, ses, local, postmark, bird, smtpPlanned for 0.3One-click unsubscribe, no tracking pixels by default.
Push, WhatsApp, SMS and email with preferencesnotifywhatsapp-cloud, bird, msg91, twilio, local, fcm, apns, expo, resend, ses, onesignalPlanned for 0.3WhatsApp only with recorded consent and approved templates. Push through FCM, APNs and Expo is planned for milestone 1.1.

Realtime

NeedInterfaceDriversStatusNotes
Live updates to connected clientsrealtimepusher, ably, supabase-realtimePlanned (milestone)No spec yet. Collaboration and presence come later.

AI and LLMs

NeedInterfaceDriversStatusNotes
Call a model with keys out of code, spend limits per user and an auditaibedrock, anthropic, openai, gateway, localPlanned for 0.3Streaming, typed output, spend limits and the prompt-injection check are in the spec.
EmbeddingsaiSame driversPlanned for 0.3ai.embed().
Tools a model may callactionmcp, http, server-action, cliPlanned for 0.3ai.tool() only takes actions declared with action().
Budgets, approvals and a kill switch for app agentsSpec agent-governanceNonePlanned for 0.3A main.yaml key, not an interface in the catalog. See Agents with an identity, a budget and approvals.

MCP server and client

NeedInterfaceDriversStatusNotes
Expose actions as MCP toolsactionmcp, http, server-action, cliPlanned for 0.3OAuth 2.1 on the endpoint, signed tool descriptions, a person's yes for destructive actions.
Call other MCP servers from your appSpec mcp-clientNonePlanned for 0.3mcp.client(name), stability experimental. No catalog row yet.

Background jobs, workflows and webhooks

NeedInterfaceDriversStatusNotes
Events and background jobs that retry and never run twicejobsinngest, vercel-queues, local, trigger-dev, sqsPlanned for 0.3trigger-dev and sqs are deferred to the driver kit. Multi-step workflows as a separate interface are not in the catalog.
Send and receive signed webhookswebhooksbuiltin, svixPlanned for 0.3Replays older than 5 minutes are refused.

Feature flags, analytics and i18n

NeedInterfaceDriversStatusNotes
Feature flags per user or marketflagsopenfeature, posthog, vercel-flagsPlanned (milestone)No spec yet. Targeting stays in your tool.
Product analytics with consentanalyticsposthog, plausible, google-analytics, segment, mainsdkPlanned (milestone)No spec yet.
Active users by country and versionanalytics (analytics.query)builtinPlanned for 0.3 (spec analytics)Folded into analytics (ADR-0031).
Translation and locale formatsi18nfiles, tolgee, crowdin, lokalise, ai-draftPlanned (milestone)No spec yet. See Languages and formats.
Coarse location hintgeoplatform-headers, mapbox, google-mapsPlanned (milestone)Never used for access.
Update prompts and version blockingupdatesexpo-updates, app-store, google-play, tauriPlanned (milestone)No spec yet.
Feedback and support ticketsfeedbackbuiltin, intercom, zendesk, plainPlanned (milestone)No spec yet.

Observability and audit

NeedInterfaceDriversStatusNotes
Logs with redaction, a tamper-evident audit log, OpenTelemetry exportlogterminal, otel, mainsdkPlanned for 0.2Nothing goes to MainSDK Cloud without login and opt-in.
Health checks and a status pagestatusbuiltin, providerPlanned (milestone)No spec yet.
Backups and timed restore drillsbackupneon-pitr, supabase-pitr, pgbackrest, aws-backup, object-lockPlanned for 1.2The provider runs backups, not MainSDK.

Secrets, keys and security

NeedInterfaceDriversStatusNotes
Provider keys from your secrets manager, never from codesecretsvault, aws-secrets-manager, gcp-secret-manager, azure-key-vault, doppler, infisical, env, localPlanned for 0.2A key in code fails the check.
Encryption keys, per-user keys and crypto-erasurekeysaws-kms, gcp-kms, azure-keyvault, vault-transit, localPlanned for 0.3Chain signing profiles are spec web3-ready, planned for 0.7.
Encrypt fields, sign, hash passwordscryptocloud-kms, vault-transit, libsodiumPlanned (milestone)No spec yet.
Allow outbound calls only to declared hostsnetworkbuiltinPlanned for 0.3Deny by default.
Rate limits, locks and quotaslimitsbuiltin, upstash, arcjetPlanned (milestone)No spec yet.

Privacy and erasure

NeedInterfaceDriversStatusNotes
Export or erase a person's data, record consentprivacybuiltinPlanned for 0.3Erasure is confirmed by every driver, with a signed record.

Testing

NeedInterfaceDriversStatusNotes
Test against fakes of every interface, control time, inject outagestestingfakesPlanned for 0.4createTestApp() from @mainsdk/testing. See Testing.

Deploy on Vercel

MainSDK is a library, not a host, so there is no deploy interface. Vercel is covered by guidance and by drivers: vercel-queues for jobs, vercel-global-config for config, vercel-runtime-cache for kv, vercel-flags for flags and vercel-blob for files. See Deploy on Vercel.

Mobile (Expo)

NeedInterfaceDriversStatusNotes
An Expo app with sign-in, consent and pushSpec expo-adapterexpo, fcm, apns (for notify), expo-updates (for updates)Planned for 1.1Imports from mainsdk/expo. An adapter, not an interface.

Web3

NeedInterfaceDriversStatusNotes
Wallet sign-in, token gates, chain signing keys, agent paymentsSpec web3-ready across auth, access, keys and payChain and wallet driversPlanned for 0.7Stability experimental. No Web3 interface in the catalog. Chains are drivers (ADR-0011). See Wallets and agent payments.

Not covered, by design

  • Hosting. MainSDK runs inside your app. You deploy on Vercel or anywhere else.
  • UI components. MainSDK ships no design system. The only components are <Upload/>, <ShareBar/> and <QRCode/> from @getqr/react.
  • ORM design. db enforces owner scope, labels and regions. You keep Prisma or Drizzle through adapters; MainSDK does not replace them.
  • A CMS. There is no content-management interface.
  • Chain RPC, indexing and contract tooling. Use your own library through raw() (ADR-0011).
  • Custody and token issuance. MainSDK never holds funds or private keys and never issues tokens.
  • Running your backups. The provider does that; backup only declares and proves it.

Covered by escape hatch

When a need falls outside an interface, raw() returns the provider's own client: auth.raw(), db.raw(), files.raw(), pay.raw(), email.raw(), ai.raw() and access.raw(). Every use is logged and listed by mainsdk check, so you always know where your app depends on one provider.

Next

Open questions

Was this page helpful?

↑↓ moveEnter openEsc close

Not decided yet