MainSDK
Search⌘K
Community

Roadmap

Milestones 0.1 to 0.5 with their exit criteria, read from GitHub milestones.

Planned for 0.5

Status Status is where the work is: Planned (in a milestone, not started), Building (tickets in progress), Preview (usable, may change), then the stability it ships at.

Stability The promise an interface ships with.

  • Stable Follows semantic versioning; breaking changes need a new major, 12 months of overlap and a codemod.
  • Beta Usable in production; may change before it becomes stable.
  • Experimental May change or go away; needs an explicit opt-in in main.yaml.
Stability levels
Updated 2026-10-28

Where MainSDK is going, one milestone at a time. Each heading links to its GitHub milestone, which is the source of truth for scope and progress.

Milestone 0.1

Exit criteria: every acceptance criterion of these specs passes.

  • The main.yaml manifest, overlays and inheritance (main-yaml)
  • Repository foundation, signed builds and security policy (repo-foundation)
  • Versioned contracts from one TypeSpec source (versioned-contracts)

Milestone 0.2

Exit criteria: every acceptance criterion of these specs passes.

  • Framework adapters for Next.js, Hono, Express, Node workers, Prisma and Drizzle (adapters)
  • The core CLI loop - init, sync, check, info, logs and dev (cli-core)
  • The config and secrets interfaces (config-secrets)
  • AI-ready errors with stable codes and problem details (errors)
  • Inbound protection - secure headers, CSP nonces, CSRF, CORS, cookies and security.txt (inbound-protection)
  • Logs, audit log, redaction and the telemetry data contract (log-telemetry)
  • The policy interface with a built-in TypeScript Cedar engine and an OPA driver (policy)
  • Safe HTML from users and from model output with sanitize (sanitize)
  • One native schema and safe parsers for app data (schema)
  • The seal - a signed build record served at /.well-known/mainsdk.json and checked at boot (seal)

Milestone 0.3

Exit criteria: every acceptance criterion of these specs passes.

  • Access control on any model and any engine (access)
  • Agents with an identity, a budget and a human in the loop (agent-governance)
  • Private, limited and audited model calls (ai)
  • Product events, metrics and usage, private by default (analytics)
  • API keys an app issues to its own customers (apikeys)
  • A generated OpenAPI document and typed client for the app's actions (app-api)
  • App permissions for disk, system facts and programs on the server (app-permissions)
  • Sign-in and sessions for web apps (auth)
  • Bot defence and abuse signals on the doors bots hammer (bot-defence)
  • One runtime - one context, one call shape, shared primitives and the catalog as the single source (cohesion)
  • Connections that let app agents act for a person in other services (connections)
  • Database queries that are bounded, pooled and watched for slow and repeated calls (db-queries)
  • Deletes you can undo, updates that never overwrite, and jobs that commit with the data (db-writes)
  • Data by owner, label and region (db)
  • A beautiful SDK - one design language for the API, the CLI, the docs, the README and every error (design-language)
  • Eject to plain provider code (eject)
  • Email and notifications that respect people (email-notify)
  • Plans and entitlements for each tenant (entitlements)
  • A working, checked app in under thirty minutes (fast-start)
  • Files and share links through getqr.id (files-share)
  • Feature flags on live config, with stable rollout and targeting (flags)
  • Envelope encryption with keys in a cloud KMS (keys)
  • Small values with an expiry, scoped to the tenant (kv)
  • Rate limits, quotas and locks with Retry-After, failing by declared policy (limits)
  • Every action is also a tool (mcp-actions)
  • Calls to other MCP servers that stay inside the wall (mcp-client)
  • Usage metering per tenant, API key and feature, idempotent and exportable to pay (meter)
  • Network permissions with an egress allowlist (network)
  • Observe every SDK decision and side effect on diagnostics channels (observe)
  • Cursor pagination for every list call (pagination)
  • Payments with hosted checkout and verified webhooks (pay)
  • Data labels, retention, export and erasure (privacy-lifecycle)
  • Live updates to browsers over SSE, checked per channel and tenant (realtime)
  • SDK conventions for cancellation, error codes, dry runs, experimental exports, changes and fuzzing (sdk-conventions)
  • Secret rotation with overlap windows, live client swaps and age limits (secret-rotation)
  • Security events in OCSF, with in-app detections, streamed to the app's own SIEM (security-events)
  • Tenants, with isolation enforced in every interface (tenancy)
  • Webhooks, events and jobs that never double-apply (webhooks-jobs)
  • Durable workflows that resume after a crash and never redo a finished step (workflows)

Milestone 0.4

