Skip to main content
All Docs
FeaturesBlockManOSUpdated April 9, 2026

Inngest Function CI Linting

Inngest Function CI Linting

As of v1.0.95, BlockManOS includes a CI linting script (scripts/lint-inngest.ts) that enforces best-practice configuration on every Inngest background function definition.

What It Checks

The script scans all files in src/inngest/functions/ that call createFunction and verifies the presence of:

Required FieldPurpose
retriesExplicit retry count — no reliance on Inngest defaults
concurrencyConcurrency control to prevent runaway parallel executions

Exit Codes

CodeMeaning
0All checks pass (or no Inngest functions found)
1One or more violations detected

Example Output

Passing:

✅  All 4 Inngest function(s) have retries & concurrency configured.

Failing:

❌  Inngest lint violations found:

  src/inngest/functions/send-reminders.ts
    ⚠  Missing: retries
    ⚠  Missing: concurrency

1 file(s) with violations out of 4 checked.

Running Locally

npx ts-node scripts/lint-inngest.ts

Adding a Compliant Inngest Function

When creating a new Inngest function, always include retries and concurrency in the configuration object:

export const myFunction = inngest.createFunction(
  {
    id: "my-function",
    retries: 3,
    concurrency: {
      limit: 5,
    },
  },
  { event: "app/my.event" },
  async ({ event, step }) => {
    // handler logic
  }
);

The CI lint step will fail the build if these fields are missing.