Documentation Index
Fetch the complete documentation index at: https://docs.pangolin.net/llms.txt
Use this file to discover all available pages before exploring further.
Try free on Pangolin Cloud
Fastest way to get started with Pangolin using the hosted control plane. No credit card required.
- Repeatable rollouts across many sites
- Version control for infrastructure and access settings
- A source of truth that can be reviewed, templated, and automated
Some features in this documentation are marked with (EE), which means they require Enterprise Edition.
Blueprint Mental Model
A blueprint can contain up to three top-level sections:public-resources: Internet-facing HTTP, TCP, or UDP resourcesprivate-resources: Client-only access to hosts or CIDR rangessites: Site-level settings such as container label discovery
Choose A Format
Pangolin supports two blueprint formats:YAML
Use YAML when you want a readable file that can be committed to git, applied through Newt, pasted into the UI, or sent through the API.Container Labels
Use container labels when the resource definition should live inside your Compose stack. This is especially useful when a container and its Pangolin resource should be managed together.How YAML Blueprints Are Applied
UI
Paste YAML into Settings > Blueprints in the Pangolin dashboard.

Newt
Run Newt with If you only want a one-time bootstrap during provisioning, use
--blueprint-file to keep the file declarative and continuously applied:--provisioning-blueprint-file instead.API
Apply a blueprint through the Pangolin API with an API key. See the API documentation.Python example
PUT /org/{orgId}/blueprintCLI
Apply a blueprint directly from the Pangolin CLI when you want a one-off apply from a terminal, CI job, or local automation.Using your logged-in user accountFirst log in and select the organization you want the blueprint applied to:Then apply the file:The CLI uses your active account and selected organization. You can optionally set the saved blueprint name:Using an Integration API keyFor non-interactive automation, pass an Integration API key, API endpoint, and organization ID together:For Pangolin Cloud, use
https://api.pangolin.net as the endpoint. For self-hosted Pangolin, use your API host, for example https://api.your-domain.com. See Integration API for creating API keys and enabling the API on self-hosted deployments.You can also pipe a blueprint through stdin. When using stdin, provide --name because there is no filename to derive it from:--blueprint-file in Newt and container labels behave as an ongoing source of truth. Dashboard edits can be overwritten the next time the blueprint is applied. UI, API, and CLI applies are typically one-off operations.Quick Start YAML Example
This example shows all three top-level sections in one file:Public Resources
Public resources expose services through Pangolin.- Use
httpfor websites, APIs, and dashboards - Use
tcporudpfor raw public services bound to a port on the Pangolin server
HTTP Resource Example
When applying a blueprint via Newt (using
--blueprint-file or container labels), site on each target is optional. If omitted, the target is assigned to the site of the Newt that applied the blueprint.Raw TCP Or UDP Example
proxy-portis required- Target
methodmust not be set authis not supported
Targets-Only Resources
A public resource can contain onlytargets. This is useful when you want to add or manage targets for an existing resource definition without repeating all resource-level fields.
name and protocol are not required.
Authentication Example
Authentication is configured insideauth and is supported only for HTTP resources.
Maintenance Page (EE)
Themaintenance object lets you present a maintenance page for a public HTTP resource.
type values:
forced: Always show the maintenance pageautomatic: Show it only when all targets are unhealthy or the sites are offline
Private Resources
Private resources define what Pangolin clients can reach after they connect to your organization.- Use
mode: hostfor a single host or DNS name - Use
mode: cidrfor an entire network range - Use
mode: httpto expose an internal HTTP endpoint to clients via a private domain
When applying a blueprint via Newt (using
--blueprint-file or container labels), sites is optional. If omitted, the resource is assigned to the site of the Newt that applied the blueprint.Container Labels Format
Container labels are the same blueprint schema flattened into dot-separated keys:- Start every label with
pangolin. - Keep the same object path as YAML
- Use array indexes for lists, such as
[0]
Container labels are continuously applied. Treat the Compose file as the source of truth because dashboard edits can be overwritten.
Enable Container Label Discovery
To use container labels, Newt must be able to read the Docker socket:Docker Compose Example

Container Label Behavior
Automatic Discovery
If
hostname or port are not set explicitly, Pangolin can detect them from the container configuration. The hostname typically defaults to the container name, and port detection is based on the container’s expose configuration.Site Assignment
If no
site is specified on a target (public resource) or on a private resource, it is assigned to the site of the Newt that applied the blueprint — whether through container labels or --blueprint-file.Merged Configuration
Labels from multiple containers can be merged into one logical resource, which is useful when different containers contribute different targets.
Configuration Reference
Use this section when you need the full schema. The order below mirrors the blueprint structure rather than the dashboard UI.Top-Level Object
Public Resource Object (public-resources)
Private Resource Object (private-resources)
Validation Rules And Constraints
Core Rules
- A public resource can be targets-only. In that case it may contain only
targets, andnameplusprotocolare not required. - When
protocolishttp, the resource must havefull-domainand each target must includemethod. - When
protocolistcporudp, the resource must haveproxy-port, targets must not includemethod, andauthis not allowed. full-domainvalues must be unique across public resources.proxy-portvalues must be unique per protocol withinpublic-resources. TCP3000and UDP3000can coexist, but two TCP resources cannot both use3000.aliasvalues must be unique across private resources in the blueprint.
Common Validation Errors
”Admin role cannot be included in sso-roles”
Admin is reserved and cannot be used in auth.sso-roles.
”Duplicate ‘full-domain’ values found”
Every public HTTP resource must have its own uniquefull-domain.
”Duplicate ‘proxy-port’ values found in public-resources”
Two public resources with the same protocol cannot reuse the sameproxy-port.
”When protocol is ‘http’, all targets must have a ‘method’ field”
Each HTTP target must specifyhttp, https, or h2c.
”When protocol is ‘tcp’ or ‘udp’, targets must not have a ‘method’ field”
Raw targets do not use HTTP methods.”When protocol is ‘tcp’ or ‘udp’, ‘auth’ must not be provided”
Authentication settings apply only to HTTP public resources.”Resource must either be targets-only or have both ‘name’ and ‘protocol’ fields”
Provide both fields for a full public resource definition, or remove everything excepttargets.
”Duplicate ‘alias’ values found in private-resources”
Private resource aliases must be unique within the blueprint.”Destination must be a valid IP address or valid domain AND alias is required”
Inhost mode, the destination must be a valid host or IP. If you use a domain, provide alias as well.
”Destination must be a valid CIDR notation for cidr mode”
Incidr mode, destination must be a valid CIDR block such as 10.0.0.0/24.
”Admin role cannot be included in roles”
Admin is reserved and cannot be used in private resource roles.
