1
Pxxl creates a deployment task
The Deploy flow records the project and deployment, adds the job to the deployment queue, and creates a task for the build log. The queue keeps work ordered and limits concurrent builds for an account.
2
Pxxl reads the source
Git projects are cloned at the selected branch and base directory. The analysis checks the repository files, framework hints, package manager, services, and any
pxxl.toml settings. Dockerfile, Docker image, WordPress, template, and Pxxl Drop sources use their own setup path.3
Pxxl creates a build plan
The plan contains the language, framework, runtime version, install command, build command, start command, port, output directory, and deployment target. The target is either
runtime for a Web Service or static for a Static App.4
The build service runs the plan
The build service runs the source and commands in an isolated build environment, then sends status, artifact information, and logs back to the Gateway. The dashboard polls the task and keeps the build output visible in the deployment flow.
5
Pxxl publishes the result
Static and runtime deployments take different paths after the build:
- Static Apps: Pxxl uploads the release to R2 under a project and deployment prefix. The Gateway writes a static route with the bucket and prefix.
- Web Service: Pxxl creates or updates a runtime container, waits for it to pass its health check, and then writes a runtime route for the service.
How Nomad and Consul fit together
For a Web Service, the Gateway creates a Nomad service job with the image, port, environment, replicas, and health check. Nomad schedules the job on a runtime host. The job registers its HTTP service with Consul and uses Consul health checks to report whether the service is ready. Runtime environment values are stored through the Pxxl secret path and delivered to the Nomad task through its Vault template. The runtime task uses a restricted container configuration and the configured gVisor runtime where the platform is enabled. When the Consul service is healthy, Pxxl writes a route under the host name. The route identifies the project, deployment, service, and service alias. The Pxxl Caddy controller watches the route data, resolves healthy Consul upstreams, and applies the public edge route.The Static Apps path
Static Apps do not receive a Nomad runtime job. For a plain Git static source, Pxxl clones the selected commit, checks the base directory for an entry file, and uploads the files to an immutable R2 prefix. For a built static stack, the build service marks the artifact as a static release and the Gateway publishes that artifact to the same release storage. The Gateway writes a Consul route with typestatic, the release bucket, and the release prefix. Caddy uses that data to serve the files through the Pxxl static gateway. The previous release can be removed after the new route is active.
What you see in the dashboard
The deployment log follows the same stages used by the control plane:- source
- install and build
- artifact or runtime handoff
- health and route
- cleanup and completion
