Open-source operator dashboard for BullMQ. Run it as its own process, or embed it in any Node app under your existing auth.
š¢ Live demo: demo.muleta.dev ā populated with synthetic queues, schedulers, jobs, and flows so you can click through the full UX.
Pre-1.0. The API and config surface may change between
0.xminor releases. See the roadmap below.
Fastest path. Runs as its own service, points at your existing Redis.
docker run --rm -p 3737:3737 \
-e MULETA_REDIS_URL=redis://host.docker.internal:6379 \
ghcr.io/muleta-dev/muleta:edge
Open http://localhost:3737. Multi-arch (linux/amd64 + linux/arm64). Full guide: docs/docker.md.
Mount the dashboard inside an existing Node app ā same process, same auth, same deploy. The SPA is bundled inside the npm package; one install, one mount point.
import { createMuleta } from "@muleta-dev/core"
import { createEndpoints, createHandler } from "@muleta-dev/server"
import { Hono } from "hono"
const muleta = await createMuleta({ redis: { url: process.env.REDIS_URL! } })
const dashboard = createHandler({
endpoints: createEndpoints(muleta),
assets: "bundled",
basePath: "/admin/queues",
})
const app = new Hono()
app.route("/admin/queues", dashboard)
Adapters available for Express, AdonisJS, NestJS, and raw node:http. Full guide: docs/embed.md.
Heads-up: muleta ships without authentication ā the dashboard exposes destructive actions (retry, remove, pause). See docs/auth.md for the wrapping pattern before deploying.
| Topic | Doc |
|---|---|
| Run muleta as a Docker container | docs/docker.md |
| Embed in your Node app (Hono / Express / Adonis / Nest / raw http) | docs/embed.md |
| Wrap the dashboard with your auth middleware | docs/auth.md |
| Report a security issue | SECURITY.md |
Runnable embed examples: examples/embed-hono, examples/embed-express, examples/embed-node-http.
| Package | What it is |
|---|---|
@muleta-dev/server |
Hono handler with the dashboard SPA bundled ā what most people install. |
@muleta-dev/core |
Headless queue accessors. Use directly only if you're building custom tooling on top of muleta's queue model. |
ghcr.io/muleta-dev/muleta |
Standalone Docker image ā built from apps/standalone. |
v0.1 milestone: dashboard parity with bull-board for the read paths, plus the destructive operator actions, plus embeddable everywhere bull-board is.
Tracked publicly in GitHub issues. Roadmap items being prioritized for 0.x:
Pre-1.0 means breaking changes are possible between minor releases; pin to a specific version (@muleta-dev/[email protected] or :X.Y.Z Docker tag) for production.
pnpm install
pnpm lint
pnpm typecheck
pnpm test
Node 22+ and pnpm 9+. The repo is a monorepo with packages, apps, and runnable examples wired through pnpm workspaces.