# Emulate — Plain-Language Wiki > vercel-labs/emulate runs real, stateful local copies of external APIs (GitHub, Google, Slack, Stripe, and more) so your app can work offline, in CI, and in sandboxes without ever calling the real internet. Think of it as a recording studio that plays back exactly what each cloud service would say. This is a Grok-Wiki source-grounded repository wiki. Use the complete Markdown link when an agent needs the full repo context. ## Context Links - [Complete Markdown wiki](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/llms-full.txt) - [Complete Markdown alias](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d.md) - [Human interactive wiki](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d) - [GitHub repository](https://github.com/vercel-labs/emulate) ## Repository - Repository: vercel-labs/emulate - Generated: 2026-05-24T18:22:50.807Z - Updated: 2026-05-24T18:24:12.243Z - Runtime: Claude Code - Format: Explain Like I'm 5 - Pages: 8 ## Pages - [Explain It Simply — What Emulate Does](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/01-explain-it-simply-what-emulate-does.md): Plain-language explanation of the problem emulate solves, the one analogy to hold in your head, and the three ideas you must not forget before reading anything else. - [Telling Emulate What World to Create — Seed Config](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/02-telling-emulate-what-world-to-create-seed-config.md): How the YAML/JSON seed file pre-populates users, repos, OAuth clients, messages, and tokens before any test runs, and why this makes tests deterministic without touching the real internet. - [The Engine Under the Hood — @emulators/core](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/03-the-engine-under-the-hood-emulators-core.md): What the shared core package actually provides: the in-memory Store (collections of entities), the Hono HTTP server, auth middleware, OAuth helpers, webhook dispatcher, and pagination — the pieces every service plugin relies on. - [The Registry — How Each Service Gets Wired In](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/04-the-registry-how-each-service-gets-wired-in.md): How registry.ts acts as the master switchboard: each ServiceEntry knows how to lazy-load its plugin package, what endpoints it covers, what default auth fallback to use, and what starter config to generate with `emulate init`. - [Using Emulate in Code — The Programmatic API](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/05-using-emulate-in-code-the-programmatic-api.md): How `createEmulator()` in api.ts lets test suites spin up a single service, get its URL, call `reset()` between tests, and `close()` when done — without touching the CLI at all. - [OAuth & Identity Services — Google, Apple, Microsoft, Okta, Clerk](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/06-oauth-identity-services-google-apple-microsoft-okta-clerk.md): The five emulators that pretend to be identity providers: what OAuth/OIDC flows each one covers, how the auto-login fallback bypasses the browser consent screen in CI, and what each package lives in. - [Platform & Infrastructure Services — GitHub, Vercel, Slack, AWS, Stripe, Resend, MongoDB Atlas](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/07-platform-infrastructure-services-github-vercel-slack-aws-stripe-resend-mongodb-atlas.md): The seven emulators covering developer platforms and cloud infrastructure: what REST surface area each one reproduces, how webhooks are dispatched in-process, and what the examples directory shows about wiring them into a Next.js app. - [The One Map to Keep — Core Ideas Recapped](https://grok-wiki.com/public/wiki/vercel-labs-emulate-ddc6091d171d/pages/08-the-one-map-to-keep-core-ideas-recapped.md): A single-page recap: the core idea in one sentence, the three moving parts every developer must know (Store, ServicePlugin, registry entry), the analogy that holds, important caveats about what emulate is NOT, and where to go next. ## Source Files - `emulate.config.example.yaml` - `examples/oauth/README.md` - `examples/stripe-checkout/README.md` - `packages/@emulators/apple/src` - `packages/@emulators/aws/src` - `packages/@emulators/clerk/src` - `packages/@emulators/core/src/__tests__/auth.test.ts` - `packages/@emulators/core/src/__tests__/store.test.ts` - `packages/@emulators/core/src/index.ts` - `packages/@emulators/core/src/middleware/auth.ts` - `packages/@emulators/core/src/persistence.ts` - `packages/@emulators/core/src/plugin.ts` - `packages/@emulators/core/src/server.ts` - `packages/@emulators/github/src` - `packages/@emulators/google/src` - `packages/@emulators/microsoft/src` - `packages/@emulators/mongoatlas/src` - `packages/@emulators/okta/src` - `packages/@emulators/resend/src` - `packages/@emulators/slack/src` - `packages/@emulators/stripe/src` - `packages/@emulators/vercel/src` - `packages/emulate/package.json` - `packages/emulate/src/__tests__/api.test.ts` - `packages/emulate/src/api.ts` - `packages/emulate/src/base-url.ts` - `packages/emulate/src/commands/init.ts` - `packages/emulate/src/commands/list.ts` - `packages/emulate/src/commands/start.ts` - `packages/emulate/src/portless.ts` - `packages/emulate/src/registry.ts` - `README.md` - `skills/apple/SKILL.md` - `skills/google/SKILL.md`