[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-inngest-inngest-setup":3,"mdc-6v2hux-key":41,"related-org-inngest-inngest-setup":4715,"related-repo-inngest-inngest-setup":4877},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":36,"sourceUrl":39,"mdContent":40},"inngest-setup","build durable TypeScript workflows","Use when adding durable execution to a TypeScript project — building retry-safe webhook handlers, background jobs that survive crashes, scheduled tasks, or long-running workflows that outlive a single request. Covers Inngest SDK installation, client config, environment variables, serve endpoints (Next.js, Express, Hono, Fastify), connect-as-worker mode, and the local dev server.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"inngest","Inngest","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Finngest.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Backend","backend","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"TypeScript","typescript",26,"https:\u002F\u002Fgithub.com\u002Finngest\u002Finngest-skills","2026-07-12T07:36:42.004122",null,5,[29,30,31,32,33,34,35],"agent-skill-repository","agent-skills","agentic-skills","ai-agents","claude-code-skills","cursor-skills","openclaw-skills",{"repoUrl":24,"stars":23,"forks":27,"topics":37,"description":38},[29,30,31,32,33,34,35],"Agent Skills for building with Inngest","https:\u002F\u002Fgithub.com\u002Finngest\u002Finngest-skills\u002Ftree\u002FHEAD\u002Fskills\u002Finngest-setup","---\nname: inngest-setup\ndescription: Use when adding durable execution to a TypeScript project — building retry-safe webhook handlers, background jobs that survive crashes, scheduled tasks, or long-running workflows that outlive a single request. Covers Inngest SDK installation, client config, environment variables, serve endpoints (Next.js, Express, Hono, Fastify), connect-as-worker mode, and the local dev server.\n---\n\n# Inngest Setup\n\nThis skill sets up Inngest in a TypeScript project from scratch, covering installation, client configuration, connection modes, and local development.\n\n> **These skills are focused on TypeScript.** For Python or Go, refer to the [Inngest documentation](https:\u002F\u002Fwww.inngest.com\u002Fllms.txt) for language-specific guidance. Core concepts apply across all languages.\n\n## Prerequisites\n\n- Node.js 18+ (Node.js 22.4+ recommended for WebSocket support)\n- TypeScript project\n- Package manager (npm, yarn, pnpm, or bun)\n\n## Step 1: Install the Inngest SDK\n\nInstall the `inngest` npm package in your project:\n\n```bash\nnpm install inngest\n# or\nyarn add inngest\n# or\npnpm add inngest\n# or\nbun add inngest\n```\n\n## Step 2: Create an Inngest Client\n\nCreate a shared client file that you'll import throughout your codebase:\n\n```typescript\n\u002F\u002F src\u002Finngest\u002Fclient.ts\nimport { Inngest } from \"inngest\";\n\nexport const inngest = new Inngest({\n  id: \"my-app\" \u002F\u002F Unique identifier for your application (hyphenated slug)\n});\n\u002F\u002F IMPORTANT: v4 defaults to Cloud mode. For local dev, set INNGEST_DEV=1 env var.\n\u002F\u002F Without it, your serve endpoint will return 500 (\"In cloud mode but no signing key\").\n\u002F\u002F In production, set INNGEST_SIGNING_KEY (required for Cloud mode).\n```\n\n### Key Configuration Options\n\n- **`id`** (required): Unique identifier for your app. Use a hyphenated slug like `\"my-app\"` or `\"user-service\"`\n- **`eventKey`**: Event key for sending events (prefer `INNGEST_EVENT_KEY` env var)\n- **`env`**: Environment name for Branch Environments\n- **`isDev`**: Force Dev mode (`true`) or Cloud mode (`false`). **v4 defaults to Cloud mode**, so set `INNGEST_DEV=1` env var for local development. **Never hardcode `isDev: true` in source code** — it will silently break in production. Always use the env var.\n- **`signingKey`**: Signing key for production (prefer `INNGEST_SIGNING_KEY` env var). Moved from `serve()` to client in v4\n- **`signingKeyFallback`**: Fallback signing key for key rotation (prefer `INNGEST_SIGNING_KEY_FALLBACK` env var)\n- **`baseUrl`**: Custom Inngest API base URL (prefer `INNGEST_BASE_URL` env var)\n- **`logger`**: Custom logger instance (e.g. winston, pino) — enables `logger` in function context\n- **`middleware`**: Array of middleware (see **inngest-middleware** skill)\n\n### Typed Events with eventType()\n\n```typescript\nimport { Inngest, eventType } from \"inngest\";\nimport { z } from \"zod\";\n\nconst signupCompleted = eventType(\"user\u002Fsignup.completed\", {\n  schema: z.object({\n    userId: z.string(),\n    email: z.string(),\n    plan: z.enum([\"free\", \"pro\"])\n  })\n});\n\nconst orderPlaced = eventType(\"order\u002Fplaced\", {\n  schema: z.object({\n    orderId: z.string(),\n    amount: z.number()\n  })\n});\n\nexport const inngest = new Inngest({ id: \"my-app\" });\n\n\u002F\u002F Use event types as triggers for full type safety:\ninngest.createFunction(\n  { id: \"handle-signup\", triggers: [signupCompleted] },\n  async ({ event }) => {\n    event.data.userId; \u002F* typed as string *\u002F\n  }\n);\n\n\u002F\u002F Use event types when sending events:\nawait inngest.send(\n  signupCompleted.create({\n    userId: \"user_123\",\n    email: \"user@example.com\",\n    plan: \"pro\"\n  })\n);\n```\n\n### Environment Variables Setup\n\nSet these environment variables in your `.env` file or deployment environment:\n\n```env\n# Required for production\nINNGEST_EVENT_KEY=your-event-key-here\nINNGEST_SIGNING_KEY=your-signing-key-here\n\n# Force dev mode during local development\nINNGEST_DEV=1\n\n# Optional - custom dev server URL (default: http:\u002F\u002Flocalhost:8288)\nINNGEST_BASE_URL=http:\u002F\u002Flocalhost:8288\n```\n\n**⚠️ Common Gotcha**: Never hardcode keys in your source code. Always use environment variables for `INNGEST_EVENT_KEY` and `INNGEST_SIGNING_KEY`.\n\n## CRITICAL: Enable Dev Mode for Local Development\n\n**Before creating serve endpoints or connecting workers, ensure dev mode is enabled.** Without it, Inngest defaults to Cloud mode and your endpoints will fail with 500 errors.\n\nAdd to your `.env` file (or your dev script in package.json):\n\n```env\nINNGEST_DEV=1\n```\n\nOr in `package.json` scripts:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"INNGEST_DEV=1 tsx --watch src\u002Fserver.ts\"\n  }\n}\n```\n\n**Symptoms of missing INNGEST_DEV:**\n- GET `\u002Fapi\u002Finngest` returns `{\"code\":\"internal_server_error\"}`\n- Server logs: \"In cloud mode but no signing key found\"\n- Dev server can't sync with your app\n\n## Step 3: Choose Your Connection Mode\n\nInngest supports two connection modes:\n\n### Mode A: Serve Endpoint (HTTP)\n\nBest for serverless platforms (Vercel, Lambda, etc.) and existing APIs.\n\n### Mode B: Connect (WebSocket)\n\nBest for container runtimes (Kubernetes, Docker) and long-running processes.\n\n## Step 4A: Serving an Endpoint (HTTP Mode)\n\nCreate an API endpoint that exposes your functions to Inngest:\n\n```typescript\n\u002F\u002F For Next.js App Router: src\u002Fapp\u002Fapi\u002Finngest\u002Froute.ts\nimport { serve } from \"inngest\u002Fnext\";\nimport { inngest } from \"..\u002F..\u002F..\u002Finngest\u002Fclient\";\nimport { myFunction } from \"..\u002F..\u002F..\u002Finngest\u002Ffunctions\";\n\nexport const { GET, POST, PUT } = serve({\n  client: inngest,\n  functions: [myFunction]\n});\n```\n\n```typescript\n\u002F\u002F For Next.js Pages Router: pages\u002Fapi\u002Finngest.ts\nimport { serve } from \"inngest\u002Fnext\";\nimport { inngest } from \"..\u002F..\u002Finngest\u002Fclient\";\nimport { myFunction } from \"..\u002F..\u002Finngest\u002Ffunctions\";\n\nexport default serve({\n  client: inngest,\n  functions: [myFunction]\n});\n```\n\n```typescript\n\u002F\u002F For Express.js\nimport express from \"express\";\nimport { serve } from \"inngest\u002Fexpress\";\nimport { inngest } from \".\u002Finngest\u002Fclient\";\nimport { myFunction } from \".\u002Finngest\u002Ffunctions\";\n\nconst app = express();\napp.use(express.json({ limit: \"10mb\" })); \u002F\u002F Required for Inngest, increase limit for larger function state\n\napp.use(\n  \"\u002Fapi\u002Finngest\",\n  serve({\n    client: inngest,\n    functions: [myFunction]\n  })\n);\n```\n\n**🔧 Framework-Specific Notes**:\n\n- **Express**: Must use `express.json({ limit: \"10mb\" })` middleware to support larger function state.\n- **Fastify**: Use `fastifyPlugin` from `inngest\u002Ffastify`\n- **Cloudflare Workers**: Use `inngest\u002Fcloudflare`\n- **AWS Lambda**: Use `inngest\u002Flambda`\n- For all other frameworks, check the `serve` reference here: https:\u002F\u002Fwww.inngest.com\u002Fdocs-markdown\u002Flearn\u002Fserving-inngest-functions\n\n**⚠️ v4 Change:** Options like `signingKey`, `signingKeyFallback`, and `baseUrl` are now configured on the `Inngest` client constructor, not on `serve()`. The `serve()` function only accepts `client`, `functions`, and `streaming`.\n\n**⚠️ Common Gotcha**: Always use `\u002Fapi\u002Finngest` as your endpoint path. This enables automatic discovery. If you must use a different path, you'll need to configure discovery manually with the `-u` flag.\n\n## Step 4B: Connect as Worker (WebSocket Mode)\n\nFor long-running applications that maintain persistent connections:\n\n```typescript\n\u002F\u002F src\u002Fworker.ts\nimport { connect } from \"inngest\u002Fconnect\";\nimport { inngest } from \".\u002Finngest\u002Fclient\";\nimport { myFunction } from \".\u002Finngest\u002Ffunctions\";\n\n(async () => {\n  const connection = await connect({\n    apps: [{ client: inngest, functions: [myFunction] }],\n    instanceId: process.env.HOSTNAME, \u002F\u002F Unique worker identifier\n    maxWorkerConcurrency: 10 \u002F\u002F Max concurrent steps\n  });\n\n  console.log(\"Worker connected:\", connection.state);\n\n  \u002F\u002F Graceful shutdown handling\n  await connection.closed;\n  console.log(\"Worker shut down\");\n})();\n```\n\n**Requirements for Connect Mode**:\n\n- Node.js 22.4+ (or Deno 1.4+, Bun 1.1+) for WebSocket support\n- Long-running server environment (not serverless)\n- `INNGEST_SIGNING_KEY` and `INNGEST_EVENT_KEY` for production\n- Set the `appVersion` parameter on the `Inngest` client for production to support rolling deploys\n\n**v4 Connect Changes:**\n\n- **Worker thread isolation** is enabled by default — WebSocket connections execute in a worker thread to prevent event loop starvation. Set `isolateExecution: false` to use a single process (or `INNGEST_CONNECT_ISOLATE_EXECUTION=false`)\n- **`rewriteGatewayEndpoint`** callback has been replaced with the `gatewayUrl` string option (or `INNGEST_CONNECT_GATEWAY_URL` env var)\n\n## Step 5: Organizing with Apps\n\nAs your system grows, organize functions into logical apps:\n\n```typescript\n\u002F\u002F User service\nconst userService = new Inngest({ id: \"user-service\" });\n\n\u002F\u002F Payment service\nconst paymentService = new Inngest({ id: \"payment-service\" });\n\n\u002F\u002F Email service\nconst emailService = new Inngest({ id: \"email-service\" });\n```\n\nEach app gets its own section in the Inngest dashboard and can be deployed independently. Use descriptive, hyphenated IDs that match your service architecture.\n\n**⚠️ Common Gotcha**: Changing an app's `id` creates a new app in Inngest. Keep IDs consistent across deployments.\n\n## Step 6: Local Development with inngest-cli\n\nStart the Inngest Dev Server for local development:\n\n```bash\n# Auto-discover your app on common ports\u002Fendpoints\nnpx --ignore-scripts=false inngest-cli@latest dev\n\n# Specify your app's URL manually\nnpx --ignore-scripts=false inngest-cli@latest dev -u http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest\n\n# Custom port for dev server\nnpx --ignore-scripts=false inngest-cli@latest dev -p 9999\n\n# Disable auto-discovery\nnpx --ignore-scripts=false inngest-cli@latest dev --no-discovery -u http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest\n\n# Multiple apps\nnpx --ignore-scripts=false inngest-cli@latest dev -u http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest -u http:\u002F\u002Flocalhost:4000\u002Fapi\u002Finngest\n```\n\nThe dev server will be available at `http:\u002F\u002Flocalhost:8288` by default.\n\n### Configuration File (Optional)\n\nCreate `inngest.json` for complex setups:\n\n```json\n{\n  \"sdk-url\": [\n    \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest\",\n    \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Finngest\"\n  ],\n  \"port\": 8289,\n  \"no-discovery\": true\n}\n```\n\n## Environment-Specific Setup\n\n### Local Development\n\n```env\nINNGEST_DEV=1\n# No keys required in dev mode\n```\n\n### Production\n\n```env\nINNGEST_EVENT_KEY=evt_your_production_event_key\nINNGEST_SIGNING_KEY=signkey_your_production_signing_key\n```\n\n### Custom Dev Server Port\n\n```env\nINNGEST_DEV=1\nINNGEST_BASE_URL=http:\u002F\u002Flocalhost:9999\n```\n\nIf your app runs on a non-standard port (not 3000), make sure the dev server can reach it by specifying the URL with `-u` flag.\n\n## Common Issues & Solutions\n\n**Port Conflicts**: If port 8288 is in use, specify a different port: `-p 9999`\n\n**Auto-discovery Not Working**: Use manual URL specification: `-u http:\u002F\u002Flocalhost:YOUR_PORT\u002Fapi\u002Finngest`. If using `--no-discovery` flag, the `-u` flag is **required** — the dev server will not find your app without it.\n\n**Functions Not Showing in Dev Server**: Your app must register with the dev server. This happens automatically when your serve endpoint receives its first request from the dev server. If registration isn't happening: (1) verify `INNGEST_DEV=1` is set, (2) verify the dev server can reach your app URL, (3) try restarting your app while the dev server is running.\n\n**Signature Verification Errors**: Ensure `INNGEST_SIGNING_KEY` is set correctly in production\n\n**WebSocket Connection Issues**: Verify Node.js version 22.4+ for connect mode\n\n**Docker Development**: Use `host.docker.internal` for app URLs when running dev server in Docker\n\n## Next Steps\n\n1. Create your first Inngest function with `inngest.createFunction()`\n2. Test functions using the dev server's \"Invoke\" button\n3. Send events with `inngest.send()` to trigger functions\n4. Deploy to production with proper environment variables\n5. See **inngest-middleware** for adding logging, error tracking, and other cross-cutting concerns\n6. Monitor functions in the Inngest dashboard\n\nThe dev server automatically reloads when you change functions, making development fast and iterative.\n",{"data":42,"body":43},{"name":4,"description":6},{"type":44,"children":45},"root",[46,54,60,86,93,113,119,132,243,249,254,448,455,696,702,1664,1670,1683,1761,1784,1790,1800,1812,1825,1838,1928,1936,1968,1974,1979,1985,1990,1996,2001,2007,2012,2267,2481,2883,2892,2986,3059,3083,3089,3094,3611,3620,3669,3677,3734,3740,3745,3985,3990,4006,4012,4017,4243,4256,4262,4275,4419,4425,4431,4453,4459,4482,4488,4510,4521,4527,4543,4583,4600,4617,4627,4644,4650,4704,4709],{"type":47,"tag":48,"props":49,"children":50},"element","h1",{"id":4},[51],{"type":52,"value":53},"text","Inngest Setup",{"type":47,"tag":55,"props":56,"children":57},"p",{},[58],{"type":52,"value":59},"This skill sets up Inngest in a TypeScript project from scratch, covering installation, client configuration, connection modes, and local development.",{"type":47,"tag":61,"props":62,"children":63},"blockquote",{},[64],{"type":47,"tag":55,"props":65,"children":66},{},[67,73,75,84],{"type":47,"tag":68,"props":69,"children":70},"strong",{},[71],{"type":52,"value":72},"These skills are focused on TypeScript.",{"type":52,"value":74}," For Python or Go, refer to the ",{"type":47,"tag":76,"props":77,"children":81},"a",{"href":78,"rel":79},"https:\u002F\u002Fwww.inngest.com\u002Fllms.txt",[80],"nofollow",[82],{"type":52,"value":83},"Inngest documentation",{"type":52,"value":85}," for language-specific guidance. Core concepts apply across all languages.",{"type":47,"tag":87,"props":88,"children":90},"h2",{"id":89},"prerequisites",[91],{"type":52,"value":92},"Prerequisites",{"type":47,"tag":94,"props":95,"children":96},"ul",{},[97,103,108],{"type":47,"tag":98,"props":99,"children":100},"li",{},[101],{"type":52,"value":102},"Node.js 18+ (Node.js 22.4+ recommended for WebSocket support)",{"type":47,"tag":98,"props":104,"children":105},{},[106],{"type":52,"value":107},"TypeScript project",{"type":47,"tag":98,"props":109,"children":110},{},[111],{"type":52,"value":112},"Package manager (npm, yarn, pnpm, or bun)",{"type":47,"tag":87,"props":114,"children":116},{"id":115},"step-1-install-the-inngest-sdk",[117],{"type":52,"value":118},"Step 1: Install the Inngest SDK",{"type":47,"tag":55,"props":120,"children":121},{},[122,124,130],{"type":52,"value":123},"Install the ",{"type":47,"tag":125,"props":126,"children":128},"code",{"className":127},[],[129],{"type":52,"value":8},{"type":52,"value":131}," npm package in your project:",{"type":47,"tag":133,"props":134,"children":139},"pre",{"className":135,"code":136,"language":137,"meta":138,"style":138},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install inngest\n# or\nyarn add inngest\n# or\npnpm add inngest\n# or\nbun add inngest\n","bash","",[140],{"type":47,"tag":125,"props":141,"children":142},{"__ignoreMap":138},[143,166,176,194,202,218,226],{"type":47,"tag":144,"props":145,"children":148},"span",{"class":146,"line":147},"line",1,[149,155,161],{"type":47,"tag":144,"props":150,"children":152},{"style":151},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[153],{"type":52,"value":154},"npm",{"type":47,"tag":144,"props":156,"children":158},{"style":157},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[159],{"type":52,"value":160}," install",{"type":47,"tag":144,"props":162,"children":163},{"style":157},[164],{"type":52,"value":165}," inngest\n",{"type":47,"tag":144,"props":167,"children":169},{"class":146,"line":168},2,[170],{"type":47,"tag":144,"props":171,"children":173},{"style":172},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[174],{"type":52,"value":175},"# or\n",{"type":47,"tag":144,"props":177,"children":179},{"class":146,"line":178},3,[180,185,190],{"type":47,"tag":144,"props":181,"children":182},{"style":151},[183],{"type":52,"value":184},"yarn",{"type":47,"tag":144,"props":186,"children":187},{"style":157},[188],{"type":52,"value":189}," add",{"type":47,"tag":144,"props":191,"children":192},{"style":157},[193],{"type":52,"value":165},{"type":47,"tag":144,"props":195,"children":197},{"class":146,"line":196},4,[198],{"type":47,"tag":144,"props":199,"children":200},{"style":172},[201],{"type":52,"value":175},{"type":47,"tag":144,"props":203,"children":204},{"class":146,"line":27},[205,210,214],{"type":47,"tag":144,"props":206,"children":207},{"style":151},[208],{"type":52,"value":209},"pnpm",{"type":47,"tag":144,"props":211,"children":212},{"style":157},[213],{"type":52,"value":189},{"type":47,"tag":144,"props":215,"children":216},{"style":157},[217],{"type":52,"value":165},{"type":47,"tag":144,"props":219,"children":221},{"class":146,"line":220},6,[222],{"type":47,"tag":144,"props":223,"children":224},{"style":172},[225],{"type":52,"value":175},{"type":47,"tag":144,"props":227,"children":229},{"class":146,"line":228},7,[230,235,239],{"type":47,"tag":144,"props":231,"children":232},{"style":151},[233],{"type":52,"value":234},"bun",{"type":47,"tag":144,"props":236,"children":237},{"style":157},[238],{"type":52,"value":189},{"type":47,"tag":144,"props":240,"children":241},{"style":157},[242],{"type":52,"value":165},{"type":47,"tag":87,"props":244,"children":246},{"id":245},"step-2-create-an-inngest-client",[247],{"type":52,"value":248},"Step 2: Create an Inngest Client",{"type":47,"tag":55,"props":250,"children":251},{},[252],{"type":52,"value":253},"Create a shared client file that you'll import throughout your codebase:",{"type":47,"tag":133,"props":255,"children":258},{"className":256,"code":257,"language":22,"meta":138,"style":138},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Finngest\u002Fclient.ts\nimport { Inngest } from \"inngest\";\n\nexport const inngest = new Inngest({\n  id: \"my-app\" \u002F\u002F Unique identifier for your application (hyphenated slug)\n});\n\u002F\u002F IMPORTANT: v4 defaults to Cloud mode. For local dev, set INNGEST_DEV=1 env var.\n\u002F\u002F Without it, your serve endpoint will return 500 (\"In cloud mode but no signing key\").\n\u002F\u002F In production, set INNGEST_SIGNING_KEY (required for Cloud mode).\n",[259],{"type":47,"tag":125,"props":260,"children":261},{"__ignoreMap":138},[262,270,320,329,373,405,422,430,439],{"type":47,"tag":144,"props":263,"children":264},{"class":146,"line":147},[265],{"type":47,"tag":144,"props":266,"children":267},{"style":172},[268],{"type":52,"value":269},"\u002F\u002F src\u002Finngest\u002Fclient.ts\n",{"type":47,"tag":144,"props":271,"children":272},{"class":146,"line":168},[273,279,285,291,296,301,306,310,315],{"type":47,"tag":144,"props":274,"children":276},{"style":275},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[277],{"type":52,"value":278},"import",{"type":47,"tag":144,"props":280,"children":282},{"style":281},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[283],{"type":52,"value":284}," {",{"type":47,"tag":144,"props":286,"children":288},{"style":287},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[289],{"type":52,"value":290}," Inngest",{"type":47,"tag":144,"props":292,"children":293},{"style":281},[294],{"type":52,"value":295}," }",{"type":47,"tag":144,"props":297,"children":298},{"style":275},[299],{"type":52,"value":300}," from",{"type":47,"tag":144,"props":302,"children":303},{"style":281},[304],{"type":52,"value":305}," \"",{"type":47,"tag":144,"props":307,"children":308},{"style":157},[309],{"type":52,"value":8},{"type":47,"tag":144,"props":311,"children":312},{"style":281},[313],{"type":52,"value":314},"\"",{"type":47,"tag":144,"props":316,"children":317},{"style":281},[318],{"type":52,"value":319},";\n",{"type":47,"tag":144,"props":321,"children":322},{"class":146,"line":178},[323],{"type":47,"tag":144,"props":324,"children":326},{"emptyLinePlaceholder":325},true,[327],{"type":52,"value":328},"\n",{"type":47,"tag":144,"props":330,"children":331},{"class":146,"line":196},[332,337,343,348,353,358,363,368],{"type":47,"tag":144,"props":333,"children":334},{"style":275},[335],{"type":52,"value":336},"export",{"type":47,"tag":144,"props":338,"children":340},{"style":339},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[341],{"type":52,"value":342}," const",{"type":47,"tag":144,"props":344,"children":345},{"style":287},[346],{"type":52,"value":347}," inngest ",{"type":47,"tag":144,"props":349,"children":350},{"style":281},[351],{"type":52,"value":352},"=",{"type":47,"tag":144,"props":354,"children":355},{"style":281},[356],{"type":52,"value":357}," new",{"type":47,"tag":144,"props":359,"children":361},{"style":360},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[362],{"type":52,"value":290},{"type":47,"tag":144,"props":364,"children":365},{"style":287},[366],{"type":52,"value":367},"(",{"type":47,"tag":144,"props":369,"children":370},{"style":281},[371],{"type":52,"value":372},"{\n",{"type":47,"tag":144,"props":374,"children":375},{"class":146,"line":27},[376,382,387,391,396,400],{"type":47,"tag":144,"props":377,"children":379},{"style":378},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[380],{"type":52,"value":381},"  id",{"type":47,"tag":144,"props":383,"children":384},{"style":281},[385],{"type":52,"value":386},":",{"type":47,"tag":144,"props":388,"children":389},{"style":281},[390],{"type":52,"value":305},{"type":47,"tag":144,"props":392,"children":393},{"style":157},[394],{"type":52,"value":395},"my-app",{"type":47,"tag":144,"props":397,"children":398},{"style":281},[399],{"type":52,"value":314},{"type":47,"tag":144,"props":401,"children":402},{"style":172},[403],{"type":52,"value":404}," \u002F\u002F Unique identifier for your application (hyphenated slug)\n",{"type":47,"tag":144,"props":406,"children":407},{"class":146,"line":220},[408,413,418],{"type":47,"tag":144,"props":409,"children":410},{"style":281},[411],{"type":52,"value":412},"}",{"type":47,"tag":144,"props":414,"children":415},{"style":287},[416],{"type":52,"value":417},")",{"type":47,"tag":144,"props":419,"children":420},{"style":281},[421],{"type":52,"value":319},{"type":47,"tag":144,"props":423,"children":424},{"class":146,"line":228},[425],{"type":47,"tag":144,"props":426,"children":427},{"style":172},[428],{"type":52,"value":429},"\u002F\u002F IMPORTANT: v4 defaults to Cloud mode. For local dev, set INNGEST_DEV=1 env var.\n",{"type":47,"tag":144,"props":431,"children":433},{"class":146,"line":432},8,[434],{"type":47,"tag":144,"props":435,"children":436},{"style":172},[437],{"type":52,"value":438},"\u002F\u002F Without it, your serve endpoint will return 500 (\"In cloud mode but no signing key\").\n",{"type":47,"tag":144,"props":440,"children":442},{"class":146,"line":441},9,[443],{"type":47,"tag":144,"props":444,"children":445},{"style":172},[446],{"type":52,"value":447},"\u002F\u002F In production, set INNGEST_SIGNING_KEY (required for Cloud mode).\n",{"type":47,"tag":449,"props":450,"children":452},"h3",{"id":451},"key-configuration-options",[453],{"type":52,"value":454},"Key Configuration Options",{"type":47,"tag":94,"props":456,"children":457},{},[458,486,508,522,582,612,633,654,675],{"type":47,"tag":98,"props":459,"children":460},{},[461,470,472,478,480],{"type":47,"tag":68,"props":462,"children":463},{},[464],{"type":47,"tag":125,"props":465,"children":467},{"className":466},[],[468],{"type":52,"value":469},"id",{"type":52,"value":471}," (required): Unique identifier for your app. Use a hyphenated slug like ",{"type":47,"tag":125,"props":473,"children":475},{"className":474},[],[476],{"type":52,"value":477},"\"my-app\"",{"type":52,"value":479}," or ",{"type":47,"tag":125,"props":481,"children":483},{"className":482},[],[484],{"type":52,"value":485},"\"user-service\"",{"type":47,"tag":98,"props":487,"children":488},{},[489,498,500,506],{"type":47,"tag":68,"props":490,"children":491},{},[492],{"type":47,"tag":125,"props":493,"children":495},{"className":494},[],[496],{"type":52,"value":497},"eventKey",{"type":52,"value":499},": Event key for sending events (prefer ",{"type":47,"tag":125,"props":501,"children":503},{"className":502},[],[504],{"type":52,"value":505},"INNGEST_EVENT_KEY",{"type":52,"value":507}," env var)",{"type":47,"tag":98,"props":509,"children":510},{},[511,520],{"type":47,"tag":68,"props":512,"children":513},{},[514],{"type":47,"tag":125,"props":515,"children":517},{"className":516},[],[518],{"type":52,"value":519},"env",{"type":52,"value":521},": Environment name for Branch Environments",{"type":47,"tag":98,"props":523,"children":524},{},[525,534,536,542,544,550,552,557,559,565,567,580],{"type":47,"tag":68,"props":526,"children":527},{},[528],{"type":47,"tag":125,"props":529,"children":531},{"className":530},[],[532],{"type":52,"value":533},"isDev",{"type":52,"value":535},": Force Dev mode (",{"type":47,"tag":125,"props":537,"children":539},{"className":538},[],[540],{"type":52,"value":541},"true",{"type":52,"value":543},") or Cloud mode (",{"type":47,"tag":125,"props":545,"children":547},{"className":546},[],[548],{"type":52,"value":549},"false",{"type":52,"value":551},"). ",{"type":47,"tag":68,"props":553,"children":554},{},[555],{"type":52,"value":556},"v4 defaults to Cloud mode",{"type":52,"value":558},", so set ",{"type":47,"tag":125,"props":560,"children":562},{"className":561},[],[563],{"type":52,"value":564},"INNGEST_DEV=1",{"type":52,"value":566}," env var for local development. ",{"type":47,"tag":68,"props":568,"children":569},{},[570,572,578],{"type":52,"value":571},"Never hardcode ",{"type":47,"tag":125,"props":573,"children":575},{"className":574},[],[576],{"type":52,"value":577},"isDev: true",{"type":52,"value":579}," in source code",{"type":52,"value":581}," — it will silently break in production. Always use the env var.",{"type":47,"tag":98,"props":583,"children":584},{},[585,594,596,602,604,610],{"type":47,"tag":68,"props":586,"children":587},{},[588],{"type":47,"tag":125,"props":589,"children":591},{"className":590},[],[592],{"type":52,"value":593},"signingKey",{"type":52,"value":595},": Signing key for production (prefer ",{"type":47,"tag":125,"props":597,"children":599},{"className":598},[],[600],{"type":52,"value":601},"INNGEST_SIGNING_KEY",{"type":52,"value":603}," env var). Moved from ",{"type":47,"tag":125,"props":605,"children":607},{"className":606},[],[608],{"type":52,"value":609},"serve()",{"type":52,"value":611}," to client in v4",{"type":47,"tag":98,"props":613,"children":614},{},[615,624,626,632],{"type":47,"tag":68,"props":616,"children":617},{},[618],{"type":47,"tag":125,"props":619,"children":621},{"className":620},[],[622],{"type":52,"value":623},"signingKeyFallback",{"type":52,"value":625},": Fallback signing key for key rotation (prefer ",{"type":47,"tag":125,"props":627,"children":629},{"className":628},[],[630],{"type":52,"value":631},"INNGEST_SIGNING_KEY_FALLBACK",{"type":52,"value":507},{"type":47,"tag":98,"props":634,"children":635},{},[636,645,647,653],{"type":47,"tag":68,"props":637,"children":638},{},[639],{"type":47,"tag":125,"props":640,"children":642},{"className":641},[],[643],{"type":52,"value":644},"baseUrl",{"type":52,"value":646},": Custom Inngest API base URL (prefer ",{"type":47,"tag":125,"props":648,"children":650},{"className":649},[],[651],{"type":52,"value":652},"INNGEST_BASE_URL",{"type":52,"value":507},{"type":47,"tag":98,"props":655,"children":656},{},[657,666,668,673],{"type":47,"tag":68,"props":658,"children":659},{},[660],{"type":47,"tag":125,"props":661,"children":663},{"className":662},[],[664],{"type":52,"value":665},"logger",{"type":52,"value":667},": Custom logger instance (e.g. winston, pino) — enables ",{"type":47,"tag":125,"props":669,"children":671},{"className":670},[],[672],{"type":52,"value":665},{"type":52,"value":674}," in function context",{"type":47,"tag":98,"props":676,"children":677},{},[678,687,689,694],{"type":47,"tag":68,"props":679,"children":680},{},[681],{"type":47,"tag":125,"props":682,"children":684},{"className":683},[],[685],{"type":52,"value":686},"middleware",{"type":52,"value":688},": Array of middleware (see ",{"type":47,"tag":68,"props":690,"children":691},{},[692],{"type":52,"value":693},"inngest-middleware",{"type":52,"value":695}," skill)",{"type":47,"tag":449,"props":697,"children":699},{"id":698},"typed-events-with-eventtype",[700],{"type":52,"value":701},"Typed Events with eventType()",{"type":47,"tag":133,"props":703,"children":705},{"className":256,"code":704,"language":22,"meta":138,"style":138},"import { Inngest, eventType } from \"inngest\";\nimport { z } from \"zod\";\n\nconst signupCompleted = eventType(\"user\u002Fsignup.completed\", {\n  schema: z.object({\n    userId: z.string(),\n    email: z.string(),\n    plan: z.enum([\"free\", \"pro\"])\n  })\n});\n\nconst orderPlaced = eventType(\"order\u002Fplaced\", {\n  schema: z.object({\n    orderId: z.string(),\n    amount: z.number()\n  })\n});\n\nexport const inngest = new Inngest({ id: \"my-app\" });\n\n\u002F\u002F Use event types as triggers for full type safety:\ninngest.createFunction(\n  { id: \"handle-signup\", triggers: [signupCompleted] },\n  async ({ event }) => {\n    event.data.userId; \u002F* typed as string *\u002F\n  }\n);\n\n\u002F\u002F Use event types when sending events:\nawait inngest.send(\n  signupCompleted.create({\n    userId: \"user_123\",\n    email: \"user@example.com\",\n    plan: \"pro\"\n  })\n);\n",[706],{"type":47,"tag":125,"props":707,"children":708},{"__ignoreMap":138},[709,758,799,806,853,887,922,954,1019,1032,1048,1056,1102,1134,1167,1198,1210,1226,1234,1304,1312,1321,1343,1396,1430,1467,1475,1487,1495,1504,1531,1557,1586,1615,1640,1652],{"type":47,"tag":144,"props":710,"children":711},{"class":146,"line":147},[712,716,720,724,729,734,738,742,746,750,754],{"type":47,"tag":144,"props":713,"children":714},{"style":275},[715],{"type":52,"value":278},{"type":47,"tag":144,"props":717,"children":718},{"style":281},[719],{"type":52,"value":284},{"type":47,"tag":144,"props":721,"children":722},{"style":287},[723],{"type":52,"value":290},{"type":47,"tag":144,"props":725,"children":726},{"style":281},[727],{"type":52,"value":728},",",{"type":47,"tag":144,"props":730,"children":731},{"style":287},[732],{"type":52,"value":733}," eventType",{"type":47,"tag":144,"props":735,"children":736},{"style":281},[737],{"type":52,"value":295},{"type":47,"tag":144,"props":739,"children":740},{"style":275},[741],{"type":52,"value":300},{"type":47,"tag":144,"props":743,"children":744},{"style":281},[745],{"type":52,"value":305},{"type":47,"tag":144,"props":747,"children":748},{"style":157},[749],{"type":52,"value":8},{"type":47,"tag":144,"props":751,"children":752},{"style":281},[753],{"type":52,"value":314},{"type":47,"tag":144,"props":755,"children":756},{"style":281},[757],{"type":52,"value":319},{"type":47,"tag":144,"props":759,"children":760},{"class":146,"line":168},[761,765,769,774,778,782,786,791,795],{"type":47,"tag":144,"props":762,"children":763},{"style":275},[764],{"type":52,"value":278},{"type":47,"tag":144,"props":766,"children":767},{"style":281},[768],{"type":52,"value":284},{"type":47,"tag":144,"props":770,"children":771},{"style":287},[772],{"type":52,"value":773}," z",{"type":47,"tag":144,"props":775,"children":776},{"style":281},[777],{"type":52,"value":295},{"type":47,"tag":144,"props":779,"children":780},{"style":275},[781],{"type":52,"value":300},{"type":47,"tag":144,"props":783,"children":784},{"style":281},[785],{"type":52,"value":305},{"type":47,"tag":144,"props":787,"children":788},{"style":157},[789],{"type":52,"value":790},"zod",{"type":47,"tag":144,"props":792,"children":793},{"style":281},[794],{"type":52,"value":314},{"type":47,"tag":144,"props":796,"children":797},{"style":281},[798],{"type":52,"value":319},{"type":47,"tag":144,"props":800,"children":801},{"class":146,"line":178},[802],{"type":47,"tag":144,"props":803,"children":804},{"emptyLinePlaceholder":325},[805],{"type":52,"value":328},{"type":47,"tag":144,"props":807,"children":808},{"class":146,"line":196},[809,814,819,823,827,831,835,840,844,848],{"type":47,"tag":144,"props":810,"children":811},{"style":339},[812],{"type":52,"value":813},"const",{"type":47,"tag":144,"props":815,"children":816},{"style":287},[817],{"type":52,"value":818}," signupCompleted ",{"type":47,"tag":144,"props":820,"children":821},{"style":281},[822],{"type":52,"value":352},{"type":47,"tag":144,"props":824,"children":825},{"style":360},[826],{"type":52,"value":733},{"type":47,"tag":144,"props":828,"children":829},{"style":287},[830],{"type":52,"value":367},{"type":47,"tag":144,"props":832,"children":833},{"style":281},[834],{"type":52,"value":314},{"type":47,"tag":144,"props":836,"children":837},{"style":157},[838],{"type":52,"value":839},"user\u002Fsignup.completed",{"type":47,"tag":144,"props":841,"children":842},{"style":281},[843],{"type":52,"value":314},{"type":47,"tag":144,"props":845,"children":846},{"style":281},[847],{"type":52,"value":728},{"type":47,"tag":144,"props":849,"children":850},{"style":281},[851],{"type":52,"value":852}," {\n",{"type":47,"tag":144,"props":854,"children":855},{"class":146,"line":27},[856,861,865,869,874,879,883],{"type":47,"tag":144,"props":857,"children":858},{"style":378},[859],{"type":52,"value":860},"  schema",{"type":47,"tag":144,"props":862,"children":863},{"style":281},[864],{"type":52,"value":386},{"type":47,"tag":144,"props":866,"children":867},{"style":287},[868],{"type":52,"value":773},{"type":47,"tag":144,"props":870,"children":871},{"style":281},[872],{"type":52,"value":873},".",{"type":47,"tag":144,"props":875,"children":876},{"style":360},[877],{"type":52,"value":878},"object",{"type":47,"tag":144,"props":880,"children":881},{"style":287},[882],{"type":52,"value":367},{"type":47,"tag":144,"props":884,"children":885},{"style":281},[886],{"type":52,"value":372},{"type":47,"tag":144,"props":888,"children":889},{"class":146,"line":220},[890,895,899,903,907,912,917],{"type":47,"tag":144,"props":891,"children":892},{"style":378},[893],{"type":52,"value":894},"    userId",{"type":47,"tag":144,"props":896,"children":897},{"style":281},[898],{"type":52,"value":386},{"type":47,"tag":144,"props":900,"children":901},{"style":287},[902],{"type":52,"value":773},{"type":47,"tag":144,"props":904,"children":905},{"style":281},[906],{"type":52,"value":873},{"type":47,"tag":144,"props":908,"children":909},{"style":360},[910],{"type":52,"value":911},"string",{"type":47,"tag":144,"props":913,"children":914},{"style":287},[915],{"type":52,"value":916},"()",{"type":47,"tag":144,"props":918,"children":919},{"style":281},[920],{"type":52,"value":921},",\n",{"type":47,"tag":144,"props":923,"children":924},{"class":146,"line":228},[925,930,934,938,942,946,950],{"type":47,"tag":144,"props":926,"children":927},{"style":378},[928],{"type":52,"value":929},"    email",{"type":47,"tag":144,"props":931,"children":932},{"style":281},[933],{"type":52,"value":386},{"type":47,"tag":144,"props":935,"children":936},{"style":287},[937],{"type":52,"value":773},{"type":47,"tag":144,"props":939,"children":940},{"style":281},[941],{"type":52,"value":873},{"type":47,"tag":144,"props":943,"children":944},{"style":360},[945],{"type":52,"value":911},{"type":47,"tag":144,"props":947,"children":948},{"style":287},[949],{"type":52,"value":916},{"type":47,"tag":144,"props":951,"children":952},{"style":281},[953],{"type":52,"value":921},{"type":47,"tag":144,"props":955,"children":956},{"class":146,"line":432},[957,962,966,970,974,979,984,988,993,997,1001,1005,1010,1014],{"type":47,"tag":144,"props":958,"children":959},{"style":378},[960],{"type":52,"value":961},"    plan",{"type":47,"tag":144,"props":963,"children":964},{"style":281},[965],{"type":52,"value":386},{"type":47,"tag":144,"props":967,"children":968},{"style":287},[969],{"type":52,"value":773},{"type":47,"tag":144,"props":971,"children":972},{"style":281},[973],{"type":52,"value":873},{"type":47,"tag":144,"props":975,"children":976},{"style":360},[977],{"type":52,"value":978},"enum",{"type":47,"tag":144,"props":980,"children":981},{"style":287},[982],{"type":52,"value":983},"([",{"type":47,"tag":144,"props":985,"children":986},{"style":281},[987],{"type":52,"value":314},{"type":47,"tag":144,"props":989,"children":990},{"style":157},[991],{"type":52,"value":992},"free",{"type":47,"tag":144,"props":994,"children":995},{"style":281},[996],{"type":52,"value":314},{"type":47,"tag":144,"props":998,"children":999},{"style":281},[1000],{"type":52,"value":728},{"type":47,"tag":144,"props":1002,"children":1003},{"style":281},[1004],{"type":52,"value":305},{"type":47,"tag":144,"props":1006,"children":1007},{"style":157},[1008],{"type":52,"value":1009},"pro",{"type":47,"tag":144,"props":1011,"children":1012},{"style":281},[1013],{"type":52,"value":314},{"type":47,"tag":144,"props":1015,"children":1016},{"style":287},[1017],{"type":52,"value":1018},"])\n",{"type":47,"tag":144,"props":1020,"children":1021},{"class":146,"line":441},[1022,1027],{"type":47,"tag":144,"props":1023,"children":1024},{"style":281},[1025],{"type":52,"value":1026},"  }",{"type":47,"tag":144,"props":1028,"children":1029},{"style":287},[1030],{"type":52,"value":1031},")\n",{"type":47,"tag":144,"props":1033,"children":1035},{"class":146,"line":1034},10,[1036,1040,1044],{"type":47,"tag":144,"props":1037,"children":1038},{"style":281},[1039],{"type":52,"value":412},{"type":47,"tag":144,"props":1041,"children":1042},{"style":287},[1043],{"type":52,"value":417},{"type":47,"tag":144,"props":1045,"children":1046},{"style":281},[1047],{"type":52,"value":319},{"type":47,"tag":144,"props":1049,"children":1051},{"class":146,"line":1050},11,[1052],{"type":47,"tag":144,"props":1053,"children":1054},{"emptyLinePlaceholder":325},[1055],{"type":52,"value":328},{"type":47,"tag":144,"props":1057,"children":1059},{"class":146,"line":1058},12,[1060,1064,1069,1073,1077,1081,1085,1090,1094,1098],{"type":47,"tag":144,"props":1061,"children":1062},{"style":339},[1063],{"type":52,"value":813},{"type":47,"tag":144,"props":1065,"children":1066},{"style":287},[1067],{"type":52,"value":1068}," orderPlaced ",{"type":47,"tag":144,"props":1070,"children":1071},{"style":281},[1072],{"type":52,"value":352},{"type":47,"tag":144,"props":1074,"children":1075},{"style":360},[1076],{"type":52,"value":733},{"type":47,"tag":144,"props":1078,"children":1079},{"style":287},[1080],{"type":52,"value":367},{"type":47,"tag":144,"props":1082,"children":1083},{"style":281},[1084],{"type":52,"value":314},{"type":47,"tag":144,"props":1086,"children":1087},{"style":157},[1088],{"type":52,"value":1089},"order\u002Fplaced",{"type":47,"tag":144,"props":1091,"children":1092},{"style":281},[1093],{"type":52,"value":314},{"type":47,"tag":144,"props":1095,"children":1096},{"style":281},[1097],{"type":52,"value":728},{"type":47,"tag":144,"props":1099,"children":1100},{"style":281},[1101],{"type":52,"value":852},{"type":47,"tag":144,"props":1103,"children":1105},{"class":146,"line":1104},13,[1106,1110,1114,1118,1122,1126,1130],{"type":47,"tag":144,"props":1107,"children":1108},{"style":378},[1109],{"type":52,"value":860},{"type":47,"tag":144,"props":1111,"children":1112},{"style":281},[1113],{"type":52,"value":386},{"type":47,"tag":144,"props":1115,"children":1116},{"style":287},[1117],{"type":52,"value":773},{"type":47,"tag":144,"props":1119,"children":1120},{"style":281},[1121],{"type":52,"value":873},{"type":47,"tag":144,"props":1123,"children":1124},{"style":360},[1125],{"type":52,"value":878},{"type":47,"tag":144,"props":1127,"children":1128},{"style":287},[1129],{"type":52,"value":367},{"type":47,"tag":144,"props":1131,"children":1132},{"style":281},[1133],{"type":52,"value":372},{"type":47,"tag":144,"props":1135,"children":1137},{"class":146,"line":1136},14,[1138,1143,1147,1151,1155,1159,1163],{"type":47,"tag":144,"props":1139,"children":1140},{"style":378},[1141],{"type":52,"value":1142},"    orderId",{"type":47,"tag":144,"props":1144,"children":1145},{"style":281},[1146],{"type":52,"value":386},{"type":47,"tag":144,"props":1148,"children":1149},{"style":287},[1150],{"type":52,"value":773},{"type":47,"tag":144,"props":1152,"children":1153},{"style":281},[1154],{"type":52,"value":873},{"type":47,"tag":144,"props":1156,"children":1157},{"style":360},[1158],{"type":52,"value":911},{"type":47,"tag":144,"props":1160,"children":1161},{"style":287},[1162],{"type":52,"value":916},{"type":47,"tag":144,"props":1164,"children":1165},{"style":281},[1166],{"type":52,"value":921},{"type":47,"tag":144,"props":1168,"children":1170},{"class":146,"line":1169},15,[1171,1176,1180,1184,1188,1193],{"type":47,"tag":144,"props":1172,"children":1173},{"style":378},[1174],{"type":52,"value":1175},"    amount",{"type":47,"tag":144,"props":1177,"children":1178},{"style":281},[1179],{"type":52,"value":386},{"type":47,"tag":144,"props":1181,"children":1182},{"style":287},[1183],{"type":52,"value":773},{"type":47,"tag":144,"props":1185,"children":1186},{"style":281},[1187],{"type":52,"value":873},{"type":47,"tag":144,"props":1189,"children":1190},{"style":360},[1191],{"type":52,"value":1192},"number",{"type":47,"tag":144,"props":1194,"children":1195},{"style":287},[1196],{"type":52,"value":1197},"()\n",{"type":47,"tag":144,"props":1199,"children":1201},{"class":146,"line":1200},16,[1202,1206],{"type":47,"tag":144,"props":1203,"children":1204},{"style":281},[1205],{"type":52,"value":1026},{"type":47,"tag":144,"props":1207,"children":1208},{"style":287},[1209],{"type":52,"value":1031},{"type":47,"tag":144,"props":1211,"children":1213},{"class":146,"line":1212},17,[1214,1218,1222],{"type":47,"tag":144,"props":1215,"children":1216},{"style":281},[1217],{"type":52,"value":412},{"type":47,"tag":144,"props":1219,"children":1220},{"style":287},[1221],{"type":52,"value":417},{"type":47,"tag":144,"props":1223,"children":1224},{"style":281},[1225],{"type":52,"value":319},{"type":47,"tag":144,"props":1227,"children":1229},{"class":146,"line":1228},18,[1230],{"type":47,"tag":144,"props":1231,"children":1232},{"emptyLinePlaceholder":325},[1233],{"type":52,"value":328},{"type":47,"tag":144,"props":1235,"children":1237},{"class":146,"line":1236},19,[1238,1242,1246,1250,1254,1258,1262,1266,1271,1276,1280,1284,1288,1292,1296,1300],{"type":47,"tag":144,"props":1239,"children":1240},{"style":275},[1241],{"type":52,"value":336},{"type":47,"tag":144,"props":1243,"children":1244},{"style":339},[1245],{"type":52,"value":342},{"type":47,"tag":144,"props":1247,"children":1248},{"style":287},[1249],{"type":52,"value":347},{"type":47,"tag":144,"props":1251,"children":1252},{"style":281},[1253],{"type":52,"value":352},{"type":47,"tag":144,"props":1255,"children":1256},{"style":281},[1257],{"type":52,"value":357},{"type":47,"tag":144,"props":1259,"children":1260},{"style":360},[1261],{"type":52,"value":290},{"type":47,"tag":144,"props":1263,"children":1264},{"style":287},[1265],{"type":52,"value":367},{"type":47,"tag":144,"props":1267,"children":1268},{"style":281},[1269],{"type":52,"value":1270},"{",{"type":47,"tag":144,"props":1272,"children":1273},{"style":378},[1274],{"type":52,"value":1275}," id",{"type":47,"tag":144,"props":1277,"children":1278},{"style":281},[1279],{"type":52,"value":386},{"type":47,"tag":144,"props":1281,"children":1282},{"style":281},[1283],{"type":52,"value":305},{"type":47,"tag":144,"props":1285,"children":1286},{"style":157},[1287],{"type":52,"value":395},{"type":47,"tag":144,"props":1289,"children":1290},{"style":281},[1291],{"type":52,"value":314},{"type":47,"tag":144,"props":1293,"children":1294},{"style":281},[1295],{"type":52,"value":295},{"type":47,"tag":144,"props":1297,"children":1298},{"style":287},[1299],{"type":52,"value":417},{"type":47,"tag":144,"props":1301,"children":1302},{"style":281},[1303],{"type":52,"value":319},{"type":47,"tag":144,"props":1305,"children":1307},{"class":146,"line":1306},20,[1308],{"type":47,"tag":144,"props":1309,"children":1310},{"emptyLinePlaceholder":325},[1311],{"type":52,"value":328},{"type":47,"tag":144,"props":1313,"children":1315},{"class":146,"line":1314},21,[1316],{"type":47,"tag":144,"props":1317,"children":1318},{"style":172},[1319],{"type":52,"value":1320},"\u002F\u002F Use event types as triggers for full type safety:\n",{"type":47,"tag":144,"props":1322,"children":1324},{"class":146,"line":1323},22,[1325,1329,1333,1338],{"type":47,"tag":144,"props":1326,"children":1327},{"style":287},[1328],{"type":52,"value":8},{"type":47,"tag":144,"props":1330,"children":1331},{"style":281},[1332],{"type":52,"value":873},{"type":47,"tag":144,"props":1334,"children":1335},{"style":360},[1336],{"type":52,"value":1337},"createFunction",{"type":47,"tag":144,"props":1339,"children":1340},{"style":287},[1341],{"type":52,"value":1342},"(\n",{"type":47,"tag":144,"props":1344,"children":1346},{"class":146,"line":1345},23,[1347,1352,1356,1360,1364,1369,1373,1377,1382,1386,1391],{"type":47,"tag":144,"props":1348,"children":1349},{"style":281},[1350],{"type":52,"value":1351},"  {",{"type":47,"tag":144,"props":1353,"children":1354},{"style":378},[1355],{"type":52,"value":1275},{"type":47,"tag":144,"props":1357,"children":1358},{"style":281},[1359],{"type":52,"value":386},{"type":47,"tag":144,"props":1361,"children":1362},{"style":281},[1363],{"type":52,"value":305},{"type":47,"tag":144,"props":1365,"children":1366},{"style":157},[1367],{"type":52,"value":1368},"handle-signup",{"type":47,"tag":144,"props":1370,"children":1371},{"style":281},[1372],{"type":52,"value":314},{"type":47,"tag":144,"props":1374,"children":1375},{"style":281},[1376],{"type":52,"value":728},{"type":47,"tag":144,"props":1378,"children":1379},{"style":378},[1380],{"type":52,"value":1381}," triggers",{"type":47,"tag":144,"props":1383,"children":1384},{"style":281},[1385],{"type":52,"value":386},{"type":47,"tag":144,"props":1387,"children":1388},{"style":287},[1389],{"type":52,"value":1390}," [signupCompleted] ",{"type":47,"tag":144,"props":1392,"children":1393},{"style":281},[1394],{"type":52,"value":1395},"},\n",{"type":47,"tag":144,"props":1397,"children":1399},{"class":146,"line":1398},24,[1400,1405,1410,1416,1421,1426],{"type":47,"tag":144,"props":1401,"children":1402},{"style":339},[1403],{"type":52,"value":1404},"  async",{"type":47,"tag":144,"props":1406,"children":1407},{"style":281},[1408],{"type":52,"value":1409}," ({",{"type":47,"tag":144,"props":1411,"children":1413},{"style":1412},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[1414],{"type":52,"value":1415}," event",{"type":47,"tag":144,"props":1417,"children":1418},{"style":281},[1419],{"type":52,"value":1420}," })",{"type":47,"tag":144,"props":1422,"children":1423},{"style":339},[1424],{"type":52,"value":1425}," =>",{"type":47,"tag":144,"props":1427,"children":1428},{"style":281},[1429],{"type":52,"value":852},{"type":47,"tag":144,"props":1431,"children":1433},{"class":146,"line":1432},25,[1434,1439,1443,1448,1452,1457,1462],{"type":47,"tag":144,"props":1435,"children":1436},{"style":287},[1437],{"type":52,"value":1438},"    event",{"type":47,"tag":144,"props":1440,"children":1441},{"style":281},[1442],{"type":52,"value":873},{"type":47,"tag":144,"props":1444,"children":1445},{"style":287},[1446],{"type":52,"value":1447},"data",{"type":47,"tag":144,"props":1449,"children":1450},{"style":281},[1451],{"type":52,"value":873},{"type":47,"tag":144,"props":1453,"children":1454},{"style":287},[1455],{"type":52,"value":1456},"userId",{"type":47,"tag":144,"props":1458,"children":1459},{"style":281},[1460],{"type":52,"value":1461},";",{"type":47,"tag":144,"props":1463,"children":1464},{"style":172},[1465],{"type":52,"value":1466}," \u002F* typed as string *\u002F\n",{"type":47,"tag":144,"props":1468,"children":1469},{"class":146,"line":23},[1470],{"type":47,"tag":144,"props":1471,"children":1472},{"style":281},[1473],{"type":52,"value":1474},"  }\n",{"type":47,"tag":144,"props":1476,"children":1478},{"class":146,"line":1477},27,[1479,1483],{"type":47,"tag":144,"props":1480,"children":1481},{"style":287},[1482],{"type":52,"value":417},{"type":47,"tag":144,"props":1484,"children":1485},{"style":281},[1486],{"type":52,"value":319},{"type":47,"tag":144,"props":1488,"children":1490},{"class":146,"line":1489},28,[1491],{"type":47,"tag":144,"props":1492,"children":1493},{"emptyLinePlaceholder":325},[1494],{"type":52,"value":328},{"type":47,"tag":144,"props":1496,"children":1498},{"class":146,"line":1497},29,[1499],{"type":47,"tag":144,"props":1500,"children":1501},{"style":172},[1502],{"type":52,"value":1503},"\u002F\u002F Use event types when sending events:\n",{"type":47,"tag":144,"props":1505,"children":1507},{"class":146,"line":1506},30,[1508,1513,1518,1522,1527],{"type":47,"tag":144,"props":1509,"children":1510},{"style":275},[1511],{"type":52,"value":1512},"await",{"type":47,"tag":144,"props":1514,"children":1515},{"style":287},[1516],{"type":52,"value":1517}," inngest",{"type":47,"tag":144,"props":1519,"children":1520},{"style":281},[1521],{"type":52,"value":873},{"type":47,"tag":144,"props":1523,"children":1524},{"style":360},[1525],{"type":52,"value":1526},"send",{"type":47,"tag":144,"props":1528,"children":1529},{"style":287},[1530],{"type":52,"value":1342},{"type":47,"tag":144,"props":1532,"children":1534},{"class":146,"line":1533},31,[1535,1540,1544,1549,1553],{"type":47,"tag":144,"props":1536,"children":1537},{"style":287},[1538],{"type":52,"value":1539},"  signupCompleted",{"type":47,"tag":144,"props":1541,"children":1542},{"style":281},[1543],{"type":52,"value":873},{"type":47,"tag":144,"props":1545,"children":1546},{"style":360},[1547],{"type":52,"value":1548},"create",{"type":47,"tag":144,"props":1550,"children":1551},{"style":287},[1552],{"type":52,"value":367},{"type":47,"tag":144,"props":1554,"children":1555},{"style":281},[1556],{"type":52,"value":372},{"type":47,"tag":144,"props":1558,"children":1560},{"class":146,"line":1559},32,[1561,1565,1569,1573,1578,1582],{"type":47,"tag":144,"props":1562,"children":1563},{"style":378},[1564],{"type":52,"value":894},{"type":47,"tag":144,"props":1566,"children":1567},{"style":281},[1568],{"type":52,"value":386},{"type":47,"tag":144,"props":1570,"children":1571},{"style":281},[1572],{"type":52,"value":305},{"type":47,"tag":144,"props":1574,"children":1575},{"style":157},[1576],{"type":52,"value":1577},"user_123",{"type":47,"tag":144,"props":1579,"children":1580},{"style":281},[1581],{"type":52,"value":314},{"type":47,"tag":144,"props":1583,"children":1584},{"style":281},[1585],{"type":52,"value":921},{"type":47,"tag":144,"props":1587,"children":1589},{"class":146,"line":1588},33,[1590,1594,1598,1602,1607,1611],{"type":47,"tag":144,"props":1591,"children":1592},{"style":378},[1593],{"type":52,"value":929},{"type":47,"tag":144,"props":1595,"children":1596},{"style":281},[1597],{"type":52,"value":386},{"type":47,"tag":144,"props":1599,"children":1600},{"style":281},[1601],{"type":52,"value":305},{"type":47,"tag":144,"props":1603,"children":1604},{"style":157},[1605],{"type":52,"value":1606},"user@example.com",{"type":47,"tag":144,"props":1608,"children":1609},{"style":281},[1610],{"type":52,"value":314},{"type":47,"tag":144,"props":1612,"children":1613},{"style":281},[1614],{"type":52,"value":921},{"type":47,"tag":144,"props":1616,"children":1618},{"class":146,"line":1617},34,[1619,1623,1627,1631,1635],{"type":47,"tag":144,"props":1620,"children":1621},{"style":378},[1622],{"type":52,"value":961},{"type":47,"tag":144,"props":1624,"children":1625},{"style":281},[1626],{"type":52,"value":386},{"type":47,"tag":144,"props":1628,"children":1629},{"style":281},[1630],{"type":52,"value":305},{"type":47,"tag":144,"props":1632,"children":1633},{"style":157},[1634],{"type":52,"value":1009},{"type":47,"tag":144,"props":1636,"children":1637},{"style":281},[1638],{"type":52,"value":1639},"\"\n",{"type":47,"tag":144,"props":1641,"children":1643},{"class":146,"line":1642},35,[1644,1648],{"type":47,"tag":144,"props":1645,"children":1646},{"style":281},[1647],{"type":52,"value":1026},{"type":47,"tag":144,"props":1649,"children":1650},{"style":287},[1651],{"type":52,"value":1031},{"type":47,"tag":144,"props":1653,"children":1655},{"class":146,"line":1654},36,[1656,1660],{"type":47,"tag":144,"props":1657,"children":1658},{"style":287},[1659],{"type":52,"value":417},{"type":47,"tag":144,"props":1661,"children":1662},{"style":281},[1663],{"type":52,"value":319},{"type":47,"tag":449,"props":1665,"children":1667},{"id":1666},"environment-variables-setup",[1668],{"type":52,"value":1669},"Environment Variables Setup",{"type":47,"tag":55,"props":1671,"children":1672},{},[1673,1675,1681],{"type":52,"value":1674},"Set these environment variables in your ",{"type":47,"tag":125,"props":1676,"children":1678},{"className":1677},[],[1679],{"type":52,"value":1680},".env",{"type":52,"value":1682}," file or deployment environment:",{"type":47,"tag":133,"props":1684,"children":1687},{"className":1685,"code":1686,"language":519,"meta":138,"style":138},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Required for production\nINNGEST_EVENT_KEY=your-event-key-here\nINNGEST_SIGNING_KEY=your-signing-key-here\n\n# Force dev mode during local development\nINNGEST_DEV=1\n\n# Optional - custom dev server URL (default: http:\u002F\u002Flocalhost:8288)\nINNGEST_BASE_URL=http:\u002F\u002Flocalhost:8288\n",[1688],{"type":47,"tag":125,"props":1689,"children":1690},{"__ignoreMap":138},[1691,1699,1707,1715,1722,1730,1738,1745,1753],{"type":47,"tag":144,"props":1692,"children":1693},{"class":146,"line":147},[1694],{"type":47,"tag":144,"props":1695,"children":1696},{},[1697],{"type":52,"value":1698},"# Required for production\n",{"type":47,"tag":144,"props":1700,"children":1701},{"class":146,"line":168},[1702],{"type":47,"tag":144,"props":1703,"children":1704},{},[1705],{"type":52,"value":1706},"INNGEST_EVENT_KEY=your-event-key-here\n",{"type":47,"tag":144,"props":1708,"children":1709},{"class":146,"line":178},[1710],{"type":47,"tag":144,"props":1711,"children":1712},{},[1713],{"type":52,"value":1714},"INNGEST_SIGNING_KEY=your-signing-key-here\n",{"type":47,"tag":144,"props":1716,"children":1717},{"class":146,"line":196},[1718],{"type":47,"tag":144,"props":1719,"children":1720},{"emptyLinePlaceholder":325},[1721],{"type":52,"value":328},{"type":47,"tag":144,"props":1723,"children":1724},{"class":146,"line":27},[1725],{"type":47,"tag":144,"props":1726,"children":1727},{},[1728],{"type":52,"value":1729},"# Force dev mode during local development\n",{"type":47,"tag":144,"props":1731,"children":1732},{"class":146,"line":220},[1733],{"type":47,"tag":144,"props":1734,"children":1735},{},[1736],{"type":52,"value":1737},"INNGEST_DEV=1\n",{"type":47,"tag":144,"props":1739,"children":1740},{"class":146,"line":228},[1741],{"type":47,"tag":144,"props":1742,"children":1743},{"emptyLinePlaceholder":325},[1744],{"type":52,"value":328},{"type":47,"tag":144,"props":1746,"children":1747},{"class":146,"line":432},[1748],{"type":47,"tag":144,"props":1749,"children":1750},{},[1751],{"type":52,"value":1752},"# Optional - custom dev server URL (default: http:\u002F\u002Flocalhost:8288)\n",{"type":47,"tag":144,"props":1754,"children":1755},{"class":146,"line":441},[1756],{"type":47,"tag":144,"props":1757,"children":1758},{},[1759],{"type":52,"value":1760},"INNGEST_BASE_URL=http:\u002F\u002Flocalhost:8288\n",{"type":47,"tag":55,"props":1762,"children":1763},{},[1764,1769,1771,1776,1778,1783],{"type":47,"tag":68,"props":1765,"children":1766},{},[1767],{"type":52,"value":1768},"⚠️ Common Gotcha",{"type":52,"value":1770},": Never hardcode keys in your source code. Always use environment variables for ",{"type":47,"tag":125,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":52,"value":505},{"type":52,"value":1777}," and ",{"type":47,"tag":125,"props":1779,"children":1781},{"className":1780},[],[1782],{"type":52,"value":601},{"type":52,"value":873},{"type":47,"tag":87,"props":1785,"children":1787},{"id":1786},"critical-enable-dev-mode-for-local-development",[1788],{"type":52,"value":1789},"CRITICAL: Enable Dev Mode for Local Development",{"type":47,"tag":55,"props":1791,"children":1792},{},[1793,1798],{"type":47,"tag":68,"props":1794,"children":1795},{},[1796],{"type":52,"value":1797},"Before creating serve endpoints or connecting workers, ensure dev mode is enabled.",{"type":52,"value":1799}," Without it, Inngest defaults to Cloud mode and your endpoints will fail with 500 errors.",{"type":47,"tag":55,"props":1801,"children":1802},{},[1803,1805,1810],{"type":52,"value":1804},"Add to your ",{"type":47,"tag":125,"props":1806,"children":1808},{"className":1807},[],[1809],{"type":52,"value":1680},{"type":52,"value":1811}," file (or your dev script in package.json):",{"type":47,"tag":133,"props":1813,"children":1814},{"className":1685,"code":1737,"language":519,"meta":138,"style":138},[1815],{"type":47,"tag":125,"props":1816,"children":1817},{"__ignoreMap":138},[1818],{"type":47,"tag":144,"props":1819,"children":1820},{"class":146,"line":147},[1821],{"type":47,"tag":144,"props":1822,"children":1823},{},[1824],{"type":52,"value":1737},{"type":47,"tag":55,"props":1826,"children":1827},{},[1828,1830,1836],{"type":52,"value":1829},"Or in ",{"type":47,"tag":125,"props":1831,"children":1833},{"className":1832},[],[1834],{"type":52,"value":1835},"package.json",{"type":52,"value":1837}," scripts:",{"type":47,"tag":133,"props":1839,"children":1843},{"className":1840,"code":1841,"language":1842,"meta":138,"style":138},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"scripts\": {\n    \"dev\": \"INNGEST_DEV=1 tsx --watch src\u002Fserver.ts\"\n  }\n}\n","json",[1844],{"type":47,"tag":125,"props":1845,"children":1846},{"__ignoreMap":138},[1847,1854,1879,1913,1920],{"type":47,"tag":144,"props":1848,"children":1849},{"class":146,"line":147},[1850],{"type":47,"tag":144,"props":1851,"children":1852},{"style":281},[1853],{"type":52,"value":372},{"type":47,"tag":144,"props":1855,"children":1856},{"class":146,"line":168},[1857,1862,1867,1871,1875],{"type":47,"tag":144,"props":1858,"children":1859},{"style":281},[1860],{"type":52,"value":1861},"  \"",{"type":47,"tag":144,"props":1863,"children":1864},{"style":339},[1865],{"type":52,"value":1866},"scripts",{"type":47,"tag":144,"props":1868,"children":1869},{"style":281},[1870],{"type":52,"value":314},{"type":47,"tag":144,"props":1872,"children":1873},{"style":281},[1874],{"type":52,"value":386},{"type":47,"tag":144,"props":1876,"children":1877},{"style":281},[1878],{"type":52,"value":852},{"type":47,"tag":144,"props":1880,"children":1881},{"class":146,"line":178},[1882,1887,1892,1896,1900,1904,1909],{"type":47,"tag":144,"props":1883,"children":1884},{"style":281},[1885],{"type":52,"value":1886},"    \"",{"type":47,"tag":144,"props":1888,"children":1889},{"style":151},[1890],{"type":52,"value":1891},"dev",{"type":47,"tag":144,"props":1893,"children":1894},{"style":281},[1895],{"type":52,"value":314},{"type":47,"tag":144,"props":1897,"children":1898},{"style":281},[1899],{"type":52,"value":386},{"type":47,"tag":144,"props":1901,"children":1902},{"style":281},[1903],{"type":52,"value":305},{"type":47,"tag":144,"props":1905,"children":1906},{"style":157},[1907],{"type":52,"value":1908},"INNGEST_DEV=1 tsx --watch src\u002Fserver.ts",{"type":47,"tag":144,"props":1910,"children":1911},{"style":281},[1912],{"type":52,"value":1639},{"type":47,"tag":144,"props":1914,"children":1915},{"class":146,"line":196},[1916],{"type":47,"tag":144,"props":1917,"children":1918},{"style":281},[1919],{"type":52,"value":1474},{"type":47,"tag":144,"props":1921,"children":1922},{"class":146,"line":27},[1923],{"type":47,"tag":144,"props":1924,"children":1925},{"style":281},[1926],{"type":52,"value":1927},"}\n",{"type":47,"tag":55,"props":1929,"children":1930},{},[1931],{"type":47,"tag":68,"props":1932,"children":1933},{},[1934],{"type":52,"value":1935},"Symptoms of missing INNGEST_DEV:",{"type":47,"tag":94,"props":1937,"children":1938},{},[1939,1958,1963],{"type":47,"tag":98,"props":1940,"children":1941},{},[1942,1944,1950,1952],{"type":52,"value":1943},"GET ",{"type":47,"tag":125,"props":1945,"children":1947},{"className":1946},[],[1948],{"type":52,"value":1949},"\u002Fapi\u002Finngest",{"type":52,"value":1951}," returns ",{"type":47,"tag":125,"props":1953,"children":1955},{"className":1954},[],[1956],{"type":52,"value":1957},"{\"code\":\"internal_server_error\"}",{"type":47,"tag":98,"props":1959,"children":1960},{},[1961],{"type":52,"value":1962},"Server logs: \"In cloud mode but no signing key found\"",{"type":47,"tag":98,"props":1964,"children":1965},{},[1966],{"type":52,"value":1967},"Dev server can't sync with your app",{"type":47,"tag":87,"props":1969,"children":1971},{"id":1970},"step-3-choose-your-connection-mode",[1972],{"type":52,"value":1973},"Step 3: Choose Your Connection Mode",{"type":47,"tag":55,"props":1975,"children":1976},{},[1977],{"type":52,"value":1978},"Inngest supports two connection modes:",{"type":47,"tag":449,"props":1980,"children":1982},{"id":1981},"mode-a-serve-endpoint-http",[1983],{"type":52,"value":1984},"Mode A: Serve Endpoint (HTTP)",{"type":47,"tag":55,"props":1986,"children":1987},{},[1988],{"type":52,"value":1989},"Best for serverless platforms (Vercel, Lambda, etc.) and existing APIs.",{"type":47,"tag":449,"props":1991,"children":1993},{"id":1992},"mode-b-connect-websocket",[1994],{"type":52,"value":1995},"Mode B: Connect (WebSocket)",{"type":47,"tag":55,"props":1997,"children":1998},{},[1999],{"type":52,"value":2000},"Best for container runtimes (Kubernetes, Docker) and long-running processes.",{"type":47,"tag":87,"props":2002,"children":2004},{"id":2003},"step-4a-serving-an-endpoint-http-mode",[2005],{"type":52,"value":2006},"Step 4A: Serving an Endpoint (HTTP Mode)",{"type":47,"tag":55,"props":2008,"children":2009},{},[2010],{"type":52,"value":2011},"Create an API endpoint that exposes your functions to Inngest:",{"type":47,"tag":133,"props":2013,"children":2015},{"className":256,"code":2014,"language":22,"meta":138,"style":138},"\u002F\u002F For Next.js App Router: src\u002Fapp\u002Fapi\u002Finngest\u002Froute.ts\nimport { serve } from \"inngest\u002Fnext\";\nimport { inngest } from \"..\u002F..\u002F..\u002Finngest\u002Fclient\";\nimport { myFunction } from \"..\u002F..\u002F..\u002Finngest\u002Ffunctions\";\n\nexport const { GET, POST, PUT } = serve({\n  client: inngest,\n  functions: [myFunction]\n});\n",[2016],{"type":47,"tag":125,"props":2017,"children":2018},{"__ignoreMap":138},[2019,2027,2068,2108,2149,2156,2215,2235,2252],{"type":47,"tag":144,"props":2020,"children":2021},{"class":146,"line":147},[2022],{"type":47,"tag":144,"props":2023,"children":2024},{"style":172},[2025],{"type":52,"value":2026},"\u002F\u002F For Next.js App Router: src\u002Fapp\u002Fapi\u002Finngest\u002Froute.ts\n",{"type":47,"tag":144,"props":2028,"children":2029},{"class":146,"line":168},[2030,2034,2038,2043,2047,2051,2055,2060,2064],{"type":47,"tag":144,"props":2031,"children":2032},{"style":275},[2033],{"type":52,"value":278},{"type":47,"tag":144,"props":2035,"children":2036},{"style":281},[2037],{"type":52,"value":284},{"type":47,"tag":144,"props":2039,"children":2040},{"style":287},[2041],{"type":52,"value":2042}," serve",{"type":47,"tag":144,"props":2044,"children":2045},{"style":281},[2046],{"type":52,"value":295},{"type":47,"tag":144,"props":2048,"children":2049},{"style":275},[2050],{"type":52,"value":300},{"type":47,"tag":144,"props":2052,"children":2053},{"style":281},[2054],{"type":52,"value":305},{"type":47,"tag":144,"props":2056,"children":2057},{"style":157},[2058],{"type":52,"value":2059},"inngest\u002Fnext",{"type":47,"tag":144,"props":2061,"children":2062},{"style":281},[2063],{"type":52,"value":314},{"type":47,"tag":144,"props":2065,"children":2066},{"style":281},[2067],{"type":52,"value":319},{"type":47,"tag":144,"props":2069,"children":2070},{"class":146,"line":178},[2071,2075,2079,2083,2087,2091,2095,2100,2104],{"type":47,"tag":144,"props":2072,"children":2073},{"style":275},[2074],{"type":52,"value":278},{"type":47,"tag":144,"props":2076,"children":2077},{"style":281},[2078],{"type":52,"value":284},{"type":47,"tag":144,"props":2080,"children":2081},{"style":287},[2082],{"type":52,"value":1517},{"type":47,"tag":144,"props":2084,"children":2085},{"style":281},[2086],{"type":52,"value":295},{"type":47,"tag":144,"props":2088,"children":2089},{"style":275},[2090],{"type":52,"value":300},{"type":47,"tag":144,"props":2092,"children":2093},{"style":281},[2094],{"type":52,"value":305},{"type":47,"tag":144,"props":2096,"children":2097},{"style":157},[2098],{"type":52,"value":2099},"..\u002F..\u002F..\u002Finngest\u002Fclient",{"type":47,"tag":144,"props":2101,"children":2102},{"style":281},[2103],{"type":52,"value":314},{"type":47,"tag":144,"props":2105,"children":2106},{"style":281},[2107],{"type":52,"value":319},{"type":47,"tag":144,"props":2109,"children":2110},{"class":146,"line":196},[2111,2115,2119,2124,2128,2132,2136,2141,2145],{"type":47,"tag":144,"props":2112,"children":2113},{"style":275},[2114],{"type":52,"value":278},{"type":47,"tag":144,"props":2116,"children":2117},{"style":281},[2118],{"type":52,"value":284},{"type":47,"tag":144,"props":2120,"children":2121},{"style":287},[2122],{"type":52,"value":2123}," myFunction",{"type":47,"tag":144,"props":2125,"children":2126},{"style":281},[2127],{"type":52,"value":295},{"type":47,"tag":144,"props":2129,"children":2130},{"style":275},[2131],{"type":52,"value":300},{"type":47,"tag":144,"props":2133,"children":2134},{"style":281},[2135],{"type":52,"value":305},{"type":47,"tag":144,"props":2137,"children":2138},{"style":157},[2139],{"type":52,"value":2140},"..\u002F..\u002F..\u002Finngest\u002Ffunctions",{"type":47,"tag":144,"props":2142,"children":2143},{"style":281},[2144],{"type":52,"value":314},{"type":47,"tag":144,"props":2146,"children":2147},{"style":281},[2148],{"type":52,"value":319},{"type":47,"tag":144,"props":2150,"children":2151},{"class":146,"line":27},[2152],{"type":47,"tag":144,"props":2153,"children":2154},{"emptyLinePlaceholder":325},[2155],{"type":52,"value":328},{"type":47,"tag":144,"props":2157,"children":2158},{"class":146,"line":220},[2159,2163,2167,2171,2176,2180,2185,2189,2194,2198,2203,2207,2211],{"type":47,"tag":144,"props":2160,"children":2161},{"style":275},[2162],{"type":52,"value":336},{"type":47,"tag":144,"props":2164,"children":2165},{"style":339},[2166],{"type":52,"value":342},{"type":47,"tag":144,"props":2168,"children":2169},{"style":281},[2170],{"type":52,"value":284},{"type":47,"tag":144,"props":2172,"children":2173},{"style":287},[2174],{"type":52,"value":2175}," GET",{"type":47,"tag":144,"props":2177,"children":2178},{"style":281},[2179],{"type":52,"value":728},{"type":47,"tag":144,"props":2181,"children":2182},{"style":287},[2183],{"type":52,"value":2184}," POST",{"type":47,"tag":144,"props":2186,"children":2187},{"style":281},[2188],{"type":52,"value":728},{"type":47,"tag":144,"props":2190,"children":2191},{"style":287},[2192],{"type":52,"value":2193}," PUT ",{"type":47,"tag":144,"props":2195,"children":2196},{"style":281},[2197],{"type":52,"value":412},{"type":47,"tag":144,"props":2199,"children":2200},{"style":281},[2201],{"type":52,"value":2202}," =",{"type":47,"tag":144,"props":2204,"children":2205},{"style":360},[2206],{"type":52,"value":2042},{"type":47,"tag":144,"props":2208,"children":2209},{"style":287},[2210],{"type":52,"value":367},{"type":47,"tag":144,"props":2212,"children":2213},{"style":281},[2214],{"type":52,"value":372},{"type":47,"tag":144,"props":2216,"children":2217},{"class":146,"line":228},[2218,2223,2227,2231],{"type":47,"tag":144,"props":2219,"children":2220},{"style":378},[2221],{"type":52,"value":2222},"  client",{"type":47,"tag":144,"props":2224,"children":2225},{"style":281},[2226],{"type":52,"value":386},{"type":47,"tag":144,"props":2228,"children":2229},{"style":287},[2230],{"type":52,"value":1517},{"type":47,"tag":144,"props":2232,"children":2233},{"style":281},[2234],{"type":52,"value":921},{"type":47,"tag":144,"props":2236,"children":2237},{"class":146,"line":432},[2238,2243,2247],{"type":47,"tag":144,"props":2239,"children":2240},{"style":378},[2241],{"type":52,"value":2242},"  functions",{"type":47,"tag":144,"props":2244,"children":2245},{"style":281},[2246],{"type":52,"value":386},{"type":47,"tag":144,"props":2248,"children":2249},{"style":287},[2250],{"type":52,"value":2251}," [myFunction]\n",{"type":47,"tag":144,"props":2253,"children":2254},{"class":146,"line":441},[2255,2259,2263],{"type":47,"tag":144,"props":2256,"children":2257},{"style":281},[2258],{"type":52,"value":412},{"type":47,"tag":144,"props":2260,"children":2261},{"style":287},[2262],{"type":52,"value":417},{"type":47,"tag":144,"props":2264,"children":2265},{"style":281},[2266],{"type":52,"value":319},{"type":47,"tag":133,"props":2268,"children":2270},{"className":256,"code":2269,"language":22,"meta":138,"style":138},"\u002F\u002F For Next.js Pages Router: pages\u002Fapi\u002Finngest.ts\nimport { serve } from \"inngest\u002Fnext\";\nimport { inngest } from \"..\u002F..\u002Finngest\u002Fclient\";\nimport { myFunction } from \"..\u002F..\u002Finngest\u002Ffunctions\";\n\nexport default serve({\n  client: inngest,\n  functions: [myFunction]\n});\n",[2271],{"type":47,"tag":125,"props":2272,"children":2273},{"__ignoreMap":138},[2274,2282,2321,2361,2401,2408,2432,2451,2466],{"type":47,"tag":144,"props":2275,"children":2276},{"class":146,"line":147},[2277],{"type":47,"tag":144,"props":2278,"children":2279},{"style":172},[2280],{"type":52,"value":2281},"\u002F\u002F For Next.js Pages Router: pages\u002Fapi\u002Finngest.ts\n",{"type":47,"tag":144,"props":2283,"children":2284},{"class":146,"line":168},[2285,2289,2293,2297,2301,2305,2309,2313,2317],{"type":47,"tag":144,"props":2286,"children":2287},{"style":275},[2288],{"type":52,"value":278},{"type":47,"tag":144,"props":2290,"children":2291},{"style":281},[2292],{"type":52,"value":284},{"type":47,"tag":144,"props":2294,"children":2295},{"style":287},[2296],{"type":52,"value":2042},{"type":47,"tag":144,"props":2298,"children":2299},{"style":281},[2300],{"type":52,"value":295},{"type":47,"tag":144,"props":2302,"children":2303},{"style":275},[2304],{"type":52,"value":300},{"type":47,"tag":144,"props":2306,"children":2307},{"style":281},[2308],{"type":52,"value":305},{"type":47,"tag":144,"props":2310,"children":2311},{"style":157},[2312],{"type":52,"value":2059},{"type":47,"tag":144,"props":2314,"children":2315},{"style":281},[2316],{"type":52,"value":314},{"type":47,"tag":144,"props":2318,"children":2319},{"style":281},[2320],{"type":52,"value":319},{"type":47,"tag":144,"props":2322,"children":2323},{"class":146,"line":178},[2324,2328,2332,2336,2340,2344,2348,2353,2357],{"type":47,"tag":144,"props":2325,"children":2326},{"style":275},[2327],{"type":52,"value":278},{"type":47,"tag":144,"props":2329,"children":2330},{"style":281},[2331],{"type":52,"value":284},{"type":47,"tag":144,"props":2333,"children":2334},{"style":287},[2335],{"type":52,"value":1517},{"type":47,"tag":144,"props":2337,"children":2338},{"style":281},[2339],{"type":52,"value":295},{"type":47,"tag":144,"props":2341,"children":2342},{"style":275},[2343],{"type":52,"value":300},{"type":47,"tag":144,"props":2345,"children":2346},{"style":281},[2347],{"type":52,"value":305},{"type":47,"tag":144,"props":2349,"children":2350},{"style":157},[2351],{"type":52,"value":2352},"..\u002F..\u002Finngest\u002Fclient",{"type":47,"tag":144,"props":2354,"children":2355},{"style":281},[2356],{"type":52,"value":314},{"type":47,"tag":144,"props":2358,"children":2359},{"style":281},[2360],{"type":52,"value":319},{"type":47,"tag":144,"props":2362,"children":2363},{"class":146,"line":196},[2364,2368,2372,2376,2380,2384,2388,2393,2397],{"type":47,"tag":144,"props":2365,"children":2366},{"style":275},[2367],{"type":52,"value":278},{"type":47,"tag":144,"props":2369,"children":2370},{"style":281},[2371],{"type":52,"value":284},{"type":47,"tag":144,"props":2373,"children":2374},{"style":287},[2375],{"type":52,"value":2123},{"type":47,"tag":144,"props":2377,"children":2378},{"style":281},[2379],{"type":52,"value":295},{"type":47,"tag":144,"props":2381,"children":2382},{"style":275},[2383],{"type":52,"value":300},{"type":47,"tag":144,"props":2385,"children":2386},{"style":281},[2387],{"type":52,"value":305},{"type":47,"tag":144,"props":2389,"children":2390},{"style":157},[2391],{"type":52,"value":2392},"..\u002F..\u002Finngest\u002Ffunctions",{"type":47,"tag":144,"props":2394,"children":2395},{"style":281},[2396],{"type":52,"value":314},{"type":47,"tag":144,"props":2398,"children":2399},{"style":281},[2400],{"type":52,"value":319},{"type":47,"tag":144,"props":2402,"children":2403},{"class":146,"line":27},[2404],{"type":47,"tag":144,"props":2405,"children":2406},{"emptyLinePlaceholder":325},[2407],{"type":52,"value":328},{"type":47,"tag":144,"props":2409,"children":2410},{"class":146,"line":220},[2411,2415,2420,2424,2428],{"type":47,"tag":144,"props":2412,"children":2413},{"style":275},[2414],{"type":52,"value":336},{"type":47,"tag":144,"props":2416,"children":2417},{"style":275},[2418],{"type":52,"value":2419}," default",{"type":47,"tag":144,"props":2421,"children":2422},{"style":360},[2423],{"type":52,"value":2042},{"type":47,"tag":144,"props":2425,"children":2426},{"style":287},[2427],{"type":52,"value":367},{"type":47,"tag":144,"props":2429,"children":2430},{"style":281},[2431],{"type":52,"value":372},{"type":47,"tag":144,"props":2433,"children":2434},{"class":146,"line":228},[2435,2439,2443,2447],{"type":47,"tag":144,"props":2436,"children":2437},{"style":378},[2438],{"type":52,"value":2222},{"type":47,"tag":144,"props":2440,"children":2441},{"style":281},[2442],{"type":52,"value":386},{"type":47,"tag":144,"props":2444,"children":2445},{"style":287},[2446],{"type":52,"value":1517},{"type":47,"tag":144,"props":2448,"children":2449},{"style":281},[2450],{"type":52,"value":921},{"type":47,"tag":144,"props":2452,"children":2453},{"class":146,"line":432},[2454,2458,2462],{"type":47,"tag":144,"props":2455,"children":2456},{"style":378},[2457],{"type":52,"value":2242},{"type":47,"tag":144,"props":2459,"children":2460},{"style":281},[2461],{"type":52,"value":386},{"type":47,"tag":144,"props":2463,"children":2464},{"style":287},[2465],{"type":52,"value":2251},{"type":47,"tag":144,"props":2467,"children":2468},{"class":146,"line":441},[2469,2473,2477],{"type":47,"tag":144,"props":2470,"children":2471},{"style":281},[2472],{"type":52,"value":412},{"type":47,"tag":144,"props":2474,"children":2475},{"style":287},[2476],{"type":52,"value":417},{"type":47,"tag":144,"props":2478,"children":2479},{"style":281},[2480],{"type":52,"value":319},{"type":47,"tag":133,"props":2482,"children":2484},{"className":256,"code":2483,"language":22,"meta":138,"style":138},"\u002F\u002F For Express.js\nimport express from \"express\";\nimport { serve } from \"inngest\u002Fexpress\";\nimport { inngest } from \".\u002Finngest\u002Fclient\";\nimport { myFunction } from \".\u002Finngest\u002Ffunctions\";\n\nconst app = express();\napp.use(express.json({ limit: \"10mb\" })); \u002F\u002F Required for Inngest, increase limit for larger function state\n\napp.use(\n  \"\u002Fapi\u002Finngest\",\n  serve({\n    client: inngest,\n    functions: [myFunction]\n  })\n);\n",[2485],{"type":47,"tag":125,"props":2486,"children":2487},{"__ignoreMap":138},[2488,2496,2530,2570,2610,2650,2657,2686,2764,2771,2790,2809,2825,2845,2861,2872],{"type":47,"tag":144,"props":2489,"children":2490},{"class":146,"line":147},[2491],{"type":47,"tag":144,"props":2492,"children":2493},{"style":172},[2494],{"type":52,"value":2495},"\u002F\u002F For Express.js\n",{"type":47,"tag":144,"props":2497,"children":2498},{"class":146,"line":168},[2499,2503,2508,2513,2517,2522,2526],{"type":47,"tag":144,"props":2500,"children":2501},{"style":275},[2502],{"type":52,"value":278},{"type":47,"tag":144,"props":2504,"children":2505},{"style":287},[2506],{"type":52,"value":2507}," express ",{"type":47,"tag":144,"props":2509,"children":2510},{"style":275},[2511],{"type":52,"value":2512},"from",{"type":47,"tag":144,"props":2514,"children":2515},{"style":281},[2516],{"type":52,"value":305},{"type":47,"tag":144,"props":2518,"children":2519},{"style":157},[2520],{"type":52,"value":2521},"express",{"type":47,"tag":144,"props":2523,"children":2524},{"style":281},[2525],{"type":52,"value":314},{"type":47,"tag":144,"props":2527,"children":2528},{"style":281},[2529],{"type":52,"value":319},{"type":47,"tag":144,"props":2531,"children":2532},{"class":146,"line":178},[2533,2537,2541,2545,2549,2553,2557,2562,2566],{"type":47,"tag":144,"props":2534,"children":2535},{"style":275},[2536],{"type":52,"value":278},{"type":47,"tag":144,"props":2538,"children":2539},{"style":281},[2540],{"type":52,"value":284},{"type":47,"tag":144,"props":2542,"children":2543},{"style":287},[2544],{"type":52,"value":2042},{"type":47,"tag":144,"props":2546,"children":2547},{"style":281},[2548],{"type":52,"value":295},{"type":47,"tag":144,"props":2550,"children":2551},{"style":275},[2552],{"type":52,"value":300},{"type":47,"tag":144,"props":2554,"children":2555},{"style":281},[2556],{"type":52,"value":305},{"type":47,"tag":144,"props":2558,"children":2559},{"style":157},[2560],{"type":52,"value":2561},"inngest\u002Fexpress",{"type":47,"tag":144,"props":2563,"children":2564},{"style":281},[2565],{"type":52,"value":314},{"type":47,"tag":144,"props":2567,"children":2568},{"style":281},[2569],{"type":52,"value":319},{"type":47,"tag":144,"props":2571,"children":2572},{"class":146,"line":196},[2573,2577,2581,2585,2589,2593,2597,2602,2606],{"type":47,"tag":144,"props":2574,"children":2575},{"style":275},[2576],{"type":52,"value":278},{"type":47,"tag":144,"props":2578,"children":2579},{"style":281},[2580],{"type":52,"value":284},{"type":47,"tag":144,"props":2582,"children":2583},{"style":287},[2584],{"type":52,"value":1517},{"type":47,"tag":144,"props":2586,"children":2587},{"style":281},[2588],{"type":52,"value":295},{"type":47,"tag":144,"props":2590,"children":2591},{"style":275},[2592],{"type":52,"value":300},{"type":47,"tag":144,"props":2594,"children":2595},{"style":281},[2596],{"type":52,"value":305},{"type":47,"tag":144,"props":2598,"children":2599},{"style":157},[2600],{"type":52,"value":2601},".\u002Finngest\u002Fclient",{"type":47,"tag":144,"props":2603,"children":2604},{"style":281},[2605],{"type":52,"value":314},{"type":47,"tag":144,"props":2607,"children":2608},{"style":281},[2609],{"type":52,"value":319},{"type":47,"tag":144,"props":2611,"children":2612},{"class":146,"line":27},[2613,2617,2621,2625,2629,2633,2637,2642,2646],{"type":47,"tag":144,"props":2614,"children":2615},{"style":275},[2616],{"type":52,"value":278},{"type":47,"tag":144,"props":2618,"children":2619},{"style":281},[2620],{"type":52,"value":284},{"type":47,"tag":144,"props":2622,"children":2623},{"style":287},[2624],{"type":52,"value":2123},{"type":47,"tag":144,"props":2626,"children":2627},{"style":281},[2628],{"type":52,"value":295},{"type":47,"tag":144,"props":2630,"children":2631},{"style":275},[2632],{"type":52,"value":300},{"type":47,"tag":144,"props":2634,"children":2635},{"style":281},[2636],{"type":52,"value":305},{"type":47,"tag":144,"props":2638,"children":2639},{"style":157},[2640],{"type":52,"value":2641},".\u002Finngest\u002Ffunctions",{"type":47,"tag":144,"props":2643,"children":2644},{"style":281},[2645],{"type":52,"value":314},{"type":47,"tag":144,"props":2647,"children":2648},{"style":281},[2649],{"type":52,"value":319},{"type":47,"tag":144,"props":2651,"children":2652},{"class":146,"line":220},[2653],{"type":47,"tag":144,"props":2654,"children":2655},{"emptyLinePlaceholder":325},[2656],{"type":52,"value":328},{"type":47,"tag":144,"props":2658,"children":2659},{"class":146,"line":228},[2660,2664,2669,2673,2678,2682],{"type":47,"tag":144,"props":2661,"children":2662},{"style":339},[2663],{"type":52,"value":813},{"type":47,"tag":144,"props":2665,"children":2666},{"style":287},[2667],{"type":52,"value":2668}," app ",{"type":47,"tag":144,"props":2670,"children":2671},{"style":281},[2672],{"type":52,"value":352},{"type":47,"tag":144,"props":2674,"children":2675},{"style":360},[2676],{"type":52,"value":2677}," express",{"type":47,"tag":144,"props":2679,"children":2680},{"style":287},[2681],{"type":52,"value":916},{"type":47,"tag":144,"props":2683,"children":2684},{"style":281},[2685],{"type":52,"value":319},{"type":47,"tag":144,"props":2687,"children":2688},{"class":146,"line":432},[2689,2694,2698,2703,2708,2712,2716,2720,2724,2729,2733,2737,2742,2746,2750,2755,2759],{"type":47,"tag":144,"props":2690,"children":2691},{"style":287},[2692],{"type":52,"value":2693},"app",{"type":47,"tag":144,"props":2695,"children":2696},{"style":281},[2697],{"type":52,"value":873},{"type":47,"tag":144,"props":2699,"children":2700},{"style":360},[2701],{"type":52,"value":2702},"use",{"type":47,"tag":144,"props":2704,"children":2705},{"style":287},[2706],{"type":52,"value":2707},"(express",{"type":47,"tag":144,"props":2709,"children":2710},{"style":281},[2711],{"type":52,"value":873},{"type":47,"tag":144,"props":2713,"children":2714},{"style":360},[2715],{"type":52,"value":1842},{"type":47,"tag":144,"props":2717,"children":2718},{"style":287},[2719],{"type":52,"value":367},{"type":47,"tag":144,"props":2721,"children":2722},{"style":281},[2723],{"type":52,"value":1270},{"type":47,"tag":144,"props":2725,"children":2726},{"style":378},[2727],{"type":52,"value":2728}," limit",{"type":47,"tag":144,"props":2730,"children":2731},{"style":281},[2732],{"type":52,"value":386},{"type":47,"tag":144,"props":2734,"children":2735},{"style":281},[2736],{"type":52,"value":305},{"type":47,"tag":144,"props":2738,"children":2739},{"style":157},[2740],{"type":52,"value":2741},"10mb",{"type":47,"tag":144,"props":2743,"children":2744},{"style":281},[2745],{"type":52,"value":314},{"type":47,"tag":144,"props":2747,"children":2748},{"style":281},[2749],{"type":52,"value":295},{"type":47,"tag":144,"props":2751,"children":2752},{"style":287},[2753],{"type":52,"value":2754},"))",{"type":47,"tag":144,"props":2756,"children":2757},{"style":281},[2758],{"type":52,"value":1461},{"type":47,"tag":144,"props":2760,"children":2761},{"style":172},[2762],{"type":52,"value":2763}," \u002F\u002F Required for Inngest, increase limit for larger function state\n",{"type":47,"tag":144,"props":2765,"children":2766},{"class":146,"line":441},[2767],{"type":47,"tag":144,"props":2768,"children":2769},{"emptyLinePlaceholder":325},[2770],{"type":52,"value":328},{"type":47,"tag":144,"props":2772,"children":2773},{"class":146,"line":1034},[2774,2778,2782,2786],{"type":47,"tag":144,"props":2775,"children":2776},{"style":287},[2777],{"type":52,"value":2693},{"type":47,"tag":144,"props":2779,"children":2780},{"style":281},[2781],{"type":52,"value":873},{"type":47,"tag":144,"props":2783,"children":2784},{"style":360},[2785],{"type":52,"value":2702},{"type":47,"tag":144,"props":2787,"children":2788},{"style":287},[2789],{"type":52,"value":1342},{"type":47,"tag":144,"props":2791,"children":2792},{"class":146,"line":1050},[2793,2797,2801,2805],{"type":47,"tag":144,"props":2794,"children":2795},{"style":281},[2796],{"type":52,"value":1861},{"type":47,"tag":144,"props":2798,"children":2799},{"style":157},[2800],{"type":52,"value":1949},{"type":47,"tag":144,"props":2802,"children":2803},{"style":281},[2804],{"type":52,"value":314},{"type":47,"tag":144,"props":2806,"children":2807},{"style":281},[2808],{"type":52,"value":921},{"type":47,"tag":144,"props":2810,"children":2811},{"class":146,"line":1058},[2812,2817,2821],{"type":47,"tag":144,"props":2813,"children":2814},{"style":360},[2815],{"type":52,"value":2816},"  serve",{"type":47,"tag":144,"props":2818,"children":2819},{"style":287},[2820],{"type":52,"value":367},{"type":47,"tag":144,"props":2822,"children":2823},{"style":281},[2824],{"type":52,"value":372},{"type":47,"tag":144,"props":2826,"children":2827},{"class":146,"line":1104},[2828,2833,2837,2841],{"type":47,"tag":144,"props":2829,"children":2830},{"style":378},[2831],{"type":52,"value":2832},"    client",{"type":47,"tag":144,"props":2834,"children":2835},{"style":281},[2836],{"type":52,"value":386},{"type":47,"tag":144,"props":2838,"children":2839},{"style":287},[2840],{"type":52,"value":1517},{"type":47,"tag":144,"props":2842,"children":2843},{"style":281},[2844],{"type":52,"value":921},{"type":47,"tag":144,"props":2846,"children":2847},{"class":146,"line":1136},[2848,2853,2857],{"type":47,"tag":144,"props":2849,"children":2850},{"style":378},[2851],{"type":52,"value":2852},"    functions",{"type":47,"tag":144,"props":2854,"children":2855},{"style":281},[2856],{"type":52,"value":386},{"type":47,"tag":144,"props":2858,"children":2859},{"style":287},[2860],{"type":52,"value":2251},{"type":47,"tag":144,"props":2862,"children":2863},{"class":146,"line":1169},[2864,2868],{"type":47,"tag":144,"props":2865,"children":2866},{"style":281},[2867],{"type":52,"value":1026},{"type":47,"tag":144,"props":2869,"children":2870},{"style":287},[2871],{"type":52,"value":1031},{"type":47,"tag":144,"props":2873,"children":2874},{"class":146,"line":1200},[2875,2879],{"type":47,"tag":144,"props":2876,"children":2877},{"style":287},[2878],{"type":52,"value":417},{"type":47,"tag":144,"props":2880,"children":2881},{"style":281},[2882],{"type":52,"value":319},{"type":47,"tag":55,"props":2884,"children":2885},{},[2886,2891],{"type":47,"tag":68,"props":2887,"children":2888},{},[2889],{"type":52,"value":2890},"🔧 Framework-Specific Notes",{"type":52,"value":386},{"type":47,"tag":94,"props":2893,"children":2894},{},[2895,2913,2937,2952,2967],{"type":47,"tag":98,"props":2896,"children":2897},{},[2898,2903,2905,2911],{"type":47,"tag":68,"props":2899,"children":2900},{},[2901],{"type":52,"value":2902},"Express",{"type":52,"value":2904},": Must use ",{"type":47,"tag":125,"props":2906,"children":2908},{"className":2907},[],[2909],{"type":52,"value":2910},"express.json({ limit: \"10mb\" })",{"type":52,"value":2912}," middleware to support larger function state.",{"type":47,"tag":98,"props":2914,"children":2915},{},[2916,2921,2923,2929,2931],{"type":47,"tag":68,"props":2917,"children":2918},{},[2919],{"type":52,"value":2920},"Fastify",{"type":52,"value":2922},": Use ",{"type":47,"tag":125,"props":2924,"children":2926},{"className":2925},[],[2927],{"type":52,"value":2928},"fastifyPlugin",{"type":52,"value":2930}," from ",{"type":47,"tag":125,"props":2932,"children":2934},{"className":2933},[],[2935],{"type":52,"value":2936},"inngest\u002Ffastify",{"type":47,"tag":98,"props":2938,"children":2939},{},[2940,2945,2946],{"type":47,"tag":68,"props":2941,"children":2942},{},[2943],{"type":52,"value":2944},"Cloudflare Workers",{"type":52,"value":2922},{"type":47,"tag":125,"props":2947,"children":2949},{"className":2948},[],[2950],{"type":52,"value":2951},"inngest\u002Fcloudflare",{"type":47,"tag":98,"props":2953,"children":2954},{},[2955,2960,2961],{"type":47,"tag":68,"props":2956,"children":2957},{},[2958],{"type":52,"value":2959},"AWS Lambda",{"type":52,"value":2922},{"type":47,"tag":125,"props":2962,"children":2964},{"className":2963},[],[2965],{"type":52,"value":2966},"inngest\u002Flambda",{"type":47,"tag":98,"props":2968,"children":2969},{},[2970,2972,2978,2980],{"type":52,"value":2971},"For all other frameworks, check the ",{"type":47,"tag":125,"props":2973,"children":2975},{"className":2974},[],[2976],{"type":52,"value":2977},"serve",{"type":52,"value":2979}," reference here: ",{"type":47,"tag":76,"props":2981,"children":2984},{"href":2982,"rel":2983},"https:\u002F\u002Fwww.inngest.com\u002Fdocs-markdown\u002Flearn\u002Fserving-inngest-functions",[80],[2985],{"type":52,"value":2982},{"type":47,"tag":55,"props":2987,"children":2988},{},[2989,2994,2996,3001,3003,3008,3010,3015,3017,3022,3024,3029,3031,3036,3038,3044,3045,3051,3052,3058],{"type":47,"tag":68,"props":2990,"children":2991},{},[2992],{"type":52,"value":2993},"⚠️ v4 Change:",{"type":52,"value":2995}," Options like ",{"type":47,"tag":125,"props":2997,"children":2999},{"className":2998},[],[3000],{"type":52,"value":593},{"type":52,"value":3002},", ",{"type":47,"tag":125,"props":3004,"children":3006},{"className":3005},[],[3007],{"type":52,"value":623},{"type":52,"value":3009},", and ",{"type":47,"tag":125,"props":3011,"children":3013},{"className":3012},[],[3014],{"type":52,"value":644},{"type":52,"value":3016}," are now configured on the ",{"type":47,"tag":125,"props":3018,"children":3020},{"className":3019},[],[3021],{"type":52,"value":9},{"type":52,"value":3023}," client constructor, not on ",{"type":47,"tag":125,"props":3025,"children":3027},{"className":3026},[],[3028],{"type":52,"value":609},{"type":52,"value":3030},". The ",{"type":47,"tag":125,"props":3032,"children":3034},{"className":3033},[],[3035],{"type":52,"value":609},{"type":52,"value":3037}," function only accepts ",{"type":47,"tag":125,"props":3039,"children":3041},{"className":3040},[],[3042],{"type":52,"value":3043},"client",{"type":52,"value":3002},{"type":47,"tag":125,"props":3046,"children":3048},{"className":3047},[],[3049],{"type":52,"value":3050},"functions",{"type":52,"value":3009},{"type":47,"tag":125,"props":3053,"children":3055},{"className":3054},[],[3056],{"type":52,"value":3057},"streaming",{"type":52,"value":873},{"type":47,"tag":55,"props":3060,"children":3061},{},[3062,3066,3068,3073,3075,3081],{"type":47,"tag":68,"props":3063,"children":3064},{},[3065],{"type":52,"value":1768},{"type":52,"value":3067},": Always use ",{"type":47,"tag":125,"props":3069,"children":3071},{"className":3070},[],[3072],{"type":52,"value":1949},{"type":52,"value":3074}," as your endpoint path. This enables automatic discovery. If you must use a different path, you'll need to configure discovery manually with the ",{"type":47,"tag":125,"props":3076,"children":3078},{"className":3077},[],[3079],{"type":52,"value":3080},"-u",{"type":52,"value":3082}," flag.",{"type":47,"tag":87,"props":3084,"children":3086},{"id":3085},"step-4b-connect-as-worker-websocket-mode",[3087],{"type":52,"value":3088},"Step 4B: Connect as Worker (WebSocket Mode)",{"type":47,"tag":55,"props":3090,"children":3091},{},[3092],{"type":52,"value":3093},"For long-running applications that maintain persistent connections:",{"type":47,"tag":133,"props":3095,"children":3097},{"className":256,"code":3096,"language":22,"meta":138,"style":138},"\u002F\u002F src\u002Fworker.ts\nimport { connect } from \"inngest\u002Fconnect\";\nimport { inngest } from \".\u002Finngest\u002Fclient\";\nimport { myFunction } from \".\u002Finngest\u002Ffunctions\";\n\n(async () => {\n  const connection = await connect({\n    apps: [{ client: inngest, functions: [myFunction] }],\n    instanceId: process.env.HOSTNAME, \u002F\u002F Unique worker identifier\n    maxWorkerConcurrency: 10 \u002F\u002F Max concurrent steps\n  });\n\n  console.log(\"Worker connected:\", connection.state);\n\n  \u002F\u002F Graceful shutdown handling\n  await connection.closed;\n  console.log(\"Worker shut down\");\n})();\n",[3098],{"type":47,"tag":125,"props":3099,"children":3100},{"__ignoreMap":138},[3101,3109,3150,3189,3228,3235,3260,3294,3368,3411,3434,3449,3456,3515,3522,3530,3555,3595],{"type":47,"tag":144,"props":3102,"children":3103},{"class":146,"line":147},[3104],{"type":47,"tag":144,"props":3105,"children":3106},{"style":172},[3107],{"type":52,"value":3108},"\u002F\u002F src\u002Fworker.ts\n",{"type":47,"tag":144,"props":3110,"children":3111},{"class":146,"line":168},[3112,3116,3120,3125,3129,3133,3137,3142,3146],{"type":47,"tag":144,"props":3113,"children":3114},{"style":275},[3115],{"type":52,"value":278},{"type":47,"tag":144,"props":3117,"children":3118},{"style":281},[3119],{"type":52,"value":284},{"type":47,"tag":144,"props":3121,"children":3122},{"style":287},[3123],{"type":52,"value":3124}," connect",{"type":47,"tag":144,"props":3126,"children":3127},{"style":281},[3128],{"type":52,"value":295},{"type":47,"tag":144,"props":3130,"children":3131},{"style":275},[3132],{"type":52,"value":300},{"type":47,"tag":144,"props":3134,"children":3135},{"style":281},[3136],{"type":52,"value":305},{"type":47,"tag":144,"props":3138,"children":3139},{"style":157},[3140],{"type":52,"value":3141},"inngest\u002Fconnect",{"type":47,"tag":144,"props":3143,"children":3144},{"style":281},[3145],{"type":52,"value":314},{"type":47,"tag":144,"props":3147,"children":3148},{"style":281},[3149],{"type":52,"value":319},{"type":47,"tag":144,"props":3151,"children":3152},{"class":146,"line":178},[3153,3157,3161,3165,3169,3173,3177,3181,3185],{"type":47,"tag":144,"props":3154,"children":3155},{"style":275},[3156],{"type":52,"value":278},{"type":47,"tag":144,"props":3158,"children":3159},{"style":281},[3160],{"type":52,"value":284},{"type":47,"tag":144,"props":3162,"children":3163},{"style":287},[3164],{"type":52,"value":1517},{"type":47,"tag":144,"props":3166,"children":3167},{"style":281},[3168],{"type":52,"value":295},{"type":47,"tag":144,"props":3170,"children":3171},{"style":275},[3172],{"type":52,"value":300},{"type":47,"tag":144,"props":3174,"children":3175},{"style":281},[3176],{"type":52,"value":305},{"type":47,"tag":144,"props":3178,"children":3179},{"style":157},[3180],{"type":52,"value":2601},{"type":47,"tag":144,"props":3182,"children":3183},{"style":281},[3184],{"type":52,"value":314},{"type":47,"tag":144,"props":3186,"children":3187},{"style":281},[3188],{"type":52,"value":319},{"type":47,"tag":144,"props":3190,"children":3191},{"class":146,"line":196},[3192,3196,3200,3204,3208,3212,3216,3220,3224],{"type":47,"tag":144,"props":3193,"children":3194},{"style":275},[3195],{"type":52,"value":278},{"type":47,"tag":144,"props":3197,"children":3198},{"style":281},[3199],{"type":52,"value":284},{"type":47,"tag":144,"props":3201,"children":3202},{"style":287},[3203],{"type":52,"value":2123},{"type":47,"tag":144,"props":3205,"children":3206},{"style":281},[3207],{"type":52,"value":295},{"type":47,"tag":144,"props":3209,"children":3210},{"style":275},[3211],{"type":52,"value":300},{"type":47,"tag":144,"props":3213,"children":3214},{"style":281},[3215],{"type":52,"value":305},{"type":47,"tag":144,"props":3217,"children":3218},{"style":157},[3219],{"type":52,"value":2641},{"type":47,"tag":144,"props":3221,"children":3222},{"style":281},[3223],{"type":52,"value":314},{"type":47,"tag":144,"props":3225,"children":3226},{"style":281},[3227],{"type":52,"value":319},{"type":47,"tag":144,"props":3229,"children":3230},{"class":146,"line":27},[3231],{"type":47,"tag":144,"props":3232,"children":3233},{"emptyLinePlaceholder":325},[3234],{"type":52,"value":328},{"type":47,"tag":144,"props":3236,"children":3237},{"class":146,"line":220},[3238,3242,3247,3252,3256],{"type":47,"tag":144,"props":3239,"children":3240},{"style":287},[3241],{"type":52,"value":367},{"type":47,"tag":144,"props":3243,"children":3244},{"style":339},[3245],{"type":52,"value":3246},"async",{"type":47,"tag":144,"props":3248,"children":3249},{"style":281},[3250],{"type":52,"value":3251}," ()",{"type":47,"tag":144,"props":3253,"children":3254},{"style":339},[3255],{"type":52,"value":1425},{"type":47,"tag":144,"props":3257,"children":3258},{"style":281},[3259],{"type":52,"value":852},{"type":47,"tag":144,"props":3261,"children":3262},{"class":146,"line":228},[3263,3268,3273,3277,3282,3286,3290],{"type":47,"tag":144,"props":3264,"children":3265},{"style":339},[3266],{"type":52,"value":3267},"  const",{"type":47,"tag":144,"props":3269,"children":3270},{"style":287},[3271],{"type":52,"value":3272}," connection",{"type":47,"tag":144,"props":3274,"children":3275},{"style":281},[3276],{"type":52,"value":2202},{"type":47,"tag":144,"props":3278,"children":3279},{"style":275},[3280],{"type":52,"value":3281}," await",{"type":47,"tag":144,"props":3283,"children":3284},{"style":360},[3285],{"type":52,"value":3124},{"type":47,"tag":144,"props":3287,"children":3288},{"style":378},[3289],{"type":52,"value":367},{"type":47,"tag":144,"props":3291,"children":3292},{"style":281},[3293],{"type":52,"value":372},{"type":47,"tag":144,"props":3295,"children":3296},{"class":146,"line":432},[3297,3302,3306,3311,3315,3320,3324,3328,3332,3337,3341,3345,3350,3355,3359,3364],{"type":47,"tag":144,"props":3298,"children":3299},{"style":378},[3300],{"type":52,"value":3301},"    apps",{"type":47,"tag":144,"props":3303,"children":3304},{"style":281},[3305],{"type":52,"value":386},{"type":47,"tag":144,"props":3307,"children":3308},{"style":378},[3309],{"type":52,"value":3310}," [",{"type":47,"tag":144,"props":3312,"children":3313},{"style":281},[3314],{"type":52,"value":1270},{"type":47,"tag":144,"props":3316,"children":3317},{"style":378},[3318],{"type":52,"value":3319}," client",{"type":47,"tag":144,"props":3321,"children":3322},{"style":281},[3323],{"type":52,"value":386},{"type":47,"tag":144,"props":3325,"children":3326},{"style":287},[3327],{"type":52,"value":1517},{"type":47,"tag":144,"props":3329,"children":3330},{"style":281},[3331],{"type":52,"value":728},{"type":47,"tag":144,"props":3333,"children":3334},{"style":378},[3335],{"type":52,"value":3336}," functions",{"type":47,"tag":144,"props":3338,"children":3339},{"style":281},[3340],{"type":52,"value":386},{"type":47,"tag":144,"props":3342,"children":3343},{"style":378},[3344],{"type":52,"value":3310},{"type":47,"tag":144,"props":3346,"children":3347},{"style":287},[3348],{"type":52,"value":3349},"myFunction",{"type":47,"tag":144,"props":3351,"children":3352},{"style":378},[3353],{"type":52,"value":3354},"] ",{"type":47,"tag":144,"props":3356,"children":3357},{"style":281},[3358],{"type":52,"value":412},{"type":47,"tag":144,"props":3360,"children":3361},{"style":378},[3362],{"type":52,"value":3363},"]",{"type":47,"tag":144,"props":3365,"children":3366},{"style":281},[3367],{"type":52,"value":921},{"type":47,"tag":144,"props":3369,"children":3370},{"class":146,"line":441},[3371,3376,3380,3385,3389,3393,3397,3402,3406],{"type":47,"tag":144,"props":3372,"children":3373},{"style":378},[3374],{"type":52,"value":3375},"    instanceId",{"type":47,"tag":144,"props":3377,"children":3378},{"style":281},[3379],{"type":52,"value":386},{"type":47,"tag":144,"props":3381,"children":3382},{"style":287},[3383],{"type":52,"value":3384}," process",{"type":47,"tag":144,"props":3386,"children":3387},{"style":281},[3388],{"type":52,"value":873},{"type":47,"tag":144,"props":3390,"children":3391},{"style":287},[3392],{"type":52,"value":519},{"type":47,"tag":144,"props":3394,"children":3395},{"style":281},[3396],{"type":52,"value":873},{"type":47,"tag":144,"props":3398,"children":3399},{"style":287},[3400],{"type":52,"value":3401},"HOSTNAME",{"type":47,"tag":144,"props":3403,"children":3404},{"style":281},[3405],{"type":52,"value":728},{"type":47,"tag":144,"props":3407,"children":3408},{"style":172},[3409],{"type":52,"value":3410}," \u002F\u002F Unique worker identifier\n",{"type":47,"tag":144,"props":3412,"children":3413},{"class":146,"line":1034},[3414,3419,3423,3429],{"type":47,"tag":144,"props":3415,"children":3416},{"style":378},[3417],{"type":52,"value":3418},"    maxWorkerConcurrency",{"type":47,"tag":144,"props":3420,"children":3421},{"style":281},[3422],{"type":52,"value":386},{"type":47,"tag":144,"props":3424,"children":3426},{"style":3425},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[3427],{"type":52,"value":3428}," 10",{"type":47,"tag":144,"props":3430,"children":3431},{"style":172},[3432],{"type":52,"value":3433}," \u002F\u002F Max concurrent steps\n",{"type":47,"tag":144,"props":3435,"children":3436},{"class":146,"line":1050},[3437,3441,3445],{"type":47,"tag":144,"props":3438,"children":3439},{"style":281},[3440],{"type":52,"value":1026},{"type":47,"tag":144,"props":3442,"children":3443},{"style":378},[3444],{"type":52,"value":417},{"type":47,"tag":144,"props":3446,"children":3447},{"style":281},[3448],{"type":52,"value":319},{"type":47,"tag":144,"props":3450,"children":3451},{"class":146,"line":1058},[3452],{"type":47,"tag":144,"props":3453,"children":3454},{"emptyLinePlaceholder":325},[3455],{"type":52,"value":328},{"type":47,"tag":144,"props":3457,"children":3458},{"class":146,"line":1104},[3459,3464,3468,3473,3477,3481,3486,3490,3494,3498,3502,3507,3511],{"type":47,"tag":144,"props":3460,"children":3461},{"style":287},[3462],{"type":52,"value":3463},"  console",{"type":47,"tag":144,"props":3465,"children":3466},{"style":281},[3467],{"type":52,"value":873},{"type":47,"tag":144,"props":3469,"children":3470},{"style":360},[3471],{"type":52,"value":3472},"log",{"type":47,"tag":144,"props":3474,"children":3475},{"style":378},[3476],{"type":52,"value":367},{"type":47,"tag":144,"props":3478,"children":3479},{"style":281},[3480],{"type":52,"value":314},{"type":47,"tag":144,"props":3482,"children":3483},{"style":157},[3484],{"type":52,"value":3485},"Worker connected:",{"type":47,"tag":144,"props":3487,"children":3488},{"style":281},[3489],{"type":52,"value":314},{"type":47,"tag":144,"props":3491,"children":3492},{"style":281},[3493],{"type":52,"value":728},{"type":47,"tag":144,"props":3495,"children":3496},{"style":287},[3497],{"type":52,"value":3272},{"type":47,"tag":144,"props":3499,"children":3500},{"style":281},[3501],{"type":52,"value":873},{"type":47,"tag":144,"props":3503,"children":3504},{"style":287},[3505],{"type":52,"value":3506},"state",{"type":47,"tag":144,"props":3508,"children":3509},{"style":378},[3510],{"type":52,"value":417},{"type":47,"tag":144,"props":3512,"children":3513},{"style":281},[3514],{"type":52,"value":319},{"type":47,"tag":144,"props":3516,"children":3517},{"class":146,"line":1136},[3518],{"type":47,"tag":144,"props":3519,"children":3520},{"emptyLinePlaceholder":325},[3521],{"type":52,"value":328},{"type":47,"tag":144,"props":3523,"children":3524},{"class":146,"line":1169},[3525],{"type":47,"tag":144,"props":3526,"children":3527},{"style":172},[3528],{"type":52,"value":3529},"  \u002F\u002F Graceful shutdown handling\n",{"type":47,"tag":144,"props":3531,"children":3532},{"class":146,"line":1200},[3533,3538,3542,3546,3551],{"type":47,"tag":144,"props":3534,"children":3535},{"style":275},[3536],{"type":52,"value":3537},"  await",{"type":47,"tag":144,"props":3539,"children":3540},{"style":287},[3541],{"type":52,"value":3272},{"type":47,"tag":144,"props":3543,"children":3544},{"style":281},[3545],{"type":52,"value":873},{"type":47,"tag":144,"props":3547,"children":3548},{"style":287},[3549],{"type":52,"value":3550},"closed",{"type":47,"tag":144,"props":3552,"children":3553},{"style":281},[3554],{"type":52,"value":319},{"type":47,"tag":144,"props":3556,"children":3557},{"class":146,"line":1212},[3558,3562,3566,3570,3574,3578,3583,3587,3591],{"type":47,"tag":144,"props":3559,"children":3560},{"style":287},[3561],{"type":52,"value":3463},{"type":47,"tag":144,"props":3563,"children":3564},{"style":281},[3565],{"type":52,"value":873},{"type":47,"tag":144,"props":3567,"children":3568},{"style":360},[3569],{"type":52,"value":3472},{"type":47,"tag":144,"props":3571,"children":3572},{"style":378},[3573],{"type":52,"value":367},{"type":47,"tag":144,"props":3575,"children":3576},{"style":281},[3577],{"type":52,"value":314},{"type":47,"tag":144,"props":3579,"children":3580},{"style":157},[3581],{"type":52,"value":3582},"Worker shut down",{"type":47,"tag":144,"props":3584,"children":3585},{"style":281},[3586],{"type":52,"value":314},{"type":47,"tag":144,"props":3588,"children":3589},{"style":378},[3590],{"type":52,"value":417},{"type":47,"tag":144,"props":3592,"children":3593},{"style":281},[3594],{"type":52,"value":319},{"type":47,"tag":144,"props":3596,"children":3597},{"class":146,"line":1228},[3598,3602,3607],{"type":47,"tag":144,"props":3599,"children":3600},{"style":281},[3601],{"type":52,"value":412},{"type":47,"tag":144,"props":3603,"children":3604},{"style":287},[3605],{"type":52,"value":3606},")()",{"type":47,"tag":144,"props":3608,"children":3609},{"style":281},[3610],{"type":52,"value":319},{"type":47,"tag":55,"props":3612,"children":3613},{},[3614,3619],{"type":47,"tag":68,"props":3615,"children":3616},{},[3617],{"type":52,"value":3618},"Requirements for Connect Mode",{"type":52,"value":386},{"type":47,"tag":94,"props":3621,"children":3622},{},[3623,3628,3633,3649],{"type":47,"tag":98,"props":3624,"children":3625},{},[3626],{"type":52,"value":3627},"Node.js 22.4+ (or Deno 1.4+, Bun 1.1+) for WebSocket support",{"type":47,"tag":98,"props":3629,"children":3630},{},[3631],{"type":52,"value":3632},"Long-running server environment (not serverless)",{"type":47,"tag":98,"props":3634,"children":3635},{},[3636,3641,3642,3647],{"type":47,"tag":125,"props":3637,"children":3639},{"className":3638},[],[3640],{"type":52,"value":601},{"type":52,"value":1777},{"type":47,"tag":125,"props":3643,"children":3645},{"className":3644},[],[3646],{"type":52,"value":505},{"type":52,"value":3648}," for production",{"type":47,"tag":98,"props":3650,"children":3651},{},[3652,3654,3660,3662,3667],{"type":52,"value":3653},"Set the ",{"type":47,"tag":125,"props":3655,"children":3657},{"className":3656},[],[3658],{"type":52,"value":3659},"appVersion",{"type":52,"value":3661}," parameter on the ",{"type":47,"tag":125,"props":3663,"children":3665},{"className":3664},[],[3666],{"type":52,"value":9},{"type":52,"value":3668}," client for production to support rolling deploys",{"type":47,"tag":55,"props":3670,"children":3671},{},[3672],{"type":47,"tag":68,"props":3673,"children":3674},{},[3675],{"type":52,"value":3676},"v4 Connect Changes:",{"type":47,"tag":94,"props":3678,"children":3679},{},[3680,3705],{"type":47,"tag":98,"props":3681,"children":3682},{},[3683,3688,3690,3696,3698,3704],{"type":47,"tag":68,"props":3684,"children":3685},{},[3686],{"type":52,"value":3687},"Worker thread isolation",{"type":52,"value":3689}," is enabled by default — WebSocket connections execute in a worker thread to prevent event loop starvation. Set ",{"type":47,"tag":125,"props":3691,"children":3693},{"className":3692},[],[3694],{"type":52,"value":3695},"isolateExecution: false",{"type":52,"value":3697}," to use a single process (or ",{"type":47,"tag":125,"props":3699,"children":3701},{"className":3700},[],[3702],{"type":52,"value":3703},"INNGEST_CONNECT_ISOLATE_EXECUTION=false",{"type":52,"value":417},{"type":47,"tag":98,"props":3706,"children":3707},{},[3708,3717,3719,3725,3727,3733],{"type":47,"tag":68,"props":3709,"children":3710},{},[3711],{"type":47,"tag":125,"props":3712,"children":3714},{"className":3713},[],[3715],{"type":52,"value":3716},"rewriteGatewayEndpoint",{"type":52,"value":3718}," callback has been replaced with the ",{"type":47,"tag":125,"props":3720,"children":3722},{"className":3721},[],[3723],{"type":52,"value":3724},"gatewayUrl",{"type":52,"value":3726}," string option (or ",{"type":47,"tag":125,"props":3728,"children":3730},{"className":3729},[],[3731],{"type":52,"value":3732},"INNGEST_CONNECT_GATEWAY_URL",{"type":52,"value":507},{"type":47,"tag":87,"props":3735,"children":3737},{"id":3736},"step-5-organizing-with-apps",[3738],{"type":52,"value":3739},"Step 5: Organizing with Apps",{"type":47,"tag":55,"props":3741,"children":3742},{},[3743],{"type":52,"value":3744},"As your system grows, organize functions into logical apps:",{"type":47,"tag":133,"props":3746,"children":3748},{"className":256,"code":3747,"language":22,"meta":138,"style":138},"\u002F\u002F User service\nconst userService = new Inngest({ id: \"user-service\" });\n\n\u002F\u002F Payment service\nconst paymentService = new Inngest({ id: \"payment-service\" });\n\n\u002F\u002F Email service\nconst emailService = new Inngest({ id: \"email-service\" });\n",[3749],{"type":47,"tag":125,"props":3750,"children":3751},{"__ignoreMap":138},[3752,3760,3825,3832,3840,3905,3912,3920],{"type":47,"tag":144,"props":3753,"children":3754},{"class":146,"line":147},[3755],{"type":47,"tag":144,"props":3756,"children":3757},{"style":172},[3758],{"type":52,"value":3759},"\u002F\u002F User service\n",{"type":47,"tag":144,"props":3761,"children":3762},{"class":146,"line":168},[3763,3767,3772,3776,3780,3784,3788,3792,3796,3800,3804,3809,3813,3817,3821],{"type":47,"tag":144,"props":3764,"children":3765},{"style":339},[3766],{"type":52,"value":813},{"type":47,"tag":144,"props":3768,"children":3769},{"style":287},[3770],{"type":52,"value":3771}," userService ",{"type":47,"tag":144,"props":3773,"children":3774},{"style":281},[3775],{"type":52,"value":352},{"type":47,"tag":144,"props":3777,"children":3778},{"style":281},[3779],{"type":52,"value":357},{"type":47,"tag":144,"props":3781,"children":3782},{"style":360},[3783],{"type":52,"value":290},{"type":47,"tag":144,"props":3785,"children":3786},{"style":287},[3787],{"type":52,"value":367},{"type":47,"tag":144,"props":3789,"children":3790},{"style":281},[3791],{"type":52,"value":1270},{"type":47,"tag":144,"props":3793,"children":3794},{"style":378},[3795],{"type":52,"value":1275},{"type":47,"tag":144,"props":3797,"children":3798},{"style":281},[3799],{"type":52,"value":386},{"type":47,"tag":144,"props":3801,"children":3802},{"style":281},[3803],{"type":52,"value":305},{"type":47,"tag":144,"props":3805,"children":3806},{"style":157},[3807],{"type":52,"value":3808},"user-service",{"type":47,"tag":144,"props":3810,"children":3811},{"style":281},[3812],{"type":52,"value":314},{"type":47,"tag":144,"props":3814,"children":3815},{"style":281},[3816],{"type":52,"value":295},{"type":47,"tag":144,"props":3818,"children":3819},{"style":287},[3820],{"type":52,"value":417},{"type":47,"tag":144,"props":3822,"children":3823},{"style":281},[3824],{"type":52,"value":319},{"type":47,"tag":144,"props":3826,"children":3827},{"class":146,"line":178},[3828],{"type":47,"tag":144,"props":3829,"children":3830},{"emptyLinePlaceholder":325},[3831],{"type":52,"value":328},{"type":47,"tag":144,"props":3833,"children":3834},{"class":146,"line":196},[3835],{"type":47,"tag":144,"props":3836,"children":3837},{"style":172},[3838],{"type":52,"value":3839},"\u002F\u002F Payment service\n",{"type":47,"tag":144,"props":3841,"children":3842},{"class":146,"line":27},[3843,3847,3852,3856,3860,3864,3868,3872,3876,3880,3884,3889,3893,3897,3901],{"type":47,"tag":144,"props":3844,"children":3845},{"style":339},[3846],{"type":52,"value":813},{"type":47,"tag":144,"props":3848,"children":3849},{"style":287},[3850],{"type":52,"value":3851}," paymentService ",{"type":47,"tag":144,"props":3853,"children":3854},{"style":281},[3855],{"type":52,"value":352},{"type":47,"tag":144,"props":3857,"children":3858},{"style":281},[3859],{"type":52,"value":357},{"type":47,"tag":144,"props":3861,"children":3862},{"style":360},[3863],{"type":52,"value":290},{"type":47,"tag":144,"props":3865,"children":3866},{"style":287},[3867],{"type":52,"value":367},{"type":47,"tag":144,"props":3869,"children":3870},{"style":281},[3871],{"type":52,"value":1270},{"type":47,"tag":144,"props":3873,"children":3874},{"style":378},[3875],{"type":52,"value":1275},{"type":47,"tag":144,"props":3877,"children":3878},{"style":281},[3879],{"type":52,"value":386},{"type":47,"tag":144,"props":3881,"children":3882},{"style":281},[3883],{"type":52,"value":305},{"type":47,"tag":144,"props":3885,"children":3886},{"style":157},[3887],{"type":52,"value":3888},"payment-service",{"type":47,"tag":144,"props":3890,"children":3891},{"style":281},[3892],{"type":52,"value":314},{"type":47,"tag":144,"props":3894,"children":3895},{"style":281},[3896],{"type":52,"value":295},{"type":47,"tag":144,"props":3898,"children":3899},{"style":287},[3900],{"type":52,"value":417},{"type":47,"tag":144,"props":3902,"children":3903},{"style":281},[3904],{"type":52,"value":319},{"type":47,"tag":144,"props":3906,"children":3907},{"class":146,"line":220},[3908],{"type":47,"tag":144,"props":3909,"children":3910},{"emptyLinePlaceholder":325},[3911],{"type":52,"value":328},{"type":47,"tag":144,"props":3913,"children":3914},{"class":146,"line":228},[3915],{"type":47,"tag":144,"props":3916,"children":3917},{"style":172},[3918],{"type":52,"value":3919},"\u002F\u002F Email service\n",{"type":47,"tag":144,"props":3921,"children":3922},{"class":146,"line":432},[3923,3927,3932,3936,3940,3944,3948,3952,3956,3960,3964,3969,3973,3977,3981],{"type":47,"tag":144,"props":3924,"children":3925},{"style":339},[3926],{"type":52,"value":813},{"type":47,"tag":144,"props":3928,"children":3929},{"style":287},[3930],{"type":52,"value":3931}," emailService ",{"type":47,"tag":144,"props":3933,"children":3934},{"style":281},[3935],{"type":52,"value":352},{"type":47,"tag":144,"props":3937,"children":3938},{"style":281},[3939],{"type":52,"value":357},{"type":47,"tag":144,"props":3941,"children":3942},{"style":360},[3943],{"type":52,"value":290},{"type":47,"tag":144,"props":3945,"children":3946},{"style":287},[3947],{"type":52,"value":367},{"type":47,"tag":144,"props":3949,"children":3950},{"style":281},[3951],{"type":52,"value":1270},{"type":47,"tag":144,"props":3953,"children":3954},{"style":378},[3955],{"type":52,"value":1275},{"type":47,"tag":144,"props":3957,"children":3958},{"style":281},[3959],{"type":52,"value":386},{"type":47,"tag":144,"props":3961,"children":3962},{"style":281},[3963],{"type":52,"value":305},{"type":47,"tag":144,"props":3965,"children":3966},{"style":157},[3967],{"type":52,"value":3968},"email-service",{"type":47,"tag":144,"props":3970,"children":3971},{"style":281},[3972],{"type":52,"value":314},{"type":47,"tag":144,"props":3974,"children":3975},{"style":281},[3976],{"type":52,"value":295},{"type":47,"tag":144,"props":3978,"children":3979},{"style":287},[3980],{"type":52,"value":417},{"type":47,"tag":144,"props":3982,"children":3983},{"style":281},[3984],{"type":52,"value":319},{"type":47,"tag":55,"props":3986,"children":3987},{},[3988],{"type":52,"value":3989},"Each app gets its own section in the Inngest dashboard and can be deployed independently. Use descriptive, hyphenated IDs that match your service architecture.",{"type":47,"tag":55,"props":3991,"children":3992},{},[3993,3997,3999,4004],{"type":47,"tag":68,"props":3994,"children":3995},{},[3996],{"type":52,"value":1768},{"type":52,"value":3998},": Changing an app's ",{"type":47,"tag":125,"props":4000,"children":4002},{"className":4001},[],[4003],{"type":52,"value":469},{"type":52,"value":4005}," creates a new app in Inngest. Keep IDs consistent across deployments.",{"type":47,"tag":87,"props":4007,"children":4009},{"id":4008},"step-6-local-development-with-inngest-cli",[4010],{"type":52,"value":4011},"Step 6: Local Development with inngest-cli",{"type":47,"tag":55,"props":4013,"children":4014},{},[4015],{"type":52,"value":4016},"Start the Inngest Dev Server for local development:",{"type":47,"tag":133,"props":4018,"children":4020},{"className":135,"code":4019,"language":137,"meta":138,"style":138},"# Auto-discover your app on common ports\u002Fendpoints\nnpx --ignore-scripts=false inngest-cli@latest dev\n\n# Specify your app's URL manually\nnpx --ignore-scripts=false inngest-cli@latest dev -u http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest\n\n# Custom port for dev server\nnpx --ignore-scripts=false inngest-cli@latest dev -p 9999\n\n# Disable auto-discovery\nnpx --ignore-scripts=false inngest-cli@latest dev --no-discovery -u http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest\n\n# Multiple apps\nnpx --ignore-scripts=false inngest-cli@latest dev -u http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest -u http:\u002F\u002Flocalhost:4000\u002Fapi\u002Finngest\n",[4021],{"type":47,"tag":125,"props":4022,"children":4023},{"__ignoreMap":138},[4024,4032,4055,4062,4070,4100,4107,4115,4144,4151,4159,4191,4198,4206],{"type":47,"tag":144,"props":4025,"children":4026},{"class":146,"line":147},[4027],{"type":47,"tag":144,"props":4028,"children":4029},{"style":172},[4030],{"type":52,"value":4031},"# Auto-discover your app on common ports\u002Fendpoints\n",{"type":47,"tag":144,"props":4033,"children":4034},{"class":146,"line":168},[4035,4040,4045,4050],{"type":47,"tag":144,"props":4036,"children":4037},{"style":151},[4038],{"type":52,"value":4039},"npx",{"type":47,"tag":144,"props":4041,"children":4042},{"style":157},[4043],{"type":52,"value":4044}," --ignore-scripts=false",{"type":47,"tag":144,"props":4046,"children":4047},{"style":157},[4048],{"type":52,"value":4049}," inngest-cli@latest",{"type":47,"tag":144,"props":4051,"children":4052},{"style":157},[4053],{"type":52,"value":4054}," dev\n",{"type":47,"tag":144,"props":4056,"children":4057},{"class":146,"line":178},[4058],{"type":47,"tag":144,"props":4059,"children":4060},{"emptyLinePlaceholder":325},[4061],{"type":52,"value":328},{"type":47,"tag":144,"props":4063,"children":4064},{"class":146,"line":196},[4065],{"type":47,"tag":144,"props":4066,"children":4067},{"style":172},[4068],{"type":52,"value":4069},"# Specify your app's URL manually\n",{"type":47,"tag":144,"props":4071,"children":4072},{"class":146,"line":27},[4073,4077,4081,4085,4090,4095],{"type":47,"tag":144,"props":4074,"children":4075},{"style":151},[4076],{"type":52,"value":4039},{"type":47,"tag":144,"props":4078,"children":4079},{"style":157},[4080],{"type":52,"value":4044},{"type":47,"tag":144,"props":4082,"children":4083},{"style":157},[4084],{"type":52,"value":4049},{"type":47,"tag":144,"props":4086,"children":4087},{"style":157},[4088],{"type":52,"value":4089}," dev",{"type":47,"tag":144,"props":4091,"children":4092},{"style":157},[4093],{"type":52,"value":4094}," -u",{"type":47,"tag":144,"props":4096,"children":4097},{"style":157},[4098],{"type":52,"value":4099}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest\n",{"type":47,"tag":144,"props":4101,"children":4102},{"class":146,"line":220},[4103],{"type":47,"tag":144,"props":4104,"children":4105},{"emptyLinePlaceholder":325},[4106],{"type":52,"value":328},{"type":47,"tag":144,"props":4108,"children":4109},{"class":146,"line":228},[4110],{"type":47,"tag":144,"props":4111,"children":4112},{"style":172},[4113],{"type":52,"value":4114},"# Custom port for dev server\n",{"type":47,"tag":144,"props":4116,"children":4117},{"class":146,"line":432},[4118,4122,4126,4130,4134,4139],{"type":47,"tag":144,"props":4119,"children":4120},{"style":151},[4121],{"type":52,"value":4039},{"type":47,"tag":144,"props":4123,"children":4124},{"style":157},[4125],{"type":52,"value":4044},{"type":47,"tag":144,"props":4127,"children":4128},{"style":157},[4129],{"type":52,"value":4049},{"type":47,"tag":144,"props":4131,"children":4132},{"style":157},[4133],{"type":52,"value":4089},{"type":47,"tag":144,"props":4135,"children":4136},{"style":157},[4137],{"type":52,"value":4138}," -p",{"type":47,"tag":144,"props":4140,"children":4141},{"style":3425},[4142],{"type":52,"value":4143}," 9999\n",{"type":47,"tag":144,"props":4145,"children":4146},{"class":146,"line":441},[4147],{"type":47,"tag":144,"props":4148,"children":4149},{"emptyLinePlaceholder":325},[4150],{"type":52,"value":328},{"type":47,"tag":144,"props":4152,"children":4153},{"class":146,"line":1034},[4154],{"type":47,"tag":144,"props":4155,"children":4156},{"style":172},[4157],{"type":52,"value":4158},"# Disable auto-discovery\n",{"type":47,"tag":144,"props":4160,"children":4161},{"class":146,"line":1050},[4162,4166,4170,4174,4178,4183,4187],{"type":47,"tag":144,"props":4163,"children":4164},{"style":151},[4165],{"type":52,"value":4039},{"type":47,"tag":144,"props":4167,"children":4168},{"style":157},[4169],{"type":52,"value":4044},{"type":47,"tag":144,"props":4171,"children":4172},{"style":157},[4173],{"type":52,"value":4049},{"type":47,"tag":144,"props":4175,"children":4176},{"style":157},[4177],{"type":52,"value":4089},{"type":47,"tag":144,"props":4179,"children":4180},{"style":157},[4181],{"type":52,"value":4182}," --no-discovery",{"type":47,"tag":144,"props":4184,"children":4185},{"style":157},[4186],{"type":52,"value":4094},{"type":47,"tag":144,"props":4188,"children":4189},{"style":157},[4190],{"type":52,"value":4099},{"type":47,"tag":144,"props":4192,"children":4193},{"class":146,"line":1058},[4194],{"type":47,"tag":144,"props":4195,"children":4196},{"emptyLinePlaceholder":325},[4197],{"type":52,"value":328},{"type":47,"tag":144,"props":4199,"children":4200},{"class":146,"line":1104},[4201],{"type":47,"tag":144,"props":4202,"children":4203},{"style":172},[4204],{"type":52,"value":4205},"# Multiple apps\n",{"type":47,"tag":144,"props":4207,"children":4208},{"class":146,"line":1136},[4209,4213,4217,4221,4225,4229,4234,4238],{"type":47,"tag":144,"props":4210,"children":4211},{"style":151},[4212],{"type":52,"value":4039},{"type":47,"tag":144,"props":4214,"children":4215},{"style":157},[4216],{"type":52,"value":4044},{"type":47,"tag":144,"props":4218,"children":4219},{"style":157},[4220],{"type":52,"value":4049},{"type":47,"tag":144,"props":4222,"children":4223},{"style":157},[4224],{"type":52,"value":4089},{"type":47,"tag":144,"props":4226,"children":4227},{"style":157},[4228],{"type":52,"value":4094},{"type":47,"tag":144,"props":4230,"children":4231},{"style":157},[4232],{"type":52,"value":4233}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest",{"type":47,"tag":144,"props":4235,"children":4236},{"style":157},[4237],{"type":52,"value":4094},{"type":47,"tag":144,"props":4239,"children":4240},{"style":157},[4241],{"type":52,"value":4242}," http:\u002F\u002Flocalhost:4000\u002Fapi\u002Finngest\n",{"type":47,"tag":55,"props":4244,"children":4245},{},[4246,4248,4254],{"type":52,"value":4247},"The dev server will be available at ",{"type":47,"tag":125,"props":4249,"children":4251},{"className":4250},[],[4252],{"type":52,"value":4253},"http:\u002F\u002Flocalhost:8288",{"type":52,"value":4255}," by default.",{"type":47,"tag":449,"props":4257,"children":4259},{"id":4258},"configuration-file-optional",[4260],{"type":52,"value":4261},"Configuration File (Optional)",{"type":47,"tag":55,"props":4263,"children":4264},{},[4265,4267,4273],{"type":52,"value":4266},"Create ",{"type":47,"tag":125,"props":4268,"children":4270},{"className":4269},[],[4271],{"type":52,"value":4272},"inngest.json",{"type":52,"value":4274}," for complex setups:",{"type":47,"tag":133,"props":4276,"children":4278},{"className":1840,"code":4277,"language":1842,"meta":138,"style":138},"{\n  \"sdk-url\": [\n    \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest\",\n    \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Finngest\"\n  ],\n  \"port\": 8289,\n  \"no-discovery\": true\n}\n",[4279],{"type":47,"tag":125,"props":4280,"children":4281},{"__ignoreMap":138},[4282,4289,4314,4334,4350,4358,4387,4412],{"type":47,"tag":144,"props":4283,"children":4284},{"class":146,"line":147},[4285],{"type":47,"tag":144,"props":4286,"children":4287},{"style":281},[4288],{"type":52,"value":372},{"type":47,"tag":144,"props":4290,"children":4291},{"class":146,"line":168},[4292,4296,4301,4305,4309],{"type":47,"tag":144,"props":4293,"children":4294},{"style":281},[4295],{"type":52,"value":1861},{"type":47,"tag":144,"props":4297,"children":4298},{"style":339},[4299],{"type":52,"value":4300},"sdk-url",{"type":47,"tag":144,"props":4302,"children":4303},{"style":281},[4304],{"type":52,"value":314},{"type":47,"tag":144,"props":4306,"children":4307},{"style":281},[4308],{"type":52,"value":386},{"type":47,"tag":144,"props":4310,"children":4311},{"style":281},[4312],{"type":52,"value":4313}," [\n",{"type":47,"tag":144,"props":4315,"children":4316},{"class":146,"line":178},[4317,4321,4326,4330],{"type":47,"tag":144,"props":4318,"children":4319},{"style":281},[4320],{"type":52,"value":1886},{"type":47,"tag":144,"props":4322,"children":4323},{"style":157},[4324],{"type":52,"value":4325},"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Finngest",{"type":47,"tag":144,"props":4327,"children":4328},{"style":281},[4329],{"type":52,"value":314},{"type":47,"tag":144,"props":4331,"children":4332},{"style":281},[4333],{"type":52,"value":921},{"type":47,"tag":144,"props":4335,"children":4336},{"class":146,"line":196},[4337,4341,4346],{"type":47,"tag":144,"props":4338,"children":4339},{"style":281},[4340],{"type":52,"value":1886},{"type":47,"tag":144,"props":4342,"children":4343},{"style":157},[4344],{"type":52,"value":4345},"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Finngest",{"type":47,"tag":144,"props":4347,"children":4348},{"style":281},[4349],{"type":52,"value":1639},{"type":47,"tag":144,"props":4351,"children":4352},{"class":146,"line":27},[4353],{"type":47,"tag":144,"props":4354,"children":4355},{"style":281},[4356],{"type":52,"value":4357},"  ],\n",{"type":47,"tag":144,"props":4359,"children":4360},{"class":146,"line":220},[4361,4365,4370,4374,4378,4383],{"type":47,"tag":144,"props":4362,"children":4363},{"style":281},[4364],{"type":52,"value":1861},{"type":47,"tag":144,"props":4366,"children":4367},{"style":339},[4368],{"type":52,"value":4369},"port",{"type":47,"tag":144,"props":4371,"children":4372},{"style":281},[4373],{"type":52,"value":314},{"type":47,"tag":144,"props":4375,"children":4376},{"style":281},[4377],{"type":52,"value":386},{"type":47,"tag":144,"props":4379,"children":4380},{"style":3425},[4381],{"type":52,"value":4382}," 8289",{"type":47,"tag":144,"props":4384,"children":4385},{"style":281},[4386],{"type":52,"value":921},{"type":47,"tag":144,"props":4388,"children":4389},{"class":146,"line":228},[4390,4394,4399,4403,4407],{"type":47,"tag":144,"props":4391,"children":4392},{"style":281},[4393],{"type":52,"value":1861},{"type":47,"tag":144,"props":4395,"children":4396},{"style":339},[4397],{"type":52,"value":4398},"no-discovery",{"type":47,"tag":144,"props":4400,"children":4401},{"style":281},[4402],{"type":52,"value":314},{"type":47,"tag":144,"props":4404,"children":4405},{"style":281},[4406],{"type":52,"value":386},{"type":47,"tag":144,"props":4408,"children":4409},{"style":281},[4410],{"type":52,"value":4411}," true\n",{"type":47,"tag":144,"props":4413,"children":4414},{"class":146,"line":432},[4415],{"type":47,"tag":144,"props":4416,"children":4417},{"style":281},[4418],{"type":52,"value":1927},{"type":47,"tag":87,"props":4420,"children":4422},{"id":4421},"environment-specific-setup",[4423],{"type":52,"value":4424},"Environment-Specific Setup",{"type":47,"tag":449,"props":4426,"children":4428},{"id":4427},"local-development",[4429],{"type":52,"value":4430},"Local Development",{"type":47,"tag":133,"props":4432,"children":4434},{"className":1685,"code":4433,"language":519,"meta":138,"style":138},"INNGEST_DEV=1\n# No keys required in dev mode\n",[4435],{"type":47,"tag":125,"props":4436,"children":4437},{"__ignoreMap":138},[4438,4445],{"type":47,"tag":144,"props":4439,"children":4440},{"class":146,"line":147},[4441],{"type":47,"tag":144,"props":4442,"children":4443},{},[4444],{"type":52,"value":1737},{"type":47,"tag":144,"props":4446,"children":4447},{"class":146,"line":168},[4448],{"type":47,"tag":144,"props":4449,"children":4450},{},[4451],{"type":52,"value":4452},"# No keys required in dev mode\n",{"type":47,"tag":449,"props":4454,"children":4456},{"id":4455},"production",[4457],{"type":52,"value":4458},"Production",{"type":47,"tag":133,"props":4460,"children":4462},{"className":1685,"code":4461,"language":519,"meta":138,"style":138},"INNGEST_EVENT_KEY=evt_your_production_event_key\nINNGEST_SIGNING_KEY=signkey_your_production_signing_key\n",[4463],{"type":47,"tag":125,"props":4464,"children":4465},{"__ignoreMap":138},[4466,4474],{"type":47,"tag":144,"props":4467,"children":4468},{"class":146,"line":147},[4469],{"type":47,"tag":144,"props":4470,"children":4471},{},[4472],{"type":52,"value":4473},"INNGEST_EVENT_KEY=evt_your_production_event_key\n",{"type":47,"tag":144,"props":4475,"children":4476},{"class":146,"line":168},[4477],{"type":47,"tag":144,"props":4478,"children":4479},{},[4480],{"type":52,"value":4481},"INNGEST_SIGNING_KEY=signkey_your_production_signing_key\n",{"type":47,"tag":449,"props":4483,"children":4485},{"id":4484},"custom-dev-server-port",[4486],{"type":52,"value":4487},"Custom Dev Server Port",{"type":47,"tag":133,"props":4489,"children":4491},{"className":1685,"code":4490,"language":519,"meta":138,"style":138},"INNGEST_DEV=1\nINNGEST_BASE_URL=http:\u002F\u002Flocalhost:9999\n",[4492],{"type":47,"tag":125,"props":4493,"children":4494},{"__ignoreMap":138},[4495,4502],{"type":47,"tag":144,"props":4496,"children":4497},{"class":146,"line":147},[4498],{"type":47,"tag":144,"props":4499,"children":4500},{},[4501],{"type":52,"value":1737},{"type":47,"tag":144,"props":4503,"children":4504},{"class":146,"line":168},[4505],{"type":47,"tag":144,"props":4506,"children":4507},{},[4508],{"type":52,"value":4509},"INNGEST_BASE_URL=http:\u002F\u002Flocalhost:9999\n",{"type":47,"tag":55,"props":4511,"children":4512},{},[4513,4515,4520],{"type":52,"value":4514},"If your app runs on a non-standard port (not 3000), make sure the dev server can reach it by specifying the URL with ",{"type":47,"tag":125,"props":4516,"children":4518},{"className":4517},[],[4519],{"type":52,"value":3080},{"type":52,"value":3082},{"type":47,"tag":87,"props":4522,"children":4524},{"id":4523},"common-issues-solutions",[4525],{"type":52,"value":4526},"Common Issues & Solutions",{"type":47,"tag":55,"props":4528,"children":4529},{},[4530,4535,4537],{"type":47,"tag":68,"props":4531,"children":4532},{},[4533],{"type":52,"value":4534},"Port Conflicts",{"type":52,"value":4536},": If port 8288 is in use, specify a different port: ",{"type":47,"tag":125,"props":4538,"children":4540},{"className":4539},[],[4541],{"type":52,"value":4542},"-p 9999",{"type":47,"tag":55,"props":4544,"children":4545},{},[4546,4551,4553,4559,4561,4567,4569,4574,4576,4581],{"type":47,"tag":68,"props":4547,"children":4548},{},[4549],{"type":52,"value":4550},"Auto-discovery Not Working",{"type":52,"value":4552},": Use manual URL specification: ",{"type":47,"tag":125,"props":4554,"children":4556},{"className":4555},[],[4557],{"type":52,"value":4558},"-u http:\u002F\u002Flocalhost:YOUR_PORT\u002Fapi\u002Finngest",{"type":52,"value":4560},". If using ",{"type":47,"tag":125,"props":4562,"children":4564},{"className":4563},[],[4565],{"type":52,"value":4566},"--no-discovery",{"type":52,"value":4568}," flag, the ",{"type":47,"tag":125,"props":4570,"children":4572},{"className":4571},[],[4573],{"type":52,"value":3080},{"type":52,"value":4575}," flag is ",{"type":47,"tag":68,"props":4577,"children":4578},{},[4579],{"type":52,"value":4580},"required",{"type":52,"value":4582}," — the dev server will not find your app without it.",{"type":47,"tag":55,"props":4584,"children":4585},{},[4586,4591,4593,4598],{"type":47,"tag":68,"props":4587,"children":4588},{},[4589],{"type":52,"value":4590},"Functions Not Showing in Dev Server",{"type":52,"value":4592},": Your app must register with the dev server. This happens automatically when your serve endpoint receives its first request from the dev server. If registration isn't happening: (1) verify ",{"type":47,"tag":125,"props":4594,"children":4596},{"className":4595},[],[4597],{"type":52,"value":564},{"type":52,"value":4599}," is set, (2) verify the dev server can reach your app URL, (3) try restarting your app while the dev server is running.",{"type":47,"tag":55,"props":4601,"children":4602},{},[4603,4608,4610,4615],{"type":47,"tag":68,"props":4604,"children":4605},{},[4606],{"type":52,"value":4607},"Signature Verification Errors",{"type":52,"value":4609},": Ensure ",{"type":47,"tag":125,"props":4611,"children":4613},{"className":4612},[],[4614],{"type":52,"value":601},{"type":52,"value":4616}," is set correctly in production",{"type":47,"tag":55,"props":4618,"children":4619},{},[4620,4625],{"type":47,"tag":68,"props":4621,"children":4622},{},[4623],{"type":52,"value":4624},"WebSocket Connection Issues",{"type":52,"value":4626},": Verify Node.js version 22.4+ for connect mode",{"type":47,"tag":55,"props":4628,"children":4629},{},[4630,4635,4636,4642],{"type":47,"tag":68,"props":4631,"children":4632},{},[4633],{"type":52,"value":4634},"Docker Development",{"type":52,"value":2922},{"type":47,"tag":125,"props":4637,"children":4639},{"className":4638},[],[4640],{"type":52,"value":4641},"host.docker.internal",{"type":52,"value":4643}," for app URLs when running dev server in Docker",{"type":47,"tag":87,"props":4645,"children":4647},{"id":4646},"next-steps",[4648],{"type":52,"value":4649},"Next Steps",{"type":47,"tag":4651,"props":4652,"children":4653},"ol",{},[4654,4665,4670,4683,4688,4699],{"type":47,"tag":98,"props":4655,"children":4656},{},[4657,4659],{"type":52,"value":4658},"Create your first Inngest function with ",{"type":47,"tag":125,"props":4660,"children":4662},{"className":4661},[],[4663],{"type":52,"value":4664},"inngest.createFunction()",{"type":47,"tag":98,"props":4666,"children":4667},{},[4668],{"type":52,"value":4669},"Test functions using the dev server's \"Invoke\" button",{"type":47,"tag":98,"props":4671,"children":4672},{},[4673,4675,4681],{"type":52,"value":4674},"Send events with ",{"type":47,"tag":125,"props":4676,"children":4678},{"className":4677},[],[4679],{"type":52,"value":4680},"inngest.send()",{"type":52,"value":4682}," to trigger functions",{"type":47,"tag":98,"props":4684,"children":4685},{},[4686],{"type":52,"value":4687},"Deploy to production with proper environment variables",{"type":47,"tag":98,"props":4689,"children":4690},{},[4691,4693,4697],{"type":52,"value":4692},"See ",{"type":47,"tag":68,"props":4694,"children":4695},{},[4696],{"type":52,"value":693},{"type":52,"value":4698}," for adding logging, error tracking, and other cross-cutting concerns",{"type":47,"tag":98,"props":4700,"children":4701},{},[4702],{"type":52,"value":4703},"Monitor functions in the Inngest dashboard",{"type":47,"tag":55,"props":4705,"children":4706},{},[4707],{"type":52,"value":4708},"The dev server automatically reloads when you change functions, making development fast and iterative.",{"type":47,"tag":4710,"props":4711,"children":4712},"style",{},[4713],{"type":52,"value":4714},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4716,"total":1136},[4717,4737,4750,4764,4777,4792,4805,4816,4828,4841,4855,4870],{"slug":4718,"name":4718,"fn":4719,"description":4720,"org":4721,"tags":4722,"stars":23,"repoUrl":24,"updatedAt":4736},"inngest-agent-evals","build and debug Inngest agent evals","Use when building, migrating, or debugging Agent Evals on Inngest: scoring AI agent or workflow outcomes, deferred scorers, sessions, traces, step experiments, experiment variant attribution, Insights queries, or production eval loops for prompts, models, tools, providers, and agent behavior. Covers TypeScript SDK v4 scoring beta APIs, `scoreMiddleware`, `step.score`, `inngest.score`, `createScorer`, `defer`, `group.experiment`, `experimentRef`, `meta.sessions`, and when to use durable workflow primitives for outcome-based evaluation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4723,4726,4729,4730,4733],{"name":4724,"slug":4725,"type":15},"Agents","agents",{"name":4727,"slug":4728,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":4731,"slug":4732,"type":15},"Observability","observability",{"name":4734,"slug":4735,"type":15},"Workflow Automation","workflow-automation","2026-07-12T07:36:51.711641",{"slug":4738,"name":4738,"fn":4739,"description":4740,"org":4741,"tags":4742,"stars":23,"repoUrl":24,"updatedAt":4749},"inngest-agents","build durable AI agent workflows","Use when building durable AI agents or agentic workflows with Inngest and AgentKit, including model calls, tool calls, multi-agent networks, human approval, realtime progress, provider rate limits, crash-safe execution, and Agent Evals handoff. Covers AgentKit, `step.ai`, `step.run`, `step.waitForEvent`, native realtime, and when to use lower-level Inngest primitives instead of an in-memory agent loop. Use `inngest-agent-evals` with this skill when the user wants scoring, sessions, experiments, deferred scorers, or outcome-based evaluation for the agent.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4743,4744,4745,4746],{"name":4724,"slug":4725,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":4747,"slug":4748,"type":15},"LLM","llm","2026-07-12T07:36:45.984181",{"slug":4751,"name":4751,"fn":4752,"description":4753,"org":4754,"tags":4755,"stars":23,"repoUrl":24,"updatedAt":4763},"inngest-api","interact with Inngest REST API","Use when the user explicitly asks for the Inngest REST API v2, raw HTTP, OpenAPI, API docs, API authentication, or an endpoint that the Inngest CLI does not expose. Covers api-docs.inngest.com, llms.txt, the OpenAPI v2 spec, Bearer authentication with API keys or signing keys, production and local base URLs, raw curl\u002Ffetch requests, request-shape discovery, pagination, secret redaction, and when to prefer the `inngest-api-cli` skill instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4756,4759,4762],{"name":4757,"slug":4758,"type":15},"API Development","api-development",{"name":4760,"slug":4761,"type":15},"REST API","rest-api",{"name":4734,"slug":4735,"type":15},"2026-07-12T07:36:39.364409",{"slug":4765,"name":4765,"fn":4766,"description":4767,"org":4768,"tags":4769,"stars":23,"repoUrl":24,"updatedAt":4776},"inngest-api-cli","operate Inngest API resources via CLI","Use when operating Inngest API resources from the terminal with `npx inngest-cli@latest api`: Cloud\u002Flocal run debugging, event-run lookup, function traces, function invocation, app syncs, webhooks, environments, keys, account checks, and Insights queries. Provides prescriptive command routing for agents: which CLI command to run for a run ID, event ID, app ID, function ID, Cloud environment, API key, missing ID, or potentially mutating operation. Use `inngest-cli` for dev server setup\u002Fgeneral CLI workflows and `inngest-api` only when raw REST API v2 docs or OpenAPI fallback are needed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4770,4771,4772,4775],{"name":4757,"slug":4758,"type":15},{"name":17,"slug":18,"type":15},{"name":4773,"slug":4774,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},"2026-07-12T07:36:47.58183",{"slug":4778,"name":4778,"fn":4779,"description":4780,"org":4781,"tags":4782,"stars":23,"repoUrl":24,"updatedAt":4791},"inngest-brownfield-audit","audit codebases for Inngest integration","Use when analyzing an existing TypeScript or JavaScript codebase to decide where and how to introduce Inngest. Covers repository discovery, framework and package detection, finding durability gaps in HTTP handlers, webhooks, cron jobs, queues, long-running jobs, AI agents, Agent Evals, polling loops, eval loops, and side-effect-heavy code, then producing and implementing an incremental integration plan.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4783,4784,4787,4790],{"name":17,"slug":18,"type":15},{"name":4785,"slug":4786,"type":15},"Code Analysis","code-analysis",{"name":4788,"slug":4789,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},"2026-07-12T07:36:55.811247",{"slug":4793,"name":4793,"fn":4794,"description":4795,"org":4796,"tags":4797,"stars":23,"repoUrl":24,"updatedAt":4804},"inngest-cli","configure Inngest CLI and dev server","Use when installing or running the Inngest CLI and Dev Server for local development, local testing, serve endpoint debugging, Docker or Docker Compose setup, MCP configuration, self-hosted `inngest start`, or deployment workflow checks. Covers `inngest dev`, `inngest start`, auto-discovery, config files, environment variables, `@inngest\u002Ftest`, local event sending, platform gotchas, and production\u002Fself-hosted server flags.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4798,4799,4802,4803],{"name":4773,"slug":4774,"type":15},{"name":4800,"slug":4801,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":4430,"slug":4427,"type":15},"2026-07-12T07:36:40.694652",{"slug":4806,"name":4806,"fn":4807,"description":4808,"org":4809,"tags":4810,"stars":23,"repoUrl":24,"updatedAt":4815},"inngest-durable-functions","build durable and retry-safe functions","Use when building functions that must survive process crashes, retry automatically on failure, run on a schedule, react to events, or maintain state across infrastructure failures — e.g., webhook handlers that drop events, flaky cron jobs, background jobs that fail mid-execution, or workflows that need to resume where they left off. Covers Inngest function configuration, triggers (events, cron, invoke), step execution and memoization, idempotency, cancellation, error handling, retries, logging, and observability.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4811,4812,4813,4814],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":4734,"slug":4735,"type":15},"2026-07-12T07:36:57.141023",{"slug":4817,"name":4817,"fn":4818,"description":4819,"org":4820,"tags":4821,"stars":23,"repoUrl":24,"updatedAt":4827},"inngest-events","design event-driven workflows","Use when designing event-driven workflows, decoupling services, implementing fan-out patterns (one trigger, many downstream handlers), implementing idempotent event handling with IDs (24-hour dedupe window), or handling at-least-once delivery from external sources like Stripe webhooks. Covers Inngest event schema, payload format, naming conventions, IDs for idempotency, the ts param, fan-out patterns, and system events like inngest\u002Ffunction.failed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4822,4825,4826],{"name":4823,"slug":4824,"type":15},"Data Pipeline","data-pipeline",{"name":9,"slug":8,"type":15},{"name":4734,"slug":4735,"type":15},"2026-07-12T07:36:44.685364",{"slug":4829,"name":4829,"fn":4830,"description":4831,"org":4832,"tags":4833,"stars":23,"repoUrl":24,"updatedAt":4840},"inngest-flow-control","manage API rate limits and load","Use when handling external API rate limits (e.g., OpenAI 429s, HubSpot or Stripe rate limits), preventing duplicate work from rapid event bursts (debouncing user actions), spreading load over time, ensuring per-tenant fairness, processing events in batches, limiting concurrent runs of the same operation, or assigning priority to important runs. Covers Inngest flow control: concurrency limits with keys, throttling, rate limiting, debounce, priority, singleton, and event batching.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4834,4835,4836,4837],{"name":4757,"slug":4758,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":4838,"slug":4839,"type":15},"Performance","performance","2026-07-12T07:36:52.987451",{"slug":693,"name":693,"fn":4842,"description":4843,"org":4844,"tags":4845,"stars":23,"repoUrl":24,"updatedAt":4854},"add middleware to Inngest durable functions","Use when adding cross-cutting concerns to durable functions — structured logging or tracing across all functions, error tracking with Sentry, payload encryption for sensitive data, dependency injection of clients (DB, Stripe, etc.) into function handlers, custom telemetry, or behavior that should apply uniformly across many functions. Covers Inngest middleware lifecycle, creating custom middleware, dependencyInjectionMiddleware, @inngest\u002Fmiddleware-encryption, @inngest\u002Fmiddleware-sentry, and custom middleware patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4846,4847,4848,4850,4851],{"name":4788,"slug":4789,"type":15},{"name":9,"slug":8,"type":15},{"name":4849,"slug":686,"type":15},"Middleware",{"name":4731,"slug":4732,"type":15},{"name":4852,"slug":4853,"type":15},"Sentry","sentry","2026-07-12T07:36:50.127999",{"slug":4856,"name":4856,"fn":4857,"description":4858,"org":4859,"tags":4860,"stars":23,"repoUrl":24,"updatedAt":4869},"inngest-realtime","stream durable workflow updates to UI","Use when streaming durable workflow updates to a UI in real time — live order status pages that animate as steps complete, AI agent token streaming from a function to the browser, log tailing for long-running jobs, or human-in-the-loop approval flows that publish a prompt and wait for a user reply. Covers Inngest v4 native realtime: defining typed channels, publishing from inside step.run, minting subscription tokens via server actions, and consuming the stream from React\u002FNext.js client components.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4861,4862,4865,4866],{"name":17,"slug":18,"type":15},{"name":4863,"slug":4864,"type":15},"Frontend","frontend",{"name":9,"slug":8,"type":15},{"name":4867,"slug":4868,"type":15},"Real-time","real-time","2026-07-12T07:36:48.895092",{"slug":4,"name":4,"fn":5,"description":6,"org":4871,"tags":4872,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4873,4874,4875,4876],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"items":4878,"total":1136},[4879,4887,4894,4900,4907,4914,4921],{"slug":4718,"name":4718,"fn":4719,"description":4720,"org":4880,"tags":4881,"stars":23,"repoUrl":24,"updatedAt":4736},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4882,4883,4884,4885,4886],{"name":4724,"slug":4725,"type":15},{"name":4727,"slug":4728,"type":15},{"name":9,"slug":8,"type":15},{"name":4731,"slug":4732,"type":15},{"name":4734,"slug":4735,"type":15},{"slug":4738,"name":4738,"fn":4739,"description":4740,"org":4888,"tags":4889,"stars":23,"repoUrl":24,"updatedAt":4749},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4890,4891,4892,4893],{"name":4724,"slug":4725,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":4747,"slug":4748,"type":15},{"slug":4751,"name":4751,"fn":4752,"description":4753,"org":4895,"tags":4896,"stars":23,"repoUrl":24,"updatedAt":4763},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4897,4898,4899],{"name":4757,"slug":4758,"type":15},{"name":4760,"slug":4761,"type":15},{"name":4734,"slug":4735,"type":15},{"slug":4765,"name":4765,"fn":4766,"description":4767,"org":4901,"tags":4902,"stars":23,"repoUrl":24,"updatedAt":4776},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4903,4904,4905,4906],{"name":4757,"slug":4758,"type":15},{"name":17,"slug":18,"type":15},{"name":4773,"slug":4774,"type":15},{"name":9,"slug":8,"type":15},{"slug":4778,"name":4778,"fn":4779,"description":4780,"org":4908,"tags":4909,"stars":23,"repoUrl":24,"updatedAt":4791},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4910,4911,4912,4913],{"name":17,"slug":18,"type":15},{"name":4785,"slug":4786,"type":15},{"name":4788,"slug":4789,"type":15},{"name":9,"slug":8,"type":15},{"slug":4793,"name":4793,"fn":4794,"description":4795,"org":4915,"tags":4916,"stars":23,"repoUrl":24,"updatedAt":4804},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4917,4918,4919,4920],{"name":4773,"slug":4774,"type":15},{"name":4800,"slug":4801,"type":15},{"name":9,"slug":8,"type":15},{"name":4430,"slug":4427,"type":15},{"slug":4806,"name":4806,"fn":4807,"description":4808,"org":4922,"tags":4923,"stars":23,"repoUrl":24,"updatedAt":4815},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4924,4925,4926,4927],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":4734,"slug":4735,"type":15}]