Skip to content
Get started
Get started
Install bunqueue: Server and Clients for Your Runtime
View Markdown
guide · installation

Install for your runtime.

The free bunqueue server runs on Bun. Your application uses the client for its own language. Bun applications can also embed the queue directly. The server, clients and queue features are included under MIT.

  • The bunqueue server and embedded runtime require Bun v1.4.0 or later when run from the package. Standalone executables and Docker images already include the runtime.
  • External Node.js, Deno, Python, PHP, Go, Rust, and Elixir clients need their SDK’s documented runtime plus a reachable Bun-powered bunqueue server; they do not require Bun in the client process.
Terminal window
bun add bunqueue

That is it. The package includes the client library, standalone server, and CLI. msgpackr is its only direct runtime dependency; SQLite, PostgreSQL connectivity, cron parsing, HTTP, WebSocket, and S3 use Bun’s native APIs.

The Bun bunqueue package bundles the client, the server, and the CLI. Every other SDK is a client only: it connects to a bunqueue server, started once with bunx bunqueue start (see SDKs and Server Mode).

Save this as test.ts and run bun run test.ts:

import { Queue, Worker } from 'bunqueue/client';
// Both Queue and Worker must have embedded: true
const queue = new Queue('test', { embedded: true });
const worker = new Worker(
'test',
async (job) => {
console.log('Processing:', job.data);
return { success: true };
},
{ embedded: true }
);
await queue.add('hello', { message: 'bunqueue is working!' });

You should see Processing: { message: "bunqueue is working!" }. Next: the Quick Start builds on this.

To check the server and CLI:

Terminal window
bunqueue --version
bunqueue start

From 2.9.5, release images are available on Docker Hub as egeominotti/bunqueue and on GHCR as ghcr.io/egeominotti/bunqueue. Both provide Linux amd64 and arm64 images under the same tag; Docker selects the appropriate architecture.

Terminal window
docker run -d --name bunqueue \
-p 6789:6789 -p 6790:6790 \
-v bunqueue-data:/app/data \
egeominotti/bunqueue:2.9.5
curl http://localhost:6790/health

The named volume persists SQLite data at /app/data. TCP clients connect to port 6789; HTTP endpoints use port 6790. Use a version tag or digest for deployments; latest follows the most recently published release.

Each release ships self-contained executables, useful on servers and edge devices (Raspberry Pi, ARM64 boxes) where you don’t want to install a runtime:

Starting with 2.9.5, choose one of eight archives from GitHub releases:

Operating systemArchitectureArchive
Linux (glibc)x64bunqueue-linux-x64.tar.gz
Linux (glibc)arm64bunqueue-linux-arm64.tar.gz
Linux (musl / Alpine)x64bunqueue-linux-x64-musl.tar.gz
Linux (musl / Alpine)arm64bunqueue-linux-arm64-musl.tar.gz
macOSx64 / Intelbunqueue-darwin-x64.tar.gz
macOSarm64 / Apple Siliconbunqueue-darwin-arm64.tar.gz
Windowsx64bunqueue-windows-x64.zip
Windowsarm64bunqueue-windows-arm64.zip

For example, on Linux arm64 with glibc:

Terminal window
curl -fsSLO https://github.com/egeominotti/bunqueue/releases/latest/download/bunqueue-linux-arm64.tar.gz
tar -xzf bunqueue-linux-arm64.tar.gz
sudo mv bunqueue-linux-arm64 /usr/local/bin/bunqueue
bunqueue start --data-path /var/lib/bunqueue/queue.db

A SHA256SUMS file is attached to every release for checksum verification. Download it from the same release as your archive. On Windows, extract the ZIP and run bunqueue-windows-x64.exe or bunqueue-windows-arm64.exe.

The binary is the full server + CLI. For the client SDK in your app code you still install the package (bun add bunqueue).

Terminal window
git clone https://github.com/egeominotti/bunqueue.git
cd bunqueue
bun install
bun run build

bunqueue is written in TypeScript and ships full type definitions:

import type {
Job,
JobOptions,
WorkerOptions,
StallConfig,
DlqConfig,
DlqEntry,
} from 'bunqueue/client';