Jobs and Operations
Every change on a server is a typed, audited job from a fixed allowlist.
A job is one operation on one server: restart a service, deploy an app, run a query, apply the proxy config. Jobs are the only way the control plane changes anything on a host, which keeps every change typed, queued, observable and audited.
Job lifecycle
- An agent runs one job at a time, in a worker thread, so heartbeats keep flowing during long builds.
- Progress is streamed as events (steps, info, warnings, errors) that the dashboard shows live.
- Job output is encrypted at rest. Log reads are disposable and deleted after an hour.
- A job can be canceled while it is still queued. Actions accept an
idempotency_keyso a retried request doesn’t queue the same work twice.
The operation allowlist
Every job type has a strict payload schema with no extra fields allowed. The same list is enforced by the API, the agent and the helper.
Protected services
Some actions are refused even with valid input, because they would cut VPSPilot or you off from the server:
vpspilot-agent.serviceandvpspilot-helper.servicecan’t be stopped or restarted from the dashboard.ssh.serviceandsshd.servicecan be restarted but never stopped.
Job secrets
Passwords, environment values, SQL text and backup keys never appear in a job payload. When the agent starts a job that needs them, it requests them from /agent/v1/jobs/{id}/secrets with its own credential. The helper passes them to child processes through stdin or environment variables, never as command-line arguments that other users could read in the process list.