Scaling is just running more copies of your app — no leader election, no config, no coordinator.
Jobs can also target specific servers in your fleet for data locality.
Point it at the database you already run — PostgreSQL, MySQL, Oracle, PGLite, or SQLite. Each driver picks the best strategy its engine supports, so your app code stays identical.
Pick a driverA mountable React dashboard (plus a full CLI) to monitor and control both queues and instances live — pause, resume, retry, and watch throughput, with no third-party service.
See the dashboardDelayed jobs, fixed intervals, and cron with timezones — all through one addJob method.
Schedule jobsAutomatic retries with backoff, stalled-job reclaim, liveness-aware fallback, and at-least-once delivery — with rich events and hooks for metrics and tracing.
Events & hooksYour table never fills up on its own. Pick a retention mode per queue or per job — keep the history forever, or delete after a TTL — and PortQueue does the cleanup in the background.
Configure retentionAt a glance
Add a job, process it on a worker. Same code on any driver.
import { PortQueue } from '@portqueue/core';
import { PostgresqlDriver } from '@portqueue/core/drivers/postgresql';
enum QueueName { Emails = 'emails' }
const pq = new PortQueue<QueueName>({
driver: new PostgresqlDriver({ connectionString: process.env.DATABASE_URL }),
});
await pq.init();
// Create the queue and provide a jobs handler.
pq.createQueue<{ to: string }>({
name: QueueName.Emails,
limiter: { concurrency: 10 },
handler: async (job) => { await send(job.data); },
});
// Add a job to the queue.
await pq.addJob({ queue: QueueName.Emails, data: { to: 'a@b.com' } });
License
PortQueue is absolutely free — open source under the MIT license. Commercial use permitted, no license fee, no obligations. Use it in anything, forever.
Team
The people who build PortQueue.
Designed and built PortQueue — the driver model, the public API, and the docs and dashboard design system.
Want to join them? PortQueue is open source and welcomes contributors — see the Contributing guide.