BullMQ infrastructure.
Solved.

Managed hosting, real-time monitoring, or self-hosted with eject — BullRun gives your BullMQ queues a control plane, no matter how you run them.

$ npx bullrun init

  Created bullrun.config.ts

  Created src/tasks/example.ts

$ npx bullrun dev

  [bullrun] Worker started for queue "default" (1 task, concurrency: 5)

  [bullrun] Worker ready. Watching for changes...

Running 48 tasks across 13 queues and 13 schedules in production today.

Two ways to run BullRun

Managed

We host your Redis. You write tasks.

For teams starting fresh or migrating off self-hosted Redis.

$ npx bullrun init
  • Hosted Redis + Dashboard + SDK + Alerting + Scheduling

Free up to 10K runs/mo

Start managed

Monitor

You keep your Redis. We give you eyes.

For teams already running BullMQ who want dashboard + alerting.

$ npx bullrun connect
  • Dashboard + Alerting + Job management (your infra stays)

Free with 1 connection

Connect your Redis

Or go fully self-hosted. bullrun eject exports your config to run on your own Redis. Zero lock-in. Your code doesn't change.

Sound familiar?

"We spend more time on Redis than on our product."

Provisioning, failover, connection pooling, memory alerts. You didn't start a company to babysit Redis.

"Our BullMQ queues are a black box."

Jobs fail. Queues back up. You find out when a customer emails. Taskforce wants $95/mo for a dashboard.

"Alternatives mean rewriting everything."

Trigger.dev and Inngest are great greenfield tools. But you have 48 BullMQ tasks in production. Migration isn't an afternoon.

Same BullMQ API. We handle the infrastructure.

5 lines of code. No Redis config. No worker boilerplate.

Your BullMQ today

import { Worker } from "bullmq";
import Redis from "ioredis";

const connection = new Redis({
  host: process.env.REDIS_HOST,
  port: 6379,
  maxRetriesPerRequest: null,
});

const worker = new Worker(
  "emails",
  async (job) => {
    await sendEmail(job.data);
  },
  { connection, concurrency: 10 }
);

// + Redis provisioning
// + Failover handling
// + Dashboard (Taskforce $95/mo)
// + Alerting (custom build)
// + Monitoring (custom build)

Same code on BullRun

import { defineTask } from "@bullrun/sdk";

export const sendEmail = defineTask({
  name: "send-email",
  queue: "emails",
  concurrency: 10,
  handler: async (payload) => {
    await sendEmail(payload);
  },
});

// Redis: managed ✓
// Dashboard: included ✓
// Alerting: built-in ✓
// Monitoring: built-in ✓
// Retry/DLQ: built-in ✓

Monitor mode requires zero code changes — just connect your Redis URL.

The dashboard your BullMQ queues deserve

Every feature works in both Managed and Monitor mode.

Real-time dashboard

Queue health, throughput charts, job inspection. Dark mode.

Task registry

Define tasks in code, see them in the dashboard. 48 tasks and counting.

Job search & filters

Find any job by ID, status, queue, or payload. Instant.

Bulk operations

Retry, remove, or promote thousands of jobs in one click.

Scheduling

Cron, one-off, recurring. Timezone-aware. 13 schedules running.

Alerting

Slack, email, webhooks. Know before your users do.

Team management

Invite your team. Role-based access. Audit log.

Worker monitoring

See which workers are active, their concurrency, and throughput.

CSV export

Export job data for debugging or reporting. One click.

Keyboard shortcuts

Power-user navigation. k to search, r to retry, ? for help.

Multi-environment

Dev, staging, prod. Isolated configs, one dashboard.

Managed

Managed Redis

Provisioned, scaled, monitored. Per-project isolation.

How BullRun compares

If you need managed hosting

BullRunTrigger.devInngest
BullMQ compatible
Migration effortMinimalFull rewriteFull rewrite
DashboardIncludedIncludedIncluded
Self-host option
Free tier10K runs/mo50K runs/mo25K runs/mo
Starting paid$19/mo$25/mo$25/mo

If you have your own Redis

BullRun MonitorTaskforce.shUpqueue
Price per connection$6.33/conn$49/conn$50/conn
Free tier
Bulk job operations
Job searchBasicBasic
Team management
AlertingSlack, email, webhooksBasic emailEmail
Keyboard shortcuts

BullRun Monitor Pro: $19 for 3 connections. Taskforce: $49/connection. Upqueue: $50/connection.

Built for production. Running in production.

48

Tasks in production

13

Queues running 24/7

13

Scheduled jobs

BullRun powers the background infrastructure for Propzilla (206M property records), Bud Fox Capital (financial data), and Foxhound (web scraping). We built it for ourselves first.

Simple pricing. Start free.

All plans include the dashboard, CLI, and alerting. No credit card required.

Beta pricing — lock in reduced rates before general availability.

Free

$0/mo

For side projects and testing

  • 10,000 runs/month
  • 2 workers
  • 3 queues
  • 1-day logs
  • Email alerts
Get started free

Pro

Beta pricing
$29$19/mo

For indie devs and small teams

  • 100,000 runs/month
  • 10 workers
  • Unlimited queues
  • 7-day logs
  • Slack + email + webhooks
  • 3 environments
Start free trial

Team

Beta pricing
$99$79/mo

For growing engineering teams

  • 1,000,000 runs/month
  • 100 workers
  • Unlimited everything
  • 30-day logs
  • All alert channels
  • Bulk job operations
  • 20 team members
  • Priority support
Start free trial

Start with us. Go local anytime.

BullRun is managed BullMQ. When you're ready to run your own Redis, one command exports everything. Your code doesn't change.

Start managed

BullRun hosts your Redis. Or connect your own. Either way: define tasks, trigger jobs, see results.

Grow with us

Dashboard, alerting, team management, bulk ops, keyboard shortcuts. All included.

Eject anytime

bullrun eject exports your config. Point at your own Redis. Zero lock-in.

BullRun is BullMQ-compatible. No proprietary APIs. No lock-in. Your workers talk standard BullMQ. If you leave, your code stays the same.

Your BullMQ queues deserve better.

Managed hosting or dashboard-only monitoring. Start free in 60 seconds.

$ npx bullrun init