Bullpane vs bull-board
Checked against bull-board 9.10.1 on 27 September 2026 · Other comparisons: Taskforce.sh · QueueDash
bull-board is the default BullMQ UI for good reasons: it is free, MIT, actively maintained and mounts inside the Node server you already run. Bullpane is a standalone dashboard for the point where you need more than a viewer: search inside job data, a real view of BullMQ Pro groups, reads that stay cheap on a production Redis and, in Pro, a team behind a login with roles and an audit trail.
Short answer. Keep bull-board if you want it inside your app behind the auth you already have, or if you are on Bull 3/4. Pick Bullpane if you need to find a job by what is in it, you run BullMQ Pro groups, or more than one person operates the queues and you need to know who did what.
Side by side
| Bullpanestandalone container | bull-boardembedded, CLI or Docker | |
|---|---|---|
| License | MIT core, Pro source-available | MIT |
| Runs inside your own Express / Fastify / Nest / Hono app | –separate container | ✓ |
| Standalone Docker image | ✓ | ✓ |
| Bull 3/4 (not MQ) | – | ✓ |
| BullMQ 6 on PostgreSQL | ✓since 0.6.0; PgBouncer, TLS, read-only role | ✓ |
| Search inside job data | ✓bounded, resumable | –queue names only |
| BullMQ Pro groups | ✓per-group status, concurrency, rate limit | ✓group jobs in counts, group id per job |
| Payload truncated inside Redis before it is sent | ✓ | –trim with a formatter, after the read |
| Flow tree per job | ✓ | ✓ |
| Read-only mode | ✓ | ✓ |
| Login | Profree has none | ✓one shared basic-auth user, CLI/Docker; embedded: bring your own |
| User accounts & roles | Proadmin / operator / viewer | –write your own hooks |
| SSO (OIDC, SAML 2.0) | Pro | – |
| Alerts to Slack / webhook | Pro | – |
| Audit log | Proappend-only, CSV export | –write your own from a hook |
| Queue-to-queue flow graph | Pro | – |
| Price | Free · Pro $39/mo or $390/yr per installation, unlimited users | Free |
Where bull-board is the better choice
- It lives inside your app. Mount it on a route of the Express, Fastify, Koa, Hapi, NestJS, Hono, H3 or Elysia server you already deploy and it inherits your login. No second service to run. Bullpane is always its own container.
- Bull 3/4. bull-board still reads the old Bull. Bullpane reads BullMQ 4, 5 and 6 on Redis, Redis Cluster and Valkey, and BullMQ 6 on Postgres.
- Cheapest possible login. Its Docker image takes
BULL_BOARD_USERandBULL_BOARD_PASSWORD. Bullpane's free edition has no login at all, on purpose: you put it on a private network or behind your proxy, or you use Pro. - It is the default. Around 3,500 stars and years of answers on the internet. If a viewer is all you need, that matters.
Where Bullpane goes further
Finding a job by what is in it
“Which job had order 81723?” is the question that sends people to redis-cli. bull-board's search matches queue names; searching payloads is its oldest open request (#154, open since 2020). Bullpane searches inside job data in the free edition. The search is bounded: it reads at most N job hashes per call, returns a cursor and the UI streams results in, so a state with a million jobs never blocks Redis.
Reads built for a production Redis
A dashboard that slows down the workload it watches is worse than none. Bullpane never runs KEYS, reads every page with one Lua round trip and truncates payloads inside Redis, so a queue of 1 MB payloads costs the same as a queue of tiny ones: a page of 200 jobs with 1 MB payloads answers in 7 ms, a search over 1,000 of them in 8 ms. bull-board loads each page with getJobs and sends full job data to the browser unless you write a formatter to trim it; tabs using 1–2 GB of RAM and UI crashes on large payloads have been reported (#902, #1059, both since closed). The rules and measurements are public in STRESS-TEST.md.
BullMQ Pro groups as groups
bull-board's Pro adapter adds grouped jobs to the waiting, delayed and paused counts and shows the group id next to each job. Its own docs note that on queues with very many groups the counts can be up to 5 s stale and that prioritized jobs inside a group are missing from them. Bullpane shows each group in Pro's own vocabulary (waiting, limited, maxed, paused), with jobs waiting and how many are prioritized, active jobs against the concurrency cap, the rate limit, and when a limited group returns to rotation.
A team, not a URL
Once more than one person can retry, drain or obliterate a queue, you need to know who did it. With bull-board that is code you write: handlerHooks.before to allow or deny routes, an after hook to log actions somewhere. Bullpane Pro has it built in: user accounts, admin/operator/viewer roles enforced on every API call, SSO over OIDC and SAML 2.0 configured in the UI, and an append-only audit log with actor, target, IP and CSV export. It also sends alerts to Slack or a webhook on waiting counts, failure rate or processing time, where bull-board's docs say plainly that it “is a viewer, not a monitor”.
Price
bull-board is free. Bullpane's free edition is free too, with no account and no login. Bullpane Pro costs USD 39/month or USD 390/year for one installation, with unlimited users and unlimited connections. Pro features are visible in the free edition with a lock, never hidden.
Try both in ten minutes
Bullpane reads the same Redis your workers and bull-board already use and needs nothing from your code. Run it next to bull-board, point it at the same Redis with BULLPANE_READ_ONLY=true, and compare on your own queues.
Install the free edition See Pro pricing
Sources
- bull-board on GitHub: README, basic auth, access-control hooks, alerting, BullMQ Pro adapter
- Bullpane on GitHub: README, stress test
Something here out of date? bull-board moves fast. Write to hello@bullpane.com and it gets fixed.