Databending
Durable execution for distributed systems

Workflows that don’t die.Scale-out workers. Guaranteed state. Repeatable outcomes.

Immortal coordinates workflows, activities, retries, and timers across a hub-and-spoke network — with security and observability built in.

Hub-and-spoke routing
Policy decisions
Retries + idempotency
Durable timers
Designed for Rust-first systems. Plays great with gRPC, Redis, and Kubernetes.
Live execution
queue: payments
workflow.start
wf_id: 9d3…
authz.check
policy: allow
activity.retry
attempt: 2/3
sleep
resume: +30d
history recordeddeterministic replay
Architecture

A hub-and-spoke worker network

Immortal routes tasks through a central server while workers stay lightweight. Edges transmit data continuously — perfect for multi-tenant queues and bursty workloads.

  • Single upstream stream per queue
  • Backpressure-friendly fanout
  • Worker registration + discovery
Hub-and-spoke routingedges transmit data continuously
Security

Secure workflows end-to-end

Validate identity, authorize execution, and protect payloads in transit. Bring your own IdP, keys, and policies.

  • mTLS between nodes (optional)
  • JWT / OIDC verification
  • Request signing / key rotation friendly
workflow payload
mTLS
JWT / OIDC
policy checks
Secure-by-default executionauth → authorize → run
Authorization

Explainable policy decisions

Whether you use RBAC or relationship-based permissions, Immortal can evaluate access before execution and explain exactly why a decision was made.

  • RBAC / ReBAC / ABAC compatible
  • Decision logging (allow/deny + reason)
  • Tenant-safe by design
Policy evaluation
User
subject
Org
tenant
Workflow
resource
Queue
payments
member
can_run
uses
request
decision: allow · reason: org member
RBAC / ReBAC / ABAC friendlypluggable policy engine
Reliability

Retries you can trust

Configure retry policies per activity. Record every attempt. Support idempotency keys to make retries safe.

  • Exponential backoff + jitter
  • Per-step retry policies
  • Deterministic history for debugging
Activity: charge-card
exponential backoff + jitter
Attempt 1
timeout
Attempt 2
retrying
Attempt 3
success
Retries are first-class
Configurable policies per workflow/activity with idempotency support.
Scheduling

Timers & sleeps without holding compute

Pause a workflow, persist state, and resume later — great for follow-ups, delayed tasks, and long-running business processes.

  • Durable sleep/resume
  • Optional: kill compute while sleeping
  • Accurate sequencing in UI history
Durable timers & sleeps
Sleep without holding compute
Pause workflows, persist state, resume exactly where you left off.
Fleet

Worker leases & heartbeats

Workers claim tasks with leases and send heartbeats. If a worker stalls or disappears, work is reassigned automatically.

  • Fast dead-worker detection
  • Avoid duplicate work with leases
  • Built for autoscaling
Worker registration & heartbeats
wk-1
leased
Workflow Capacity
Activity Capacity
heartbeat: 600ms · lease TTL: 5s
wk-2
leased
Workflow Capacity
Activity Capacity
heartbeat: 1070ms · lease TTL: 5s
Fast failure detectionreassign work automatically
Debugging

A timeline you can replay

Every important event becomes a first-class record: scheduled, started, attempts, sleeps, resumes, outputs.

  • Deterministic history
  • Human-friendly UI ordering
  • Audit and incident-friendly
Deterministic history
scheduled
seq 01
activity enqueued
attempt
seq 02
attempt 1 failed (timeout)
retry
seq 03
backoff + retry policy
resume
seq 04
resumed + completed
Replayable executiondebug from history
Observability

Stream logs now, replay later

Tail workflow logs in real time and rewind using history-backed context. Great for audits, debugging, and customer support.

  • Server-aggregated streams
  • Workflow-scoped log views
  • Replay highlighting from history
Observability
live logs
stream + replay
12:30:00wf:9d3 startreplay
12:31:01authz allow (org=acme)
12:32:02activity:charge-card attempt=1 timeout
12:33:03retry policy backoff=2.1s
12:34:04activity:charge-card attempt=2 ok
12:35:05sleep 30d
12:36:06resume
12:37:07activity:send-receipt ok
12:38:08wf:9d3 complete
12:39:09wf:9d3 start
12:40:10authz allow (org=acme)
12:41:11activity:charge-card attempt=1 timeout
Stream now, inspect laterhistory-backed logs
Ready to ship more reliable systems?
Build on Immortal today.
Spin up the server, register workers, and start executing durable workflows in minutes.