Skip to main content
pxxl.toml is the versioned deployment contract for Pxxl builds and edge routing. Gateway reads this file during GitHub-backed deployments. It fetches pxxl.toml from the deployment commit SHA. If the project has a base directory, Gateway checks baseDirectory/pxxl.toml first, then falls back to the repository root pxxl.toml.
For local pxxl deploy, the CLI also reads top-level deploy metadata such as name, domainChoice, and projectId. The Gateway buildpack fields below are the fields applied during server-side builds.
New files should declare the current schema version:
Build-only files created before versioning remain compatible. Routing fields require version = 1.

Build configuration

Use the [build] table to override the detected language, framework, commands, versions, output directory, base directory, and port.
string
Overrides the detected buildpack language. Known languages include javascript, html, python, php, go, rust, java, csharp, ruby, and dart.
string
Sets the runtime value. If the value is a known buildpack language, Gateway also treats it as the language.
string
Overrides the detected framework, such as flask, laravel, nextjs, vite, or tanstack-start.
string
Overrides the package manager used by the build plan. For JavaScript projects, this also updates the buildpack tag and default package-manager commands when the detected defaults are still in use.
string
Overrides the install command. Alias: build.install. Maximum length: 400 characters.
string
Overrides the build command. Aliases: build.command, build.build. Maximum length: 400 characters.
string
Overrides the runtime start command. Alias: build.start. Maximum length: 400 characters.
string
Sets the entry file. Alias: build.entry.
string
Sets the build output directory. Alias: build.output.
string
Sets the repository subdirectory used for the primary service build.
number
Sets the app port. Gateway accepts ports from 1 through 65535.
string
Overrides the buildpack runtime version.
string
Sets the Node.js version stored on the project build settings.
string
Sets the Python version stored on the project build settings.
string
Sets the Go version stored on the project build settings.
string
Sets the Rust version stored on the project build settings.

Routing configuration

Use [routing] and ordered rule tables for static deployments. See Routing, rewrites, and redirects for matching, precedence, security, and migration details.
boolean
Serves index.html for extensionless application paths after redirects and rewrites are evaluated.
boolean
Maps an extensionless path such as /about to /about.html. When spa is also true, SPA fallback takes precedence.
object[]
Rewrites a matching path internally. The browser URL and status do not change. An external destination must be an explicit https:// URL.
object[]
Returns a client redirect. status must be 301, 302, 307, or 308.
object[]
Adds safe response headers to matching paths. Pxxl rejects secret-bearing, platform-owned, and hop-by-hop headers.

System packages

Use [packages] for OS packages needed by the buildpack image.
string[]
Installs packages in the build stage. Use this for compilers, build tools, and native dependency compilation.
string[]
Installs packages in the final runtime image. Use this only for binaries your app needs after it starts.
string[]
Also installs packages in the final runtime image. Gateway merges this with packages.runtime.
For Alpine-based buildpacks, packages render as:
For Debian-based buildpacks, packages render as:
Package names must match this pattern:
Gateway rejects more than 80 total packages across global and service-specific package lists.

Environment variables

Use [env] for non-secret build environment defaults.
Environment keys must match this pattern:
Gateway rejects more than 80 keys. Each value can be up to 8192 characters.
Do not commit secrets to pxxl.toml. Use dashboard environment variables or pxxl env push for API keys, tokens, database URLs, and private credentials.

Services

Use [services.<alias>] to override build settings for a saved microservice or monorepo service.
Service aliases must match the saved service alias on the project. During a multi-service build, Gateway applies the matching service table to that service only.
string
Overrides the base directory for that service.
string
Overrides the service language.
string
Overrides the service runtime.
string
Overrides the service framework.
string
Overrides the service package manager.
string
Overrides the service install command. Alias: install.
string
Overrides the service build command. Aliases: command, build.
string
Overrides the service start command. Alias: start.
string
Overrides the service entry file. Alias: entry.
string
Overrides the service output directory. Alias: output.
number
Overrides the service port.
string
Overrides the buildpack runtime version for that service.
string[]
Adds build-stage packages for that service.
string[]
Adds runtime-stage packages for that service.

Native dependency example

This example fixes Python packages that need GNU cp during native wheel compilation.
If the package is only needed after the app starts, use runtime packages instead:

Complete example

Validation summary

Gateway validates pxxl.toml before applying it.