Dispatcher & Hooks

Wire workflow execution in Node or Cloudflare via durable hooks.

Workflows execute when durable hooks are processed. The dispatcher is responsible for polling and processing hooks when work is available.

In-process dispatcher (Node)

Use the in-process dispatcher for local development or small deployments:

import { createDurableHooksProcessor } from "@fragno-dev/db/dispatchers/node";

const dispatcher = createDurableHooksProcessor([fragment], {
  pollIntervalMs: 2000,
});

dispatcher.startPolling();

Cloudflare Durable Object dispatcher

For Cloudflare, use the Durable Object dispatcher package so alarms drive hook processing:

import { createDurableHooksProcessor } from "@fragno-dev/db/dispatchers/cloudflare-do";

export class WorkflowsDispatcher {
  handler: ReturnType<ReturnType<NonNullable<typeof createDurableHooksProcessor>>>;

  constructor(state: DurableObjectState, env: Env) {
    const dispatcher = createDurableHooksProcessor([env.fragment]);

    this.handler = dispatcher(state, env);
  }

  alarm() {
    return this.handler.alarm?.();
  }
}

Notes

  • Protect dispatcher endpoints or workers with auth and network-level controls.
  • Use a durable hook processor/dispatcher to run workflows when enqueued.
  • Multiple dispatcher instances can safely poll concurrently.