Web-based monitoring and management dashboard for RunMQ message queues.
- Real-time queue monitoring — Live message counts, consumer stats, and queue states with configurable auto-refresh
- Queue detail view — Per-queue metrics: total, ready, unacknowledged, retry, and DLQ message counts
- Retry management — Enable/disable automatic retries, configure retry delays per queue
- Dead letter queue (DLQ) — Toggle DLQ routing, inspect messages with full payload and headers, reprocess or clear
- Message inspector — Browse retry and DLQ messages with expandable JSON payloads, headers, and routing keys
- Dark & light mode — Clean, minimal UI with full theme support
- JWT authentication — Secure login with 24h token expiration
- Docker and Docker Compose
- A running RabbitMQ instance with the Management & Shovel Plugins enabled
- Clone the repository:
git clone https://github.com/runmq/pulse.git
cd pulse- Update the environment variables in
docker-compose.ymlto point to your RabbitMQ instance:
RABBITMQ_HOST: your-rabbitmq-host
RABBITMQ_PORT: 15672
RABBITMQ_MANAGEMENT_USER: your-user
RABBITMQ_MANAGEMENT_PASSWORD: your-password
JWT_SECRET: your-secret-key- Start the dashboard:
docker compose up --build- Create an admin user:
docker compose exec backend node scripts/create-user.js admin yourPassword admin- Open http://localhost:3000 to start managing your queues
Pulse's runtime controls (toggling retries, toggling DLQ routing, changing retry delay) are designed for live incidents and on-the-fly tuning — adjusting queue behavior without redeploying. The changes are written as RabbitMQ policies/bindings, so they take effect immediately.
However, your services are the source of truth. They are not aware of changes made via Pulse, and the next time a service starts up RunMQ asserts the topology described in your processor configuration — any drift introduced from Pulse will be overwritten by the deployed config.
Treat Pulse changes as temporary. Once the incident is resolved, fold the new values back into your processor configuration and redeploy.
To run without Docker:
# Backend
cd backend && npm install && npm run start:dev
# Frontend
cd frontend && npm install && npm run dev