Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Serverless event-driven queues, background jobs, and scheduled jobs for Typescript.
Works with any framework and platform.

Read the documentation and get started in minutes.

Inngest allows you to:

  • 👉 Write background jobs in any framework, on any platform
  • 👉 Create scheduled & cron jobs for any serverless platform
  • 👉 Build serverless queues without configuring infra
  • 👉 Write complex step functions anywhere
  • 👉 Build serverless event-driven systems
  • 👉 Reliably respond to webhooks, with retries & payloads stored for history

👋 Have a question or feature request? Join our Discord!

Getting started · Features · Contributing · Documentation

Screen Shot 2022-10-05 at 17 06 32

Getting started

Install Inngest:

npm install inngest  # or yarn install inngest

Writing functions: Write serverless functions and background jobs right in your own code:

import { createFunction } from "inngest";

export default createFunction(
  "Send welcome email",
  "app/user.created", // Subscribe to the `app/user.created` event.
  ({ event }) => {
    sendEmailTo(, "Welcome!");

Functions listen to events which can be triggered by API calls, webhooks, integrations, or external services. When a matching event is received, the serverless function runs automatically, with built in retries.

Triggering functions by events:

// Send events
import { Inngest } from "inngest";
const inngest = new Inngest({ name: "My App" });

// This will run the function above automatically, in the background
inngest.send("app/user.created", { data: { id: 123 } });

Events trigger any number of functions automatically, in parallel, in the background. Inngest also stores a history of all events for observability, testing, and replay.


  • Fully serverless: Run background jobs, scheduled functions, and build event-driven systems without any servers, state, or setup
  • Deploy anywhere: works with NextJS, Netlify, Vercel, Redwood, Express, Cloudflare, and Lambda
  • Use your existing code: write functions within your current project, zero learning required
  • A complete platform: complex functionality built in, such as event replay, canary deploys, version management and git integration
  • Fully typed: Event schemas, versioning, and governance out of the box
  • Observable: A full UI for managing and inspecting your functions
  • Any language: Use our CLI to write functions using any language


Clone the repository, then:

yarn # install dependencies
yarn dev # build/lint/test

We use Volta to manage Node/Yarn versions.

When making a pull request, make sure to commit the changed etc/ file; this is a generated types/docs file that will highlight changes to the exposed API.

Locally linking (npm|yarn link)

In order to provide sensible namespaced imports such as "inngest/next", the package actually builds to and deploys from dist/.

To replicate this locally to test changes with other local repos, you can link the project like so (replace npm for yarn if desired):

# in this repo
yarn build
yarn prelink
cd dist/
yarn link
# in another repo
yarn link inngest