# Oban Pro Oban Pro is a licensed add-on for the Oban job orchestration framework. It provides extensions that expand what Oban is capable of while making complex workflows possible. Get started with [installation](installation.md), learn how to transition from OSS to Pro with [adoption](adoption.md), then explore the features below. ## Operations Configure how Pro runs, without changes to your workers. ### Drop-In Optimizations Install Pro and your application automatically benefits from bulk inserts, bulk acking, and accurate orphan rescue—no code changes required. [Learn more →](adoption.md) ### Multi-Process Execution Bypass the GIL and utilize multiple CPU cores for CPU-intensive workloads. Just switch from `oban start` to `obanpro start`. [Learn more →](multi_process.md) ### Erlang Notifier Replace Postgres pub/sub with direct communication between processes. Works with transaction poolers, without a payload size limit, and keeps notifications out of the database. It uses the Distributed Erlang protocol to interop with Oban in Elixir, but doesn't require Erlang or Elixir. [Learn more →](erlang_notifier.md) ### Smart Concurrency Control job execution with global concurrency limits across all nodes, rate limiting (e.g., 60 jobs/minute), and partitioned queues that apply limits per worker, tenant, or any argument. [Learn more →](smart_concurrency.md) ### Pro Pruner Replace the standard pruner with fine-grained retention rules per queue, worker, or state. Prune on a cron schedule, manage rules at runtime, and archive jobs rather than deleting them. [Learn more →](pruner.md) ## Jobs Extend what an individual job can do. ### Unique Jobs Prevent enqueueing duplicate jobs based on worker, args, queue, or specific keys. Configure time windows and detect conflicts. [Learn more →](unique_jobs.md) ### Relay Dispatch jobs and wait for their results with synchronous-style semantics. Perfect for request/response workflows and service coordination. [Learn more →](relay.md) ### Awaiting Signals Pause a job mid-execution to wait for an external decision and resume when a signal arrives. Perfect for human approval flows, third-party callbacks, and durable state machines. [Learn more →](signals.md) ## Composition Coordinate many jobs together. ### Workflows Compose jobs together for durable workflows with fault-tolerant execution patterns. Supports sub-workflows, automatic result passing, and runtime grafting for dynamic pipelines. [Learn more →](workflow.md) ### Chunks Process jobs together in groups based on a size or wait time, e.g. 1,000 jobs or every 10 seconds. Partition chunks by worker, args, or meta, and apply outcomes to individual jobs. [Learn more →](chunk.md) ```{toctree} :maxdepth: 2 :caption: Getting Started installation adoption ``` ```{toctree} :maxdepth: 2 :caption: Operations multi_process erlang_notifier smart_concurrency pruner ``` ```{toctree} :maxdepth: 2 :caption: Jobs unique_jobs relay signals ``` ```{toctree} :maxdepth: 2 :caption: Composition workflow chunk ``` ```{toctree} :maxdepth: 2 :caption: Reference changelog ``` ```{toctree} :maxdepth: 1 :caption: Upgrading upgrading/v0.7 ```