Private beta, early 2027

Your Celery jobs failed at 3:00 a.m. You'll know at 3:01.

Hosted monitoring for Celery. Alerts for failed tasks, stuck workers, missed Beat schedules and growing queues. Retry the failures straight from Slack.

Founding teams get 50% off for life. No spam, one email when the beta opens.

# alerts-backend
Daxel 3:01 AM
340 tasks failed: billing.tasks.charge_invoice
Error
ConnectionError: Stripe API timed out
Window
02:41 to 02:58 UTC
Queue
payments · depth 1,212
Upstream
recovered at 02:59

An example alert. Try the Retry button.

Install

Two lines in your worker

The SDK hooks Celery's own signals. It sends events in the background, keeps a bounded buffer, and drops data before it ever slows down or crashes a worker.

# pip install daxel
import daxel

daxel.init(api_key="dx_live_…")

# That's it. Tasks, workers, Beat and queue depth
# start showing up in your dashboard.
What it catches

Celery breaks quietly. Daxel doesn't stay quiet.

Beat stopped firing
Missed-schedule alert

We know when each periodic task should run. If nightly_invoices doesn't fire within its grace period, you hear about it that night, not on Monday.

Tasks stuck in STARTED
Stuck-task detection

A worker gets OOM-killed mid-task and the task never finishes or fails. We flag any task running past 3× its normal duration.

340 tasks failed in the outage
Bulk retry from Slack

When the upstream API is back, retry every failure in one click. Your own workers re-enqueue them. We never touch your broker.

nightly_invoices · crontab(0 2 * * *)

Last 7 nights. Saturday's 02:00 run never fired, and nothing raised an error. This is the alert most teams don't have.

Built to be trusted

You're putting our code in your payment queue. We take that seriously.

Open-source SDKMIT licensed. Read every line that runs in your workers.
Never touches your brokerNo Redis, RabbitMQ or database credentials. Data only flows out.
Arguments off by defaultOpt in per task, with field redaction. Encrypted at rest when on.
Never crashes a workerEvery hook is wrapped. If we're down, events are dropped, not your tasks.
Compare

How it stacks up, including where it doesn't

DaxelFlowerSentrySelf-hosted (Kanchi, Leek)
Alerts on failures and stuck tasksYesNoErrors onlyBasic
Missed Beat schedulesYesNoCrons, per monitorPartly
Queue depth and worker healthYesLive onlyNoYes
Retry and bulk retryFrom SlackRevoke onlyNoKanchi: yes, with payload editing
History after a restartUp to 13 monthsLostYesYour storage
Something to host and secureNothingYesNothingYes
PriceFree to $149/moFreeAlready paying, most teamsFree

Keep Sentry. It tells you a task crashed. Daxel tells you the queue is backing up and Beat stopped, and lets you replay the 340 failures.

Pricing

Priced on events, not workers

Autoscaling shouldn't change your bill every hour. Retry is on every paid plan.

Free

$0
  • 1 project
  • 100k events a month
  • 7-day history
  • Email and Slack alerts

Starter

$19/mo
  • 3 projects
  • 2M events a month
  • 30-day history
  • Single-task retry

Team

$59/mo
  • 10 projects
  • 10M events a month
  • 90-day history
  • Bulk retry and Slack buttons
  • Encrypted argument capture

Business

$149/mo
  • 50M events a month
  • 13-month history
  • SSO
  • Priority support

Founding teams: the first 50 teams that join get 50% off any plan, for life. Join the waitlist to hold a spot.

FAQ

Questions backend leads ask first

Which brokers and versions are supported?

Celery 5.x on Python 3.9 and up, with Redis or RabbitMQ as the broker. Queue depth starts with Redis; RabbitMQ and SQS depth follow soon after launch.

How does retry work if you never touch my broker?

When you click Retry, we record a command. The SDK inside your worker picks it up and re-enqueues the task with your own Celery app, in your own infrastructure.

Do you store my task arguments?

Not unless you turn it on. Retry for tasks without stored arguments uses the task's own retry path. If you enable capture, you choose which tasks, fields matching your redact list are stripped in the worker, and the rest is encrypted at rest.

What happens if Daxel is down?

Your workers carry on. The SDK buffers a bounded number of events and drops the overflow. It never blocks or raises into your task code.

Can I self-host it?

The SDK is open source today. A self-hosted server is on the roadmap; tell us on the waitlist if you need it.

Does it work with Django 6 Tasks or RQ?

Celery first. Django Tasks and RQ are next on the roadmap.

Why I'm building this

A note from the founder

Background jobs run the half of an app nobody looks at: invoices, emails, imports, nightly reports. When they break, the web app stays green and the first alert is a customer email.

Flower shows you what's happening right now, if you're watching. Prometheus works once someone builds the whole stack. Most small teams end up with nothing. Daxel is the tool I wanted: it tells you what broke and lets you fix it from the alert.

Dheeraj, founder

Get told before your customers tell you.

Join the waitlist for the private beta and founding-team pricing.

Join the waitlist