Exit criteria: every acceptance criterion of these specs passes.

  • Agent experience first - the mainsdk MCP server, machine fixes, one inner-loop command, typed declarations and recipes (agent-experience)
  • Image generation and editing, with disclosure metadata and C2PA content credentials on every AI image (ai-image)
  • Images, PDFs, audio and video frames as parts of a prompt, read through files, limited and redacted (ai-multimodal)
  • Model routing - fallback across providers, prompt caching, a tenant-safe response cache, batch jobs and local JSON repair (ai-routing)
  • The agent loop with ai.run - tools that are actions, bounded steps and budget, approval, handoff, delegation and typed output (ai-run)
  • Speech and transcription, streamed, with consented voice clones and disclosed AI audio (ai-speech)
  • Alerts that reach people - routes, dedupe, grouping, quiet hours and escalation through notify drivers (alerts)
  • The local app registry, mainsdk apps and the app link between declared peer apps (app-registry)
  • Sign-in routes mounted by the adapters and a zero-dependency browser client for passkeys, sign-in links, WhatsApp codes, step-up and sign-out (auth-client)
  • Shared context - consent-gated, first-party events and attributes between peer apps on one host, with minimisation, retention and tenant isolation (context)
  • Database migrations that never lock a busy table or break the running version (db-migrations)
  • Deploy config from main.yaml for Vercel, Cloudflare, Fly and Docker, with serverless schedules, a build preflight and environment diffs (deploy)
  • Read PDFs, Office files and scans into text, tables and layout, and render PDFs, through one documents interface (documents)
  • Engagement journeys that bring people back without dark patterns (engagement)
  • Error reporting in the app - every unhandled error captured, grouped by a stable fingerprint, alerted when new or spiking, and sent to OTLP or Sentry (error-reporting)
  • Exfiltration guard on outbound calls and responses, with canary records and canary keys (exfiltration-guard)
  • Never in the request path, fail static and performance budgets (fail-static)
  • Feeds with follows, timelines that fan out on write and on read, and trending, without endless scroll (feeds)
  • Health probes, graceful shutdown and SLOs with error-budget burn (health)
  • Safe HTTP caching and a tenant-keyed server cache - private by default, public only when declared, ETags, stampede protection and fail-static reads (http-cache)
  • Messages, plurals and formats for every locale, negotiated per request, with AI drafts a person approves (i18n)
  • Import files and pull from outside sources into the app's data (imports)
  • Incident controls - kill switch, read-only mode and signing everyone out (incident-controls)
  • A simulation harness for connected intelligence - fake clock, injected attacks and resource curves, a multi-app host and e2e coverage (intelligence-sim)
  • Application licensing in the app - signed licences verified offline, licence.require, grace, revocation and refresh (licence)
  • Invite, deep and sign-in links through getqr.id (links)
  • Main 27 baseline, the Main mark and interface stability levels (main27-baseline)
  • Images, video and audio processed as workflows, with output through files and metadata stripped by default (media)
  • Agent memory that stays in its tenant and app, with provable forgetting (memory)
  • Moderation with reports, a review queue, decisions, appeals and statements of reasons, holding content before it publishes (moderate)
  • Neighbours - a host signal bus and three fixed asks between declared peer apps on one machine (neighbours)
  • TCP and UDP sockets through the network chokepoint, with listen permissions, TLS by default and an in-process loopback for tests (net-sockets)
  • Norms - a deterministic, dependency-free learner of what normal looks like, with anomaly signals out (norms)
  • The operate surface - the app's signals, status, norms and playbooks as an MCP server on stdio and loopback, with an A2A-style agent card (ops-mcp)
  • Worker threads, process pools and cluster - CPU work and HTTP servers across cores, declared, checked and carrying the tenant (parallelism)
  • Playbooks - declared reactions to signals, with dry-run, approval, an audit trail and automatic rollback (playbooks)
  • A portable core on WinterTC APIs, with Node-only code in runtime adapters (portable-core)
  • The protect interface on TAPS - protected files, licences, release on time, delegation and the ledger, with a local driver in core (protect-taps)
  • Reaction safety - blast radius, rate limits, no loops between apps, tenancy and what is never automated (reaction-safety)
  • Two-way realtime over WebSocket, with binary streams and bounded queues (realtime-sockets)
  • Resource pressure - CPU, event-loop delay and memory watched in the app, with optional work paused or shed first (resources)
  • Run untrusted and AI-written code in a sandbox through drivers, with limits, no secrets and the app's network allowlist (sandbox)
  • Search with facets, highlighting and typo tolerance, filtered by access and tenant inside the query (search)
  • Seed data, fixtures and preview environments (seed-preview)
  • Signals - a typed, signed, local-first bus for machine and app state, with severity, TTL and dedupe (signals)
  • Testing kit, chaos drills, conformance suite, parity vectors and driver kit (testing-kit)
  • Published STRIDE threat models per interface and driver class (threat-models)
  • Safe delivery of packs and driver metadata with TUF (tuf-delivery)

Milestone 0.5

Exit criteria: every acceptance criterion of these specs passes.

  • The agent benchmark - the same coding agent builds three apps with and without MainSDK, and the starter templates it uses (agent-benchmark)
  • Eval sets per AI feature, a regression gate in CI, the result in the seal, and online sampling in the app (ai-evals)
  • Local and self-hosted models through Ollama, llama.cpp and OpenAI-compatible servers, for privacy and offline development (ai-local)
  • Community launch, open governance and the bug bounty (community-launch)
  • The deps gate in mainsdk check - hallucinated, brand-new and look-alike packages, known advisories, licences and install scripts, from every lockfile (dependency-check)
  • Docs for every release, with a version switcher (docs-versions)
  • Agent memory learning, consolidation, relations, portability and provider drivers (memory-advanced)
  • AI migration skill and mainsdk adopt (migration-skill)
  • Public beta, docs site, quick starts and signed 0.x releases (public-beta)
  • mainsdk upgrade - every MainSDK package moved together, upgrade notes, codemods and main.yaml migrations on a branch, and a security-release check (upgrade)

The roadmap is read from GitHub milestones; there is no separate status file.

Was this page helpful?

↑↓ moveEnter openEsc close

Not decided yet