inngest-flow-control

Configure Inngest flow control mechanisms including concurrency, throttling, debounce, and batching for TypeScript functions.

Updated Feb 27, 2026
One-click install
npx skills add https://github.com/firstaxel/neon --skill inngest-flow-control-firstaxel
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: inngest-flow-control
Source: https://github.com/firstaxel/neon/tree/main/.agents/skills/inngest-flow-control
Command: npx skills add https://github.com/firstaxel/neon --skill inngest-flow-control-firstaxel

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Managing external API rate limits, preventing duplicate work from event bursts, and ensuring fair resource distribution across tenants are common challenges in event-driven systems. This Skill provides prescriptive guidance for applying Inngest's flow control primitives to keep background functions reliable and within quota. ## Core Features & Use Cases - Concurrency & Throttling: Limit simultaneous step execution or function starts per key, protecting databases and third-party APIs like OpenAI or Stripe from overload. - Debounce, Singleton & Rate Limiting: Collapse rapid event bursts into a single run, skip or cancel duplicate runs, and discard excessive events within a time window. - Priority & Batching: Give important runs queue priority based on event data, and process grouped events together for efficient bulk operations. - Use Case: When OpenAI returns 429 errors under load, apply account-scoped concurrency of 60 calls plus per-user keyed concurrency so all functions share the quota fairly while individual users stay isolated. ## Quick Start Ask the AI to add per-user concurrency limits and throttling to your Inngest function so it respects a third-party API rate limit.

Frequently Asked Questions about inngest-flow-control

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I handle OpenAI rate limits with Inngest?▼

Use account-scoped concurrency with a shared key like "openai" and a limit matching your quota, so all functions share the same pool of concurrent API calls. You can also add throttling to spread function starts over time and avoid 429 errors.

What is the difference between throttling and rate limiting in Inngest?▼

Throttling delays function starts to spread them over a time period, while rate limiting discards events that exceed the limit. Use throttling to respect API quotas and rate limiting to skip excessive duplicate events.

How do I debounce rapid events in Inngest?▼

Set a debounce configuration with a period and a key such as event.data.document_id. Inngest waits for events to stop arriving, then runs the function once using the last event received, with an optional timeout to force execution.

Does Inngest concurrency limit function runs or steps?▼

Concurrency limits executing steps, not function runs. A function waiting on step.sleep() or step.waitForEvent() does not count against the limit, so sleeping functions free capacity for others.

Can I combine multiple flow control options in one Inngest function?▼

Yes, you can combine throttling, keyed concurrency, and priority in a single function definition. Most production functions benefit from combining one to three mechanisms, such as global throttling plus per-user concurrency for fairness.