Using AgentKit alongside Inngest enables automatic retries for your AgentKit network Agents and Tools calls.

The default retry policy is to retry 4 times with exponential backoff and can be configured by following the steps below.

Prerequisites

Your AgentKit network must be configured with Inngest.

Configuring Retries

Configuring a custom retry policy is done by transforming your AgentKit network into an Inngest function.

Transforming your AgentKit network into an Inngest function

First, you’ll need to create an Inngest Client:

src/inngest/client.ts
import { Inngest } from 'inngest';

const inngest = new Inngest({
  id: 'my-agentkit-network',
});

Then, transform your AgentKit network into an Inngest function as follows:

src/inngest/agent-network.ts
import { createAgent, createNetwork, openai } from '@inngest/agent-kit';
import { createServer } from '@inngest/agent-kit/server';

import { inngest } from './inngest/client';


const deepResearchAgent = createAgent({ 
  name: 'Deep Research Agent',
  tools: [/* ... */],
});

const network = createNetwork({
  name: 'My Network',
  defaultModel: openai({ model: "gpt-4o" }),
  agents: [deepResearchAgent],
});

const deepResearchNetworkFunction = inngest.createFunction({ 
  id: 'deep-research-network',
}, {
  event: "deep-research-network/run"
}, async ({ event, step }) => {
    const { input } = event.data;
    return network.run(input);
})

const server = createServer({
  functions: [deepResearchNetworkFunction],
});

server.listen(3010, () => console.log("Agent kit running!"));

The network.run() is now performed by the Inngest function.

Don’t forget to register the function with createServer’s functions property.

Configuring a custom retry policy

We can now configure the capacity by user by adding concurrency and throttling configuration to our Inngest function:

src/inngest/agent-network.ts
import { createAgent, createNetwork, openai } from '@inngest/agent-kit';
import { createServer } from '@inngest/agent-kit/server';

import { inngest } from './inngest/client';

// network and agent definitions..

const deepResearchNetworkFunction = inngest.createFunction({ 
  id: 'deep-research-network',
  retries: 1
}, {
  event: "deep-research-network/run"
}, async ({ event, step }) => {
    const { input } = event.data;

    return network.run(input);
})

const server = createServer({
  functions: [deepResearchNetworkFunction],
});

server.listen(3010, () => console.log("Agent kit running!"));

Your AgentKit network will now retry once on any failure happening during a single execution cycle of your network.

Going further