State-gated job actions
Add, inspect, promote, retry, requeue and cancel jobs. Every action is gated by the job's actual current state, so the UI never offers something the server would reject. Job Inspector →
bunqueue dashboard
A free, open source web UI that fully drives a bunqueue server (a fast, Redis-free, Bun-native background-job queue): queues, jobs, dead-letter queue, cron, webhooks, workers and live activity, plus start / stop / restart of the server process itself. Built for Bun developers and AI-agent builders who want to operate their queue, not just watch it. It talks only to bunqueue's public HTTP API and a tiny loopback control agent.
Open the live demoQuick startGitHub

Overview
Everything an operator needs to run a bunqueue server from the browser, from state-gated job actions right through to the process lifecycle. Every card below is a shipped page you can open in the demo right now.
Add, inspect, promote, retry, requeue and cancel jobs. Every action is gated by the job's actual current state, so the UI never offers something the server would reject. Job Inspector →
A Server-Sent-Events feed with automatic reconnect shows jobs flowing in real time. It is built on fetch, so it works with bearer-token auth, unlike EventSource. Live logs →
A fleet-wide dead-letter dashboard plus a single-queue triage surface: failure reasons, per-attempt history, retry one / retry all / purge, CSV export. DLQ Control →
Schedule by cron expression or interval-in-ms with a next-runs preview, then list and delete existing schedules. Cron →
Register endpoints with event scoping and an optional HMAC secret; watch success/failure counts, toggle, delete. Webhooks →
The one thing HTTP can't do, namely starting, stopping and restarting the bunqueue process, is delegated to a small loopback-bound agent with an Origin + Host allowlist, locked CORS and an optional bearer token. Server Control →
Browse tables, schema and indexes, page through rows, run SELECT-only queries with EXPLAIN and CSV/JSON export, all over a read-only connection, capped at 500 rows. Database →
Rolling live throughput charts, error-rate gauge, per-operation latency percentiles (push / pull / ack × p50 / p95 / p99). Metrics →
Threshold rules on queue depth, failures, error rate and latency, evaluated in the browser, with in-app toasts and desktop notifications. Alerts →
Push and drain load runs against any queue, in count or duration mode, with a live chart and run history. Benchmark →
Parent / children / depends-on relationships drawn as a graph, laid out client-side with no graph library. Flows →
An in-app assistant that drives the same API through tools. Bring your own key, and requests go straight from your browser to your provider. Copilot →
Tour
A real control surface, not a read-only viewer, so every screen in this tour is a live page you can drive in the demo.
Surface
Process
The priority is simplicity: one command serves the dashboard, proxies the API and runs the control agent. No clone, no build.
One process serves the dashboard on http://127.0.0.1:8080, proxies /api/* to your bunqueue server and runs the control agent.
bunx bunqueue-dashboardSet the server URL and bearer token from the Settings page (tokens stay in memory, never written to localStorage) or via BUNQUEUE_URL / VITE_BUNQUEUE_URL.

From Control ▸ Server the agent starts, stops and restarts the bunqueue process, with an editable launch config and a colour-coded live log tail.

Explore jobs, triage the DLQ, schedule cron, watch live activity. Destructive actions are confirmed and name their target; everything else is one click.

Get started
Four ways to run it, pick the one that fits. All of them serve the same app.
bunx bunqueue-dashboard
# → http://127.0.0.1:8080, serves the SPA plus the /api proxy and control agent, zero dependencies# Download the binary for your platform from the GitHub Releases page,
# then make it executable and run it, nothing else to install:
chmod +x bunqueue-dashboard-v*-darwin-arm64
./bunqueue-dashboard-v*-darwin-arm64
# → http://localhost:8080docker run --rm -p 8080:80 ghcr.io/egeominotti/bunqueue-dashboard:edge
# → http://localhost:8080, set the server URL from the Settings pagebun install
bun start
# agent (http://127.0.0.1:6800) + dashboard (http://localhost:5273) togetherFAQ
A complete operator surface over bunqueue's HTTP API: scheduling, triage, limits, live activity and process lifecycle in one UI, with every job action gated by the job's real state, instead of hand-rolled curl scripts and guesswork about which action a job will accept.
No. It never imports or modifies bunqueue source. It speaks only to the public HTTP API. The SQLite inspector opens its own read-only connection and accepts SELECT-style statements only, so it cannot write even if asked to.
The agent can spawn processes, so it's locked down: bound to 127.0.0.1, an Origin allowlist with CORS never set to *, a Host-header allowlist against DNS rebinding, and an optional AGENT_TOKEN on state-changing requests. The full threat model is in the agent docs.
In memory only. Server tokens, agent tokens, S3 keys and webhook targets are deliberately excluded from localStorage, so re-enter them per session or supply them via environment variables.
Yes, the live demo runs the real app against fixture data in your browser. Every page works, no backend required.
Four ways: the zero-dependency npm package (bunx bunqueue-dashboard), a standalone binary for linux/macOS/windows, the multi-arch Docker image, or from source. The binary embeds the SPA, the API proxy and the agent in one file.
Alerts are evaluated in the browser while a tab is open, so it's not away-from-desk paging. S3 backup is configured by the server's environment, not from the UI. Every other verified gap is listed, with file references, on the known issues page.
No telemetry. The only optional egress is the AI Copilot: if you enable it, requests go directly from your browser to the LLM provider you configure, using your own key.