$npx -y skills add inngest/inngest-skills --skill inngest-cliUse 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
| 1 | # Inngest CLI |
| 2 | |
| 3 | Master the Inngest CLI for local development, testing, and self-hosted production. The CLI provides the Dev Server — a fully-featured, open-source local version of the Inngest Platform. |
| 4 | |
| 5 | > **These skills are focused on TypeScript.** For Python or Go, refer to the [Inngest documentation](https://www.inngest.com/llms.txt) for language-specific guidance. Core concepts apply across all languages. |
| 6 | |
| 7 | Use this skill for CLI setup, Dev Server workflows, local testing, Docker, MCP, and self-hosted server operations. For run/trace inspection through `inngest api`, use `inngest-api-cli` when available. |
| 8 | |
| 9 | ## Installation |
| 10 | |
| 11 | ```bash |
| 12 | # npx (recommended — always latest) |
| 13 | npx inngest-cli@latest dev |
| 14 | |
| 15 | # yarn |
| 16 | yarn dlx inngest-cli@latest dev |
| 17 | |
| 18 | # pnpm |
| 19 | pnpm dlx inngest-cli@latest dev |
| 20 | |
| 21 | # Global install |
| 22 | npm install -g inngest-cli |
| 23 | |
| 24 | # Docker |
| 25 | docker pull inngest/inngest |
| 26 | ``` |
| 27 | |
| 28 | If your npm configuration disables lifecycle scripts and the binary is missing, retry with `npx --ignore-scripts=false inngest-cli@latest dev`. Bun does not support lifecycle scripts by default, so prefer `npx` for the CLI even in Bun projects. |
| 29 | |
| 30 | ## `inngest dev` — Local Dev Server |
| 31 | |
| 32 | Starts an in-memory local version of Inngest with a browser UI at `http://localhost:8288`. |
| 33 | |
| 34 | ```bash |
| 35 | # Auto-discover apps on common ports/endpoints |
| 36 | npx inngest-cli@latest dev |
| 37 | |
| 38 | # Specify your app URL |
| 39 | npx inngest-cli@latest dev -u http://localhost:3000/api/inngest |
| 40 | |
| 41 | # Custom port |
| 42 | npx inngest-cli@latest dev -p 9999 |
| 43 | |
| 44 | # Multiple apps |
| 45 | npx inngest-cli@latest dev \ |
| 46 | -u http://localhost:3000/api/inngest \ |
| 47 | -u http://localhost:4000/api/inngest |
| 48 | |
| 49 | # Disable auto-discovery (use with -u) |
| 50 | npx inngest-cli@latest dev --no-discovery -u http://localhost:3000/api/inngest |
| 51 | ``` |
| 52 | |
| 53 | ### CLI Flags |
| 54 | |
| 55 | | Flag | Short | Default | Description | |
| 56 | |---|---|---|---| |
| 57 | | `--sdk-url` | `-u` | `http://localhost:3000/api/inngest` | App serve endpoint URL(s) | |
| 58 | | `--port` | `-p` | `8288` | Dev Server port | |
| 59 | | `--host` | | | Dev Server host | |
| 60 | | `--no-discovery` | | `false` | Disable auto-discovery of apps | |
| 61 | | `--no-poll` | | `false` | Disable polling apps for changes | |
| 62 | | `--config` | | | Path to configuration file | |
| 63 | | `--connect-gateway-port` | | `8289` | Connect gateway endpoint port | |
| 64 | | `--persist` | | `false` | Persist data between restarts | |
| 65 | | `--poll-interval` | | `5` | Seconds between app polling checks | |
| 66 | | `--queue-workers` | | `100` | Number of executor workers | |
| 67 | | `--retry-interval` | | `0` | Linear retry interval in seconds | |
| 68 | | `--tick` | | `150` | Executor queue polling interval in milliseconds | |
| 69 | |
| 70 | ### Auto-Discovery |
| 71 | |
| 72 | Without `--no-discovery`, the Dev Server scans common ports and endpoints automatically: |
| 73 | |
| 74 | **Ports scanned:** Common development ports including 3000, 3030, and others |
| 75 | |
| 76 | **Endpoints scanned:** |
| 77 | - `/api/inngest` |
| 78 | - `/x/inngest` |
| 79 | - `/.netlify/functions/inngest` |
| 80 | - `/.redwood/functions/inngest` |
| 81 | |
| 82 | ## Configuration File |
| 83 | |
| 84 | Create an `inngest.json` (or `.yaml`, `.toml`) in your project root. The CLI walks up directories to find it. |
| 85 | |
| 86 | ```json |
| 87 | { |
| 88 | "sdk-url": [ |
| 89 | "http://localhost:3000/api/inngest", |
| 90 | "http://localhost:3030/api/inngest" |
| 91 | ], |
| 92 | "no-discovery": true |
| 93 | } |
| 94 | ``` |
| 95 | |
| 96 | ```yaml |
| 97 | # inngest.yaml |
| 98 | sdk-url: |
| 99 | - "http://localhost:3000/api/inngest" |
| 100 | - "http://localhost:3030/api/inngest" |
| 101 | no-discovery: true |
| 102 | ``` |
| 103 | |
| 104 | ## Environment Variables |
| 105 | |
| 106 | | Variable | Description | |
| 107 | |---|---| |
| 108 | | `INNGEST_DEV` | `=1` enables Dev Mode (disables signature verification). `=0` forces Cloud mode. Accepts a URL (e.g., `http://localhost:8288`). **Defaults to Cloud mode if unset.** | |
| 109 | | `INNGEST_BASE_URL` | Host for SDK-to-Inngest communication (e.g., `http://localhost:8288`). Leave unset in most cases. | |
| 110 | | `INNGEST_EVENT_KEY` | Authentication key for sending events. **Use any dummy value locally** — Dev Server does not validate. | |
| 111 | | `INNGEST_SIGNING_KEY` | Secures requests between Inngest and your app. **Required in production.** Determines which Inngest environment receives syncs. | |
| 112 | | `INNGEST_SIGNING_KEY_FALLBACK` | Fallback key for signing key rotation (v3.18.0+). | |
| 113 | | `INNGEST_SERVE_ORIGIN` | Full origin URL for Inngest to reach your app (e.g., `https://my-app.com`). Auto-inferred from request headers; **set explicitly for AWS Lambda, proxies, or tunnels.** | |
| 114 | | `INNGEST_SERVE_PATH` | URL path to your serve endpoint (e.g., `/api/inngest`). Auto-inferred in most cases. | |
| 115 | | `INNGEST_STREAMING` | Enable response streaming (`true`/`false`). Extends timeout limits on Vercel and edge runtimes. | |
| 116 | | `INNGEST_ENV` | Target Inngest Environment. Auto-detected on some platforms. | |
| 117 | |
| 118 | ## Debugging Your Serv |