Skip to content
Deploy
Browse the documentation

Run queue workers and daemons with Supervisor

Keep queue workers and other long-running processes alive with Supervisor. Add a process, see its live status, stop, start or restart it and read its log.

View as Markdown Updated October 7, 2026

The Processes page of a server manages long-running processes under Supervisor. A process is a command that should run all the time, such as a Laravel queue worker, Horizon, Reverb or a Node.js server. Supervisor starts it when the server boots and starts it again when it stops or crashes. From this page you add processes, see whether they are running, stop, start or restart them, and read their output.

The page is available on app servers, web servers and worker servers.

The Processes page with a queue worker running two processes
Processes under Supervisor

Add a process

  1. Open the server and choose Processes in the sidebar.
  2. Click Add process.
  3. Fill in the form (the fields are explained below).
  4. Click Add.

Vimonto Deploy writes a Supervisor program for the process, starts it and waits for it to come up. The row shows Adding while that runs, then the live status.

Field Default What it means
Name A name to recognise the process, such as "Queue worker". At most 60 characters.
Command The command to run, on a single line, such as php artisan queue:work --sleep=3 --tries=3. Pipes and variables work as typed.
Directory the user's home directory Where the command starts: a full path, such as /home/vimonto/example.com/current.
Run as the system user The system user (vimonto by default) or root.
Processes 1 How many copies of the command run side by side, from 1 to 64.
Start time (s) 1 How long it must run to count as started. A process that exits sooner counts as a failed start.
Stop time (s) 15 How long to wait for a clean stop before the process is killed.
Stop signal TERM The signal sent to stop the process: TERM, HUP, INT, QUIT, KILL, USR1 or USR2.

Example: a Laravel queue worker

Field Value
Name Queue worker
Command php artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
Directory /home/vimonto/example.com/current
Run as vimonto
Processes 2

Use the current directory of a site, not a specific release, so the worker always runs the code that is live. For an isolated site, its files belong to the site's own user; add its workers from the site's queues page, which runs them as the right user.

What do the statuses mean?

The status comes straight from Supervisor. It is fetched when you open the page; click Refresh status to fetch it again. After you add, change, stop, start or restart a process, the page fetches it by itself once that is done.

Status Meaning
Running Every process is running.
Starting Supervisor is starting the process and waiting for the start time to pass.
Stopping The process received its stop signal and is shutting down.
Stopped The process was stopped and does not run.
Failed At least one process exited, could not start or keeps crashing. Open the Log to see why.
Unknown Supervisor does not know the process, for example because it was removed by hand.

When only some copies run, the status shows a count, such as Running 1/2.

Stop, start and restart a process

Use the buttons in the process's row:

  • Stop stops every copy of the process until you start it again. A reboot of the server starts it again.
  • Start appears once a process is stopped and starts it again.
  • Restart stops and starts every copy, for example to load new code or a changed .env.

Each action runs as a task you can follow on the activity page. Only one of these actions runs per process at a time.

Read the log

Click Log to see the last 300 lines of the process's output (standard output and errors together), fetched from the server when you click. Supervisor writes the output to /var/log/vimonto/daemon-{id}.log and keeps up to 10 MB per file, with three older files.

Edit a process

Open the actions menu (⋯) and choose Edit. Change the fields and click Save. Vimonto Deploy rewrites the Supervisor program and restarts the process with its new settings.

If adding or changing a process fails, the row shows Failed; open the actions menu and choose Try again.

Remove a process

Open the actions menu (⋯), choose Remove and confirm with Remove process. The process is stopped, its Supervisor program and its log are deleted, and it no longer starts.

How processes relate to sites

The Processes page shows every Supervisor process on the server, including those that belong to sites:

  • Queue workers you add on a site's queues and scheduler page. That page offers a form made for Laravel workers (connection, queue, timeout, tries, memory) and builds the command for you.
  • Processes of site features, such as Horizon, Reverb, Pulse or Inertia SSR, which a site feature creates when you switch it on.

These processes appear here with their status, their Log and the Stop, Start and Restart buttons. Processes of a site feature are marked with a Via … badge, such as Via Horizon, and have no actions menu here: change them through the feature in the site header, and switch the feature off to remove them. Change or remove a worker you added yourself on the site's page or here.

Frequently asked questions

What is the difference between a process and a scheduled job?

A process runs all the time and is restarted when it stops. A scheduled job runs a command at set times, such as every minute or every night, and then exits.

My process keeps showing Failed. What should I check?

Open the Log. Common causes are a wrong Directory, a command that is not found because it needs a full path, a missing .env value, or a command that exits immediately instead of running in the foreground. Supervisor needs the command to keep running; do not start it in the background with & or a --daemon option.

Should a process run as root?

Rarely. Run processes as the system user unless the command really needs root, so a bug in your application cannot change the rest of the server.

Can I run a Node.js application as a process?

Yes. Use a command such as npm run start or node server.js with the application's directory. For a Node.js site, the site's own Processes page sets this up for you.