A node.js client library for Faktory job server

Usage no npm install needed!

<script type="module">
  import faktoryClient from 'https://cdn.skypack.dev/faktory-client';



Travis branch Coveralls github branch David node

A node.js client for the Faktory job server

This repository provides a node.js client for Faktory. The client allows you to push jobs, fetch jobs, and otherwise communicate with the Faktory server.

If you're looking for a faktory worker framework for node.js, take a look at jbielick/faktory_worker_node. This is just the connection client library.


npm install faktory-client


faktory-client implements a promise interface for all async methods.

Pushing jobs

const client = require('faktory-client').create();

await client.connect();
await client.push({
  jobtype: 'MyJobName',
  queue: 'critical', // `default` if omitted
  args: [1]

Fetching jobs

const client = require('faktory-client').create({ labels: ['hungry'] });

await client.connect();
// fetches from each queue in order, blocking for 2s on each if they are empty
const job = await client.fetch('default', 'critical', 'low');

// 8ec88fc8-5060-451c-8ebb-efd4cb9c4a97

await client.ack(job.jid);
// or
await client.fail(job.jid, new Error('guess again!'));

See tests for more examples.


  • How do I specify the Faktory server location?

By default, it will use tcp://localhost:7419 which is sufficient for local development. Use FAKTORY_URL to specify the URL, e.g. tcp://faktory.example.com:12345 or use FAKTORY_PROVIDER to specify the environment variable which does contain the URL: FAKTORY_PROVIDER=FAKTORYTOGO_URL. This level of indirection is useful for SaaSes, Heroku Addons, etc.

See the Faktory client for other languages


  • Heartbeats
  • Reconnects
  • Connection interrupt graceful shutdown
  • Quiet/Stop signal handling from server
  • TLS


Install docker.

bin/server will run the faktory server in a docker container. The server is available at localhost:7419

Use DEBUG=faktory* to see debug lines.


Start a faktory server on localhost or use bin/server.

npm test will run the tests concurrently with ava.


Josh Bielick, @jbielick