Skip to content

Support standalone deployment server mode #602

@holmofy

Description

@holmofy

Title: Feature Request: Provide an apalis-server for standalone deployment (Faktory-like mode)


Description
First of all, thanks for building Apalis — it’s a great library for background job processing in Rust.

Currently, Apalis works very well as an embedded library, but in some use cases it would be very helpful to have a standalone server mode, similar to how [Faktory](https://github.com/contribsys/faktory) works.

With a standalone apalis-server, developers could:

  • Deploy a single job processing service in their infrastructure.
  • Connect to it from multiple applications (potentially across different languages).
  • Manage and monitor jobs from a central place.

Motivation

  • In multi-service environments, having each service embed Apalis separately makes management harder.
  • A central server improves observability, monitoring, and operational simplicity.
  • It also allows the project to define a simple protocol (HTTP/gRPC/custom TCP), which opens the door for community clients in other languages (e.g. Go, Python, JavaScript).

Proposed solution

  • Introduce a new crate/binary, e.g. apalis-server.

  • This binary would:

    • Run the Apalis job engine internally.
    • Expose a simple API/protocol for pushing/pulling jobs.
    • Optionally provide a basic Web UI and metrics endpoint.
  • Keep Apalis as a library for applications that prefer direct integration.

  • This way, Apalis can cover both use cases: embedded mode and server mode.


Inspiration
The model of Faktory is a good reference:

  • Simple client protocol.
  • Reliable job storage (via Redis or Postgres).
  • Features like retries, scheduled/delayed jobs, and failure queues.
  • A Web UI for visibility (even a basic one would be very useful).

Additional context
This would make Apalis not just a Rust job processing library, but a general-purpose job queue system that could be adopted across language ecosystems.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions