PW

pontusab/workbench

部署与 DevOps
420 stars 0 forks 质量 97 趋势 97

Open-source BullMQ dashboard. Drop-in for any Node or Bun backend.

概览

Open-source BullMQ dashboard. Drop-in for any Node or Bun backend.

README

Workbench

Open-source BullMQ dashboard. Drop-in for any Node or Bun backend.

Workbench is a modern dashboard for BullMQ. Runs jobs, flows, schedulers and metrics, all served from your own backend behind your own auth.

  • Zero infrastructure — mounts as a route in your existing app, or run as a standalone Docker container
  • Adapters for Hono, Elysia, Express, Fastify, Koa, NestJS, AdonisJS, Next.js, TanStack Start, Astro, Nuxt, Bun.serve, and h3
  • Standalone image on GHCR (ghcr.io//workbench-standalone) for Docker / Kubernetes deployments
  • MCP server for Cursor, Claude Desktop, Zed, and Continue.dev — drive your queues from your editor’s chat
  • Flows & DAG view, metrics, schedulers, search
  • Dark-mode UI, basic-auth-protected by default
  • MIT licensed

Website: getworkbench.dev · Documentation

Migrating from bull-board?

Workbench is a drop-in alternative with thirteen first-party framework adapters, FlowProducer DAGs, error triage, and a keyboard-driven UI.

bull-board Workbench
@bull-board/express @getworkbench/express
@bull-board/fastify @getworkbench/fastify
@bull-board/koa @getworkbench/koa
@bull-board/nestjs @getworkbench/nestjs
@bull-board/hono @getworkbench/hono
@bull-board/h3 @getworkbench/h3
@bull-board/elysia @getworkbench/elysia

Run npx @getworkbench/cli init to swap the mount in one command. Full comparison: getworkbench.dev/blog/workbench-vs-bull-board

Quick start

npx @getworkbench/cli init

The CLI detects your framework, installs the matching @getworkbench/ package, injects the mount (or scaffolds a route file for Next.js), writes .env.example entries, and optionally drops a docker-compose.yml for Redis.

Manual setup

Pick the adapter that matches your stack:

Visit http://localhost:PORT/jobs.

Configuration

Option Type Description
queues Queue[] BullMQ Queue instances to display. Required.
auth { username, password } Basic auth credentials. Strongly recommended in prod.
title string Dashboard title. Default: "Workbench".
logo string Logo URL to display in the nav.
basePath string Override base path detection. Required for @getworkbench/elysia, @getworkbench/koa, @getworkbench/next, @getworkbench/tanstack-start, @getworkbench/astro, @getworkbench/nuxt, and @getworkbench/h3.
readonly boolean Disable actions (retry, remove, promote).
tags string[] Fields from job.data to extract as filterable tags.
alerts AlertsOptions Self-hosted Slack/Discord/webhook alerting via BullMQ QueueEvents.

Alerts

Alerts are on by default. Configure Slack, Discord, or webhook contact points and rules in the dashboard Alerts page — notifications are only sent after you set that up. The model follows Grafana-style contact points + rules (unlike Bull Board, which has no built-in alerting). See @getworkbench/core README for setup steps.

Packages

Package Description
@getworkbench/core Core + API router + UI
@getworkbench/hono Hono adapter
@getworkbench/elysia Elysia adapter
@getworkbench/express Express adapter
@getworkbench/fastify Fastify adapter
@getworkbench/koa Koa adapter
@getworkbench/nestjs NestJS adapter
@getworkbench/adonis AdonisJS adapter
@getworkbench/next Next.js App Router adapter
@getworkbench/tanstack-start TanStack Start adapter
@getworkbench/astro Astro adapter
@getworkbench/nuxt Nuxt (Nitro/h3) adapter
@getworkbench/h3 h3 adapter (Nitro/SolidStart/Analog)
@getworkbench/bun Bun.serve adapter
@getworkbench/cli npx @getworkbench/cli init
@getworkbench/mcp Model Context Protocol server — Cursor/Claude/Zed/Continue
apps/standalone Standalone Bun server + Docker image (ghcr.io/pontusab/workbench-standalone)

Hyper is distributed via a source-component registry, so its Workbench integration ships separately as a hyper add @getworkbench component in the pontusab/hyper repo.

Docker (standalone)

Run Workbench as its own container when you don’t want to embed it in an app server. See apps/standalone for env vars and local dev.

docker run --rm -p 3000:3000 \
  -e REDIS_URL=redis://host.docker.internal:6379 \
  -e QUEUE_NAMES=email,image \
  ghcr.io/pontusab/workbench-standalone:latest

Tagged releases publish ghcr.io/pontusab/workbench-standalone: automatically.

FAQ

Is it BullMQ-only? Yes. Bull (legacy) is not supported.

What Node version? 18+ (or Bun 1.1+ for the Elysia and Bun.serve adapters).

What TypeScript version? Any TypeScript 4.x or 5.x for the non-Hono adapters (Express, Fastify, NestJS, Next.js, Elysia) and @getworkbench/core. @getworkbench/hono requires TypeScript 5.0+ because Hono 4’s own bundled .d.ts uses const type parameters introduced in TS 5.0.

Can I run it without auth? Yes, omit the auth option. Don’t do that in production.

Does it require a separate service? No for the embed path — it mounts as a route in your existing backend. Use the standalone Docker image when you want a separate container instead.

Development

bun i
bun run build
bun run typecheck

# end-to-end smoke test against every example
docker compose up -d redis
bun run smoke

See CONTRIBUTING.md.

License

MIT © Pontus Abrahamsson

View this README on GitHub

安装

npx @getworkbench/cli init