Oban

Production-grade background job processing library for Elixir backed by PostgreSQL. Oban uses the database as the job store — no Redis required — providing ACID-compliant job insertion, deduplication, scheduling, and retry with exponential backoff. Supports priority queues, cron scheduling, unique job constraints, and job cancellation. Oban Pro adds workflows (job dependencies) and plugins for advanced patterns.

Evaluated Mar 06, 2026 (0d ago) v2.x
Homepage ↗ Repo ↗ Developer Tools elixir job-queue background-jobs postgresql async scheduling cron reliability
⚙ Agent Friendliness
68
/ 100
Can an agent use this?
🔒 Security
90
/ 100
Is it safe for agents?
⚡ Reliability
89
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
90
Error Messages
88
Auth Simplicity
95
Rate Limits
88

🔒 Security

TLS Enforcement
100
Auth Strength
88
Scope Granularity
82
Dep. Hygiene
90
Secret Handling
88

Job args stored in PostgreSQL — database security applies. Oban Pro supports encrypted job args for sensitive data. No external network calls. TLS for DB connection via ssl: true.

⚡ Reliability

Uptime/SLA
90
Version Stability
88
Breaking Changes
85
Error Recovery
92
AF Security Reliability

Best When

You're building Elixir/Phoenix applications and want reliable background job processing without adding Redis to your infrastructure — Postgres is sufficient.

Avoid When

You need sub-millisecond job latency at massive scale, or you're not using Elixir/PostgreSQL. Sidekiq + Redis is faster for high-throughput Ruby workloads.

Use Cases

  • Queue LLM API calls as background Oban jobs with automatic retry on rate limits — uses PostgreSQL for durable job storage without Redis
  • Schedule periodic agent maintenance tasks (data sync, cache warming, report generation) using Oban's built-in cron scheduler
  • Implement unique job constraints to prevent duplicate agent tasks — Oban's unique jobs ensure only one job per key runs within a time window
  • Fan out agent work across multiple queues with priority — high-priority user-facing tasks in one queue, batch processing in another
  • Build multi-step agent workflows with Oban Pro's workflow DSL to express job dependencies and sequential/parallel execution

Not For

  • Non-Elixir stacks — Oban is Elixir-specific; use Sidekiq (Ruby), Celery (Python), or BullMQ (Node.js) for other languages
  • Extremely high-throughput job queues (millions/second) — PostgreSQL-backed queues have overhead vs Redis; use dedicated queue systems at extreme scale
  • Teams not using PostgreSQL — Oban requires Postgres; no MySQL or SQLite support (Oban Pro adds SQLite for testing)

Interface

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
Yes
Webhooks
No

Authentication

Methods: none
OAuth: No Scopes: No

Oban is an Elixir library — no external auth. Database credentials managed via Oban's Repo configuration. Oban Web (UI dashboard) supports basic auth for the web interface.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

Open source Oban covers 90% of use cases. Oban Pro is reasonably priced for commercial teams needing workflows and advanced features.

Agent Metadata

Pagination
none
Idempotent
Full
Retry Guidance
Documented

Known Gotchas

  • Oban workers run in separate Elixir processes — mutable state (ETS, Agent, GenServer) is not shared between job processes; agents must use database or shared process for cross-job state
  • Job args must be JSON-serializable — no Elixir structs, atoms that aren't strings, or PIDs in job args; serialize to plain maps before enqueueing
  • Unique jobs use a uniqueness window — the unique_for time period must be long enough to cover the job execution time or duplicates can sneak in at window edges
  • Oban drains queues on application shutdown (with drain_queues) — in test environments, drain must be called explicitly or jobs queued in tests never execute
  • Rate limiting requires Oban Pro's GlobalLimit plugin — base Oban has no built-in rate limiting for external API calls; must implement manual rate-limiting logic in workers
  • Scheduled jobs use PostgreSQL's system clock — servers with clock drift between nodes can cause scheduled job misfires; ensure NTP synchronization in distributed deployments

Alternatives

Full Evaluation Report

Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Oban.

$99

Scores are editorial opinions as of 2026-03-06.

5208
Packages Evaluated
26151
Need Evaluation
173
Need Re-evaluation
Community Powered