Self-hosted · BullMQ & BullMQ Pro · on Redis or Postgres · v0.6.0

The BullMQ dashboard you can put in front of production.

One container next to your stack, for BullMQ on Redis or on its Postgres backend. Queues, jobs, failures, progress, logs, flows and Pro groups, safe to point at production from day one. The free edition needs no account and no login: start it and open it.

Install the free edition Open the live demo Free edition is MIT. Pro features are shown locked, never hidden.
/40 seconds of Bullpane
$install
# 1. run it next to the Redis or Postgres your workers already use
docker run -d --name bullpane -p 3000:3000 \
  -v bullpane-data:/data \
  bullpane/bullpane
#    SQLite is built in. MySQL is optional: -e DATABASE_URL=mysql://…
#    no Docker? npx bullpane --redis redis://localhost:6379
#           or  npx bullpane --postgres postgres://user:pass@localhost:5432/app

# 2. open http://localhost:3000 and add a Redis or Postgres connection. No account, no login.
# 3. that's the whole install. Pro is a key you paste in Settings → License.
✓ works with Redis, Redis Cluster, Valkey, Postgres · BullMQ 4, 5 and 6 · BullMQ Pro

Built by Matheus Morett, CTO at Monest. Every feature here shipped because we needed it first. Questions? Talk to me →

01 / Compare

Bullpane vs bull-board vs Taskforce.sh

bull-board is free and embeds in your app, but it is a viewer: no search inside job data, no roles, no alerts. Taskforce.sh is the hosted dashboard from the BullMQ authors: polished, but your job data transits their servers and you pay per connection. Bullpane is the third option: self-hosted, safe on production, priced per installation — free to run, and Pro when you need it behind a login. Detailed comparisons: vs bull-board · vs Taskforce.sh · vs QueueDash.

✓ IncludedPro Included in Bullpane Pro– Not available
Bullpaneself-hosted bull-boardopen source Taskforce.shhosted SaaS · on-prem on request
Job data stays in your network✓✓–proxied through their servers
LoginPro✓one shared basic-auth user✓
Users & rolesPro–✓roles from the $49.95 plan
Search inside job data✓–✓
BullMQ Pro groups, per-group concurrency & rate limits✓–group jobs in counts only✓
Alerts to Slack / webhookPro–✓
Audit log in your own databasePro––not listed for users
Flows✓tree per job · Pro: queue graph✓tree per job✓
PriceFree · Pro $39/mo per installationFreeFrom $19.95/mo, per connection
02 / The dashboard

Everything you wished bull-board showed you

Real screenshots, running against a BullMQ Pro queue and a busy demo. No mockups. If it is on this page, it is on the screen.

⌘K
Any queue in one keystroke

Any queue in one keystroke

Waiting and failed counts in the result, so you know which one is on fire before you open it.

/q/payments.charge?state=failed
Retry, remove, promote. One job or two hundred.

Retry, remove, promote. One job or two hundred.

The failure reason sits in the row. No click, no modal.

/q/payments.charge/j/5440
Jobs you can actually read

Jobs you can actually read

Timeline, data as a tree, options, return value, stack trace, logs, and who touched it.

/q/pro.grouped-tenants/groups
BullMQ Pro groups, with every per-group setting

BullMQ Pro groups, with every per-group setting

Waiting, limited, maxed, paused. Concurrency cap, rate limit, and exactly when a limited group resumes.

/q/payments.charge/metrics
Metrics from BullMQ's own counters

Metrics from BullMQ's own counters

Throughput, rate and success per minute, from the counters your workers already write.

/q/…/setup
How the queue is configured, without opening the code

How the queue is configured, without opening the code

Library and version, workers connected, concurrency, rate limit. When Redis cannot tell, it says so.

/health
Redis health, one INFO every three seconds

Server health, one read every three seconds

Redis: memory, CPU, commands per second, latency, clients, keys. Postgres: connections, transactions per second, table sizes and BullMQ’s untrimmed event table. Ten tabs cost your server as much as one.

/schedulers
Every scheduler, across every queue

Every scheduler, across every queue

What fires next, in the next hour or the next week, and what is overdue.

⌘K
Any queue in one keystroke

Any queue in one keystroke

Waiting and failed counts in the result, so you know which one is on fire before you open it.

/q/payments.charge?state=failed
Retry, remove, promote. One job or two hundred.

Retry, remove, promote. One job or two hundred.

The failure reason sits in the row. No click, no modal.

/q/payments.charge/j/5440
Jobs you can actually read

Jobs you can actually read

Timeline, data as a tree, options, return value, stack trace, logs, and who touched it.

/q/pro.grouped-tenants/groups
BullMQ Pro groups, with every per-group setting

BullMQ Pro groups, with every per-group setting

Waiting, limited, maxed, paused. Concurrency cap, rate limit, and exactly when a limited group resumes.

/q/payments.charge/metrics
Metrics from BullMQ's own counters

Metrics from BullMQ's own counters

Throughput, rate and success per minute, from the counters your workers already write.

/q/…/setup
How the queue is configured, without opening the code

How the queue is configured, without opening the code

Library and version, workers connected, concurrency, rate limit. When Redis cannot tell, it says so.

/health
Redis health, one INFO every three seconds

Server health, one read every three seconds

Redis: memory, CPU, commands per second, latency, clients, keys. Postgres: connections, transactions per second, table sizes and BullMQ’s untrimmed event table. Ten tabs cost your server as much as one.

/schedulers
Every scheduler, across every queue

Every scheduler, across every queue

What fires next, in the next hour or the next week, and what is overdue.

03 / Pro

Pro: the features a team needs

One key unlocks everything below for one installation, unlimited users. Verified with bullpane.com once a day, keeps working for seven days offline. Pro features are always shown locked in the free edition, never hidden.

