pylon start and it runs in the foreground until you stop it.
Starting the daemon
What happens on startup
Recover pending jobs
Reads each pylon’s SQLite database and restores any jobs that were
queued or pending when the daemon last stopped.Prune orphaned containers
Removes Docker containers and workspace directories no longer associated with a known job.
Verify agent images
Checks that the Docker image for each pylon’s agent type is present (e.g.
pylon/agent-claude). Missing images are built before the server starts.Hot reload
Pylon watches pylon config files for changes and reloads them automatically. Edits to trigger paths, agent prompts, and channel settings take effect within seconds — no restart needed.Hot reload applies to individual pylon configs (
~/.pylon/pylons/<name>/pylon.yaml). Changes to the global config (~/.pylon/config.yaml) require a full daemon restart.Stopping the daemon
The daemon runs in the foreground. Press Ctrl+C or sendSIGTERM from another terminal:
pylon start again.
Exposing webhooks
Pylon listens on a local address by default. External services need a publicly reachable URL to deliver webhooks.- Reverse proxy
- ngrok (development)
Deploy Pylon on a machine with a public IP (or behind nginx/Caddy) and set
server.public_url in ~/.pylon/config.yaml:public_url when generating webhook URLs and when pylon doctor tests reachability.
Concurrency
By default, Pylon runs at most 3 agent containers simultaneously. Jobs that arrive while all slots are full are rejected. To change the limit, setdocker.max_concurrent in ~/.pylon/config.yaml:
systemd service
Running Pylon as a systemd service gives you automatic startup on boot, restart on failure, andjournalctl log integration.
Install
- Without root — installs a user-level service at
~/.config/systemd/user/pylon.serviceand enables it withsystemctl --user enable pylon. - With root (
sudo) — installs a system-level service at/etc/systemd/system/pylon.serviceand enables it withsystemctl enable pylon.
Restart=on-failure and RestartSec=5.
Check status
systemctl directly:
- User-level
- System-level
View logs
Pylon’s output is captured by journald when running as a service:Uninstall
Upgrades
When you runpylon upgrade and the daemon is managed by systemd, Pylon detects this automatically and restarts the service after the upgrade completes. No manual stop/start is needed.
To switch between user-level and system-level, run
pylon service uninstall first, then re-run pylon service install with or without sudo.