Skip to content
RELKIT
Esc
↑↓navigate↵open⌘Jpreview
On this page

Provider comparison

Compare the three job adapters without hiding provider-specific limits.

Choose a job provider according to the execution and recovery behavior your application needs. The selected binding and deployment environment are authoritative. In the current fresh-app Orders CSV check, Inngest and Effect MQ both registered and completed a run. Trigger.dev’s local service did not become healthy. The provider guides show the exact setup and proof checks, including that unresolved outcome. An adapter capability is not a successful application run.

jobs: { default: docker(inngest()) },
defaults: {
  bucket: "assets",
  cache: "requests",
  realtime: "default",
  "agent-state": "agents",
  jobs: "default",
},
{
  "schemaVersion": 1,
  "recordedAt": "2026-09-20",
  "status": "ready",
  "completionScope": {
    "certified": ["inngest self-hosted Docker", "effect-mq self-hosted PostgreSQL"],
    "deferred": ["Trigger native/Docker evidence", "Pulumi, AWS, and managed-cloud evidence"],
    "diagnostic": "Deferred modes remain not-tested and are not support claims for this change."
  },
  "evidence": [
    "tests/jobs/compatibility/evidence/inngest-native.json",
    "tests/jobs/compatibility/evidence/phase0-1.6-1.10.json",
    "tests/jobs/compatibility/evidence/phase0-1.11.json",
    "tests/jobs/compatibility/evidence/phase0-effect-mq.json",
    "tests/jobs/compatibility/evidence/phase5-adapters.json",
    "tests/jobs/compatibility/evidence/phase9-regressions.json",
    "tests/jobs/compatibility/evidence/phase9-native-completion.json",
    "tests/jobs/compatibility/evidence/phase9-scaffold.json",
    "tests/jobs/compatibility/evidence/phase9-coverage.json"
  ],
  "providerCatalog": [
    { "provider": "inngest", "package": "@relkit/inngest", "recipe": "inngest-docker@2" },
    { "provider": "trigger", "package": "@relkit/trigger", "recipe": "trigger-docker@2" },
    { "provider": "effect-mq", "package": "@relkit/effect-mq", "recipe": "effect-mq-docker@2" }
  ],
  "requiredCommonSubset": {
    "features": [
      "durable acceptance",
      "retryable execution",
      "current-state read",
      "cancel request",
      "native scheduling"
    ],
    "minimumNativeEngines": 2,
    "nativeEnginesProven": ["inngest", "effect-mq"],
    "gate": "ready",
    "diagnostic": "Inngest and effect-mq prove the declared common subset; Trigger has an executable native-shaped adapter and account-free recipe, but provider-native Docker/managed evidence remains not-tested. Inngest local listing and unsupported schedule/version diagnostics remain unchanged."
  },
  "variants": [
    {
      "provider": "inngest",
      "profile": "managed",
      "deployment": "cloud",
      "status": "not-tested",
      "features": {},
      "evidence": []
    },
    {
      "provider": "inngest",
      "profile": "self-hosted",
      "deployment": "docker",
      "status": "passed",
      "features": {
        "durableAcceptance": "native",
        "retryableExecution": "native",
        "durableSleep": "native",
        "currentStateRead": "native",
        "cancelRequest": "native",
        "scheduleCron": "native",
        "scheduleTimezone": "native",
        "scheduleOwnership": "unverified",
        "scheduleDst": "unverified",
        "scheduleOverlap": "unsupported",
        "scheduleMisfire": "unverified",
        "workerVersionTargeting": "unsupported",
        "boundedFilteredListing": "native",
        "historicalBuildResume": "unsupported"
      },
      "evidence": [
        "tests/jobs/compatibility/evidence/inngest-native.json",
        "tests/jobs/compatibility/evidence/phase0-1.6-1.10.json",
        "tests/jobs/compatibility/evidence/phase0-1.11.json"
      ],
      "diagnostics": [
        "The pinned local v2 API proves bounded app/status/function filtering, opaque cursor continuation, event-scoped runs and signing-key authorization without a full scan.",
        "Replacement registration resumed an old run on the new worker build; old-build retirement is explicitly blocked unless the old route and key remain retained.",
        "The pinned server does not expose native ownership listing, so schedule reconciliation remains unverified.",
        "Cron has no portable overlap or misfire control, and DST transition replay is unverified in this SDK/server profile."
      ]
    },
    {
      "provider": "trigger",
      "profile": "managed",
      "deployment": "cloud",
      "status": "not-tested",
      "features": {},
      "evidence": []
    },
    {
      "provider": "trigger",
      "profile": "self-hosted",
      "deployment": "docker",
      "status": "not-tested",
      "features": {},
      "evidence": [
        "tests/jobs/compatibility/evidence/phase0-1.6-1.10.json",
        "tests/jobs/compatibility/evidence/phase5-adapters.json"
      ],
      "diagnostics": [
        "Task registration, scoped subscription cleanup, and schedule declarations have local structural coverage only; this does not certify a Trigger server."
      ]
    },
    {
      "provider": "effect-mq",
      "profile": "managed",
      "deployment": "cloud",
      "status": "unsupported",
      "features": { "durableSleep": "unsupported" },
      "evidence": []
    },
    {
      "provider": "effect-mq",
      "profile": "self-hosted",
      "deployment": "docker",
      "status": "passed",
      "features": {
        "durableAcceptance": "native",
        "retryableExecution": "native",
        "currentStateRead": "native",
        "cancelRequest": "native",
        "nativeScheduling": "native",
        "scheduleOwnership": "native",
        "durableSleep": "unsupported"
      },
      "evidence": [
        "tests/jobs/compatibility/evidence/phase0-1.6-1.10.json",
        "tests/jobs/compatibility/evidence/phase0-effect-mq.json",
        "tests/jobs/compatibility/evidence/phase5-adapters.json"
      ],
      "diagnostics": [
        "LISTEN wake-ups are unavailable under the pinned Effect runtime; native polling fallback was observed and correctness passed.",
        "Durable sleep remains unsupported by the queue/retryable profile."
      ]
    }
  ]
}
Capability Inngest Trigger.dev Effect MQ
Durable task execution Native Docker path Provider-dependent Not advertised by the retryable profile
Retryable execution Native Docker path Provider-dependent Native PostgreSQL path
Run reads and controls Native subset Provider-dependent Native adapter subset
Durable sleep Supported path Not claimed Unsupported
UTC cron Supported path Provider-dependent Configured path
Managed cloud evidence Not tested Not tested Unsupported

Read the Inngest, Trigger.dev, and Effect MQ guides before selecting a capability. relkit jobs capabilities reports the binding’s actual limits; the compiler rejects a task that requires an unproven capability.

The evidence matrix keeps unsupported and not-tested variants explicit. Local structural tests do not certify a provider server.

Reference and source