Pro · new in 0.5.0

Your queues, inside your AI

Bullpane is an MCP server. Add its URL to Claude, or any MCP client that supports OAuth, and sign in with your Bullpane login or SSO. Ask why a queue is failing; let it retry the jobs.

It acts as you: the same API as the dashboard, with your role. Access is the lowest of the admin's ceiling, what you approved and your role, so a viewer never writes. Every write lands in the audit log, and drain or obliterate always comes back to the dashboard for a human to confirm.

MCPClaude + Bullpane
Pro

Alerts that watch BullMQ's metrics, not a screenshot

Backlog alerts from live counts. Failure and failure-rate alerts from BullMQ's metrics counters over a window you choose, with a minimum sample so a quiet minute cannot trip them.

The engine says warming up until it has real history and no metrics when a worker was created without them, instead of firing on a number it cannot stand behind. Slack or any webhook, cooldown per alert, every delivery logged.

/alertsalerts
Alerts page: one alert firing on SMS backlog, two warming up, and the delivery events below
Pro

Who did what, including the refused attempts

Every mutating action: who, what, on which queue or job, result, IP. Append-only, in your own database. A discard the role did not allow shows up as refused, which is the row you will actually want one day.

Filter by person, action, connection, queue or date. Export CSV for the auditor. Job payloads are never stored.

/auditaudit log
Audit log listing retries, a refused discard, a queue clean and user invites with actor, target, result and IP
Pro

Roles enforced on every API call

Viewer sees everything and changes nothing. Operator runs the queues, alerts and folders. Admin is the only role that can drain, obliterate, manage users or touch the license. Not a UI convention: the server checks.

/usersusers & roles
Users page with admin, operator and viewer roles and what each one can do
Folder dashboard for Payments with aggregate counts and the queues inside
Pro

Folders

Hundreds of queues across connections, grouped by team or product, with totals, success rate and alerts per folder.

Flow graph of queues detected from BullMQ parent references
Pro

Flow graph

Detected from the parent references your BullMQ flows already leave in Redis, plus manual edges for the hops your code does by hand.

Schedulers tab listing repeatable jobs with interval, run count and next run
Free

Job schedulers

Every repeatable job with its pattern, how many times it ran, next run, and a Remove button that goes through the official API.

04 / Pricing

Pricing

Per installation, not per connection, not per seat. Taxes and invoices are handled by Creem, our merchant of record. 14-day refund on your first payment, and the free edition never expires.

Free

$0
  • Unlimited connections and queues
  • Jobs, search, bulk actions
  • BullMQ Pro groups, with per-group settings
  • No login required — open it and use it
  • Read-only mode
Install

Pro · monthly

$39 / month
Cancel anytime
  • Everything in Free
  • Alerts to Slack / webhook
  • Users & roles
  • Folders and flow graph
  • Audit log with CSV export
  • SSO (OIDC & SAML 2.0)
  • MCP for Claude and any MCP client
  • Unlimited users, one installation
Get Pro monthly Questions before buying? hello@bullpane.com

Pro · yearly

$390 / year
12 months for the price of 10
  • Everything in Pro monthly
  • One invoice a year for procurement
  • Cancel any time, data stays
Get Pro yearly Need an invoice first, or an offline key? Write to me.
05 / Support

Talk to the person who built it

Bullpane is built and supported by one engineer who runs it against his own production queues every day. There is no ticket queue and no tier-one script. You write, I read it, you get an answer from the person who wrote the code.

06 / FAQ

Questions

How does the license work?

You get a key on the receipt. Paste it in Settings → License. The server activates it once against bullpane.com and re-checks it daily. One key runs one installation; to move servers, remove the key on the old one and paste it on the new one. Lost access to the old server? Write to hello@bullpane.com and we free it.

What if my server cannot reach the internet?

After a successful check the installation keeps Pro for seven days without any contact, and shows a "grace period" badge so you know. Air-gapped for real? Write to hello@bullpane.com for an offline key that never phones home.

Does anything about my queues leave my network?

No. The only thing the server ever sends to bullpane.com is the license key, a label for the installation (hostname) and the activation id. Job data, Redis URLs and queue names stay with you. The free edition sends nothing at all.

Does it work with BullMQ Pro?

Yes. Groups are first-class in both editions: status per group, waiting and prioritized jobs, active jobs against the group's concurrency, per-group rate limits and when a limited group resumes, validated against bullmq-pro 7.48. Batch size is a worker option BullMQ never writes to Redis, so the setup panel says "not observable" rather than guessing. Bullpane reads the same keys your workers use; it does not bundle or redistribute BullMQ Pro.

Does it work with BullMQ 6?

Yes, on Redis and on its PostgreSQL backend. On Redis, BullMQ 6 kept the key layout of 5, so the same reads and the official write API work unchanged. On Postgres (since Bullpane 0.6.0), add a connection of kind Postgres with your database URL and the schema BullMQ created (default bullmq): reads are SQL on BullMQ’s own tables, writes go through the official API, and it works behind PgBouncer, over TLS and with a read-only role. Or npx bullpane --postgres postgres://….

Can it hurt my production Redis?

That was the design constraint. No KEYS, no unbounded scans, one Lua round trip per queue, payloads truncated inside Redis, discovery cached. Start with BULLPANE_READ_ONLY=true if you want to watch before you trust it.

What happens when I cancel?

The installation goes back to the free edition. Alerts, folders, users and the audit log stay in your database and become accessible again the moment a key is activated.

Which database does it need?

None to set up. Users, sessions, alerts and the audit log live in a SQLite file inside the container's /data volume. MySQL 8 (or MariaDB) is optional: point DATABASE_URL at it when you run more than one replica or want a managed database. Redis is only ever read, and written through the official BullMQ API for job actions.