Vercel Daemons is now in public beta, allowing you to run long-running processes that pull and execute work from Vercel Queues, databases, or third-party systems without requiring an HTTP server:
Consumers using Vercel Queues poll mode, Celery, BullMQ, RabbitMQ, or Kafka.
Temporal or Cadence workers that long-poll their task queues.
Self-hosted CI runners for GitHub Actions, GitLab, or CircleCI that poll for jobs without requiring inbound connections.
Daemons run containers on Fluid compute and deploy alongside your app in the same project. Vercel builds your image and maintains the instance count you configure in each region, restarting instances that exit or crash.
Get started by packaging your application and dependencies in a Dockerfile or Containerfile, then adding a daemons entry to one configuration file at your project root. This example uses worker/Dockerfile to run one Celery worker in iad1 (Washington, D.C.):
#:schema https://openapi.vercel.sh/vercel.json[daemons.celery]root = "worker/"entrypoint = "Dockerfile"command = ["celery", "-A", "app", "worker", "--loglevel=info"]replicas.iad1 = 1A Celery worker on Vercel
Set any connection details your worker needs in your project's production environment variables, then deploy to production. Vercel starts the configured instances, and their output appears in your project's Logs. CPU and memory metrics are available with Observability Plus.
Learn more in the Vercel Daemons documentation.