Help us shape the future of Go! Take the 2026 Go Developer Survey

levelrail

module
v0.8.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 27, 2026 License: Apache-2.0

README

Levelrail logo

Levelrail

The lightweight, self-hosted alternative to Vercel, Netlify, Heroku, Railway, Coolify and Dokku.
Deploy on git push, with logs, metrics, HTTPS and one-click rollback, on your own servers. HTTPS is self-signed until you enable Let's Encrypt.
One Go binary · Docker runtime · agents instead of SSH · observability built in · no Kubernetes

Latest release GitHub stars CI Discord
Multi-arch container image on GHCR Go version MCP server Documentation Last commit PRs welcome

Website · Docs · Install · Production ready · Compare · Guides · Roadmap · Changelog · Discussions · Discord

Levelrail is an open source (Apache 2.0) self-hosted PaaS: a Vercel and Heroku alternative that runs on any Linux server you own, from a small VPS to a rack (the one measured host is a 2 vCPU, 8 GB box). It turns plain servers into a private cloud with Git deploys (forge webhooks), HTTPS (self-signed by default, Let's Encrypt when enabled), databases with verified backups, metrics, logs and alerts, without Kubernetes and without the monitoring stack you would otherwise bolt on.

Quickstart

You need a Linux server (amd64 or arm64) with systemd and root. The installer adds Docker if it is missing.

1. Install the server

curl -fsSL https://levelrail.com/install.sh | sudo sh

The last lines of output include the dashboard address and a one-time setup link:

Levelrail vX.Y.Z installed and running.

Open the dashboard:
  http://203.0.113.10:8080/login?setup=<token>

2. Create the admin account

Open the setup link and choose a password. The first sign-in opens one screen that turns on a free certificate for <dashed-ip>.sslip.io with one click (no DNS needed) and deploys your first app.

3. Deploy an app

On the server, the installer already put levelrail-cli in /usr/local/bin. Sign in once, then import a repository (levelrail-cli apps create --interactive asks for everything step by step):

levelrail-cli login --api-url http://<server-ip>:8080 --code ABCD-EF23
levelrail-cli import https://github.com/your-org/your-app --deploy

Prefer containers, a pinned version or a source build? See Installing. Want it as light as Dokku, or everything on? install.sh --profile minimal|standard|suite, see Server profiles. Coming from another platform? See Migrate to Levelrail: Coolify, Dokploy, CapRover, Dokku and compose files each get a dry run first, and the old server keeps serving.

After setup, the dashboard home shows a Connect your CLI card. Press Show my command, paste the line into your terminal, and the CLI signs in with a single-use code that expires in minutes (no password, no approval step):

logged in as "you@example.com"
token tk_9fQ2x saved to ~/.config/levelrail-cli/credentials under profile "default", expires 2027-01-18

Signing in with your password from a new device needs approval: the CLI prints the dashboard page to approve it on and the number to type. login --device also still works.

Without --deploy, import only prints the deployment plan. To see the app's address, run levelrail-cli open your-app. It prints the custom domain first, then the automatic URL.

Or let your coding agent do it

Install the skill once, then ask your agent in plain words. It deploys, waits for the rollout to actually converge, reads the failure if there is one, and rolls back safely:

npx skills add https://github.com/glincker/levelrail --skill levelrail

Deploy this repo to my Levelrail and tell me when it is live.

The skill is also listed at skills.sh. Details: Agents.

If something fails

Step Error you see Fix
Install control plane did not become healthy within 60s systemctl status levelrail and journalctl -u levelrail -n 100 --no-pager. A port already in use is a common cause.
Install could not list releases from GitHub. Set LEVELRAIL_VERSION=vX.Y.Z to pin one. The server cannot reach GitHub. Check outbound HTTPS, or pin a release.
Install checksum mismatch for ... Do not continue. Run the installer again. Do not set LEVELRAIL_SKIP_CHECKSUM=1 to get past it.
Login start device login: ... connection refused The CLI points at the wrong address. Run export APP_API_URL=http://127.0.0.1:<dashboard port> and try again.
Import plan import: ... connection refused The control plane is not running. Start it with systemctl start levelrail.

More fixes: Troubleshooting. Full install options (Docker image, pinned version, source build): Installing. Deploy from a local project with levelrail-cli up: One command quickstart. Server profiles (install.sh --profile minimal|standard|suite): Server profiles. Migrating from another platform? levelrail-cli import platform coolify|dokploy|caprover --dry-run shows what would be created first, and the old server keeps serving. Full guide: Migrate to Levelrail. Publishing an open-source project? Add a one-click button to its README: Deploy to Levelrail button.


Install, then deploy

Gated deploy, one-step rollback

Why people pick Levelrail

  • Lightweight. About 200 MB of RAM and roughly 1.5% of one CPU idle, measured on a 2 vCPU, 8 GB Linux test box with no apps under load and the default feature set (one run, 2026-10-19). Numbers and method.
  • Agents, not SSH. Each node runs a small agent that dials out over mTLS and talks to Docker's Engine API directly. No inbound ports, no shelling out to the docker CLI, no polling loops.
  • Observability included. Per-node metrics at 15 second resolution, searchable logs, deploy markers, traces, SLO burn, alert inbox and an idle-footprint health page. No Grafana stack to install.
  • Deploys that protect you. Readiness-gated rollouts, pinned images for rollback, canary releases that roll back on errors, deploy diffs, approvals and freezes.
  • Secure by default. Hash-chained audit log you can verify, SSRF-guarded outbound calls, envelope-encrypted secrets with key rotation, scoped tokens, passkeys and TOTP 2FA, OAuth and OIDC sign-in, IAM policies, signed releases. SAML single sign-on and SCIM provisioning are available as a beta feature, off by default.
  • Built for AI agents. An MCP server with over 240 tools in on-demand toolsets (small default list, about 2.4k tokens; see tool surface), a scoped-token permission model and an agent skill.

Production ready, with receipts

Single-server deployments are production ready today. Multi-node and a handful of newer features are labelled beta, and every label links to its evidence.

Claim Evidence
Every feature is labelled stable or beta Feature status: the tests, live e2e runs and docs behind each label
Survives failures Resilience: disk full, agent link loss, database damage with guided restore, safe-mode boot, reconcile storm protection
Safe upgrades and rollback Tested upgrade matrix, downgrade refusal, one-click rollback and clean shutdown
Measured, not promised Benchmarks: idle footprint, ingress throughput, limits, with the method next to every number
Verified backups Every backup is re-downloaded and checksummed, with scheduled restore drills
Tamper-evident security Verifiable audit chain, security policy, signed releases and SBOM scanning

Levelrail vs Coolify, Dokploy, CapRover and Dokku

Most self-hosted platforms in this category manage servers by SSHing in and shelling out to the docker CLI, then parsing text, which tends to force polling loops. Levelrail uses a reverse-dialed agent and a level-triggered reconciler instead.

Levelrail Coolify Dokploy CapRover Dokku
Node control Reverse-dialed agent SSH + CLI SSH + Engine API Swarm API Local bash
Orchestration Level-triggered reconciler Compose Swarm Swarm Bash scheduler
Built-in metrics and logs Yes Opt-in add-on Separate binary No No
Rollback Pinned images, readiness-gated Health check off by default Swarm rollback Manual Default scheduler: none
Backup verification Automatic, all 8 engines Non-empty check None None No backups
SSO and provisioning OAuth (20 providers) and generic OIDC; SAML and SCIM (beta, off by default) See their docs See their docs See their docs See their docs
Audit log Hash-chained, verifiable, CSV export, forwarding to syslog, webhook or bucket See their docs See their docs See their docs See their docs
IAM Allow and Deny policies per app or database, scoped tokens See their docs See their docs See their docs See their docs

This is positioning, not a ranking, and every project here is worth using. Where Levelrail trails: it is the youngest project here, with fewer users and less production mileage, and its SAML single sign-on and SCIM provisioning are beta (details). Its template catalog (about 360 entries) is in the same range as Coolify's, but only a sample is deployed end to end (ADR 015). The full, sourced comparison is in Comparison.

What you get

  • Deploys: Push to your git host (GitHub, GitLab, Bitbucket, Gitea webhooks), deploys start from a forge webhook (a native git push remote is beta and off by default), preview environments per pull request (stable on GitHub, beta on GitLab and Bitbucket), framework presets (Next.js, Go, React, Spring Boot and more), Dockerfile, Compose or image deploys, canary and blue-green rollouts. Readiness-gated cutover is live-tested with zero failed requests on a single node; multi-node is beta. Deploying apps
  • Domains and TLS: Embedded Caddy ingress. The default certificate is internal (self-signed). Public Let's Encrypt is one toggle and was verified in one live run; renewal and DNS-01 wildcards are unverified. Custom certificates can be uploaded. Per-app abuse protection. Domains
  • Databases: Postgres, MySQL, MariaDB, MongoDB, Redis, KeyDB, Dragonfly and ClickHouse with scheduled backups, Postgres point-in-time recovery, restore, and password rotation. Databases
  • One search for everything: Cmd+K across apps, databases, nodes, templates and actions, filtered by what you may do. Search
  • Servers: Add nodes with a one-time token, WireGuard mesh, zones and failure-domain spreading, placement what-if. Multi-node
  • Templates: about 360 one-click services, with a smoke test that brings up the top 50 (48 pass today, status). Catalog
  • Identity and access: Password, passkeys, TOTP, OAuth with 20 providers plus generic OIDC, IAM policies, teams, a hash-chained audit log with CSV export. SAML single sign-on and SCIM provisioning are beta and off by default. Identity and access, SAML and SCIM
  • Plugins: A signed plugin marketplace with one-click install, dashboard panels and first-party alert channels. Plugins
  • Automation: One HTTP API behind the dashboard, a CLI and an MCP server. AI never sits in the reconciliation path. CLI, AI control
  • Pipelines, previews, cost budgets, sleep when idle, status pages and more. See Product tour.

The control plane at a glanceLevelrail new app page with the framework preset picker
Pick a framework preset and the build settings fill inLevelrail service template catalog
Install a known service from the template catalogLevelrail live deploy log
Live deploysLevelrail load balancer upstreams and health checks
Load balance across replicas with health checksLevelrail apps list with status and last deploy
Every app, its health, and its last deploy
More screenshots (41 screens, shown in your GitHub theme, dark or light)

Per-app metrics, with deploy markers on every chart.
Search and tail container logs without installing anything.
Deploy history, with promote and logs for each release.
Deployments across the whole control plane.
Nodes the control plane places apps and databases on.Levelrail control plane health page
Health and footprint
A public status page for your apps.
A pipeline run with its stages, jobs, and live log.
Report deploys back to GitHub Actions.
Build speed: how long builds take and what they cost.
Build cache: rebuilds reuse unchanged layers.
Deploy strategy, health checks, and rollout behavior.
Where an app's code comes from.
Environment variables, with secrets masked.
Resource limits per app.
A guided checklist from install to your first deploy.
First-run setup, step by step.
One database, its connection details, and its state.
Connection details and password rotation for a database.Levelrail database backups
Verified backups
Backups with a history you can restore from.
Connect an S3-compatible bucket for backups and archives.
Archive logs to a bucket on a schedule.
Domains, certificates, and where each one routes.
Private networks decide which apps can reach each other.
Add a server from a cloud provider.
Each app's overview in one place.Levelrail security center
Security center
Master and per-app encryption key status and rotation.
Add, test and remove passkeys, synced or device-bound.
Sign in the CLI from your own machine, with tokens you can revoke.
Automatic cleanup of old images, containers, and logs.
Opt in to beta features one at a time.Levelrail plugin marketplace
Plugin marketplace
Manage the plugins you have installed and their permissions.
Spot misconfigured settings and fix them with one click.
Instance name, dashboard URL and defaults.
Your account, your password, your sessions.
See every sign-in and change made to your account.
One search across apps, databases, nodes and actions.Levelrail command palette search
One search for everything

All captured from a real running control plane. Walk through them in the Product tour.

Guides

Step by step walkthroughs, each tested against a real install:

Guide What you learn
Deploy a Next.js app with Postgres Repo to HTTPS in about ten minutes
Deploy a Django app with Postgres Plus the four errors everyone hits
Push to deploy with GitHub Webhooks, previews and the delivery log
How deploys stay safe Health gates, blue-green cutover, rollback
Logs, traces and errors without a stack Observability and Grafana
Scale to zero on a small VPS Run many projects on one box
Levelrail vs Coolify, Dokploy, CapRover, Dokku and Kamal Where each one fits

Add a Deploy button to your project

Maintain an open-source app? Let people run it on their own server in a few clicks.

Deploy to Levelrail

Copy-paste snippets and the four badge styles: Deploy button and the Brand kit.

For AI agents and crawlers

Community and support

Star the repo

If Levelrail saves you a weekend, a star on GitHub helps other self-hosters find it. Bug reports and honest feedback help even more.

Star History Chart

Levelrail contributors

License

Apache 2.0, see LICENSE.

Built by

Levelrail is built by Gagan Deep Singh, founder of GLINR STUDIOS and theSVG. Sister projects: theSVG (brand icon library), theauth (open-source auth for AI agents and humans) and AskVerdict AI. Say hello at thegdsks.com.

GLINR STUDIOS

Powered by GLINR STUDIOS · icon from theSVG

Directories

Path Synopsis
cmd
levelrail command
Command levelrail is the control plane binary.
Command levelrail is the control plane binary.
levelrail-agent command
Thin main: every behavior (enrollment, Session loop, Docker dispatch) lives in internal/agent.
Thin main: every behavior (enrollment, Session loop, Docker dispatch) lives in internal/agent.
levelrail-cli command
Command levelrail-cli is a scriptable HTTP client for the control plane's /api/v1 API.
Command levelrail-cli is a scriptable HTTP client for the control plane's /api/v1 API.
levelrail-mcp command
Command levelrail-mcp is an MCP server that lets an AI agent manage a control plane through its /api/v1 REST API.
Command levelrail-mcp is an MCP server that lets an AI agent manage a control plane through its /api/v1 REST API.
levelrail-migrate command
Read-only migration agent for the server being migrated away from.
Read-only migration agent for the server being migrated away from.
internal
abuse
Package abuse is the per-app ingress abuse defense: a policy, a sharded per-client token bucket, deny lists and a replay of past traffic.
Package abuse is the per-app ingress abuse defense: a policy, a sharded per-client token bucket, deny lists and a replay of past traffic.
accesspolicy
Package accesspolicy merges per-team session rules into one effective set and answers the questions the API middleware asks on every request.
Package accesspolicy merges per-team session rules into one effective set and answers the questions the API middleware asks on every request.
agent
Package agent is the transport boundary between reconcile controllers and the node they run on.
Package agent is the transport boundary between reconcile controllers and the node they run on.
agent/migrationmode
Package migrationmode is the read-only agent that runs on a source host being migrated away from.
Package migrationmode is the read-only agent that runs on a source host being migrated away from.
agent/pinned
Package pinned holds the small trust primitives shared by every reverse-dialed client: CA fingerprint pinning and key plus CSR generation.
Package pinned holds the small trust primitives shared by every reverse-dialed client: CA fingerprint pinning and key plus CSR generation.
agentinit
Package agentinit renders the files "init" writes into a project: app.yaml, AGENTS.md and .mcp.json.
Package agentinit renders the files "init" writes into a project: app.yaml, AGENTS.md and .mcp.json.
ai
Package ai implements the BYOK assistant chat: a provider-agnostic turn engine.
Package ai implements the BYOK assistant chat: a provider-agnostic turn engine.
alerting
Package alerting implements threshold rules over internal/telemetry's metrics and logs, and crashloop detection as a built-in rule kind sharing the same evaluate/notify path rather than a separate mechanism.
Package alerting implements threshold rules over internal/telemetry's metrics and logs, and crashloop detection as a built-in rule kind sharing the same evaluate/notify path rather than a separate mechanism.
api
Package api implements the HTTP API the web frontend (1.10) and, later, the MCP layer both build on.
Package api implements the HTTP API the web frontend (1.10) and, later, the MCP layer both build on.
apiclient
Package apiclient is the one HTTP client implementation for the control plane's versioned API (internal/api, mounted at /api/v1).
Package apiclient is the one HTTP client implementation for the control plane's versioned API (internal/api, mounted at /api/v1).
appimport
Package appimport turns a source platform's application inventory into a reviewed, staged import: per-app verdicts, a hostname mapping with a visible diff, preflight checks and a secret-free receipt.
Package appimport turns a source platform's application inventory into a reviewed, staged import: per-app verdicts, a hostname mapping with a visible diff, preflight checks and a secret-free receipt.
appsleep
Package appsleep stops opted-in apps that have had no requests for a while and wakes them on the next request, so idle apps cost no memory or CPU.
Package appsleep stops opted-in apps that have had no requests for a while and wakes them on the next request, so idle apps cost no memory or CPU.
appwizard
Package appwizard analyses a git repository through a provider file-tree API and returns pre-filled, evidence-backed suggestions for creating an app.
Package appwizard analyses a git repository through a provider file-tree API and returns pre-filled, evidence-backed suggestions for creating an app.
archive
Package archive moves cold rows out of the live database into zstd compressed NDJSON bundles in a local directory, and can list, browse, restore and verify them.
Package archive moves cold rows out of the live database into zstd compressed NDJSON bundles in a local directory, and can list, browse, restore and verify them.
attention
Package attention builds the list of things an operator should look at right now, shared by the CLI and the MCP server.
Package attention builds the list of things an operator should look at right now, shared by the CLI and the MCP server.
authengine
Package authengine hosts the theauth-go library behind a flag.
Package authengine hosts the theauth-go library behind a flag.
autoscale
Package autoscale is the deterministic replica autoscaler: a level-triggered controller that turns observed load into a desired replica count.
Package autoscale is the deterministic replica autoscaler: a level-triggered controller that turns observed load into a desired replica count.
backup
Package backup drives a database backup end to end: dump a managed database container's data, stream it straight to an S3-compatible bucket, and record the attempt in store.BackupHistory.
Package backup drives a database backup end to end: dump a managed database container's data, stream it straight to an S3-compatible bucket, and record the attempt in store.BackupHistory.
bench
Package bench is an open-loop HTTP load driver with failure-window analysis.
Package bench is an open-loop HTTP load driver with failure-window analysis.
benchreport
Package benchreport turns benchmark runs into a results file that records the host, build and method next to the numbers.
Package benchreport turns benchmark runs into a results file that records the host, build and method next to the numbers.
bindaddr
Package bindaddr resolves the small bind-address vocabulary app services and managed databases use to choose which network interface a published port binds to.
Package bindaddr resolves the small bind-address vocabulary app services and managed databases use to choose which network interface a published port binds to.
bindmount
Package bindmount validates a service's bind-mount host path, shared by internal/compose and internal/spec: internal/compose imports internal/spec (a compose service expands into a spec.Service), so neither of those two packages can hold this logic without the other importing it back and cycling.
Package bindmount validates a service's bind-mount host path, shared by internal/compose and internal/spec: internal/compose imports internal/spec (a compose service expands into a spec.Service), so neither of those two packages can hold this logic without the other importing it back and cycling.
bitbucketapp
Package bitbucketapp implements OAuth2 and the small slice of Bitbucket Cloud's REST API this control plane needs once connected.
Package bitbucketapp implements OAuth2 and the small slice of Bitbucket Cloud's REST API this control plane needs once connected.
bitbucketserver
Package bitbucketserver is a small client for Bitbucket Server and Data Center (REST /rest/api/1.0), authenticated with a personal access token.
Package bitbucketserver is a small client for Bitbucket Server and Data Center (REST /rest/api/1.0), authenticated with a personal access token.
branchdeploy
Package branchdeploy holds the pure rules for branch deploys: which branches qualify and what stable name a branch gets.
Package branchdeploy holds the pure rules for branch deploys: which branches qualify and what stable name a branch gets.
brand
Package brand provides the branding indirection layer this project requires: no product name is ever hardcoded in source.
Package brand provides the branding indirection layer this project requires: no product name is ever hardcoded in source.
build
Package build drives container image builds through BuildKit's Go client (github.com/moby/buildkit/client), never by shelling out to `docker build` or the `docker` CLI, matching the same "no CLI shelling" rule the node communication layer follows.
Package build drives container image builds through BuildKit's Go client (github.com/moby/buildkit/client), never by shelling out to `docker build` or the `docker` CLI, matching the same "no CLI shelling" rule the node communication layer follows.
build/buildkitd
Package buildkitd supervises the managed rootless buildkitd container that serves source builds on engines without an embedded BuildKit (ADR 046).
Package buildkitd supervises the managed rootless buildkitd container that serves source builds on engines without an embedded BuildKit (ADR 046).
canary
Package canary decides when a staged canary release advances, promotes or rolls back, and runs the level-triggered reconciler that applies it.
Package canary decides when a staged canary release advances, promotes or rolls back, and runs the level-triggered reconciler that applies it.
canarypolicy
Package canarypolicy holds the stage schedule, thresholds and env defaults of staged canary releases.
Package canarypolicy holds the stage schedule, thresholds and env defaults of staged canary releases.
catalog
Package catalog holds Levelrail's own curated set of one-click service templates (ADR 015).
Package catalog holds Levelrail's own curated set of one-click service templates (ADR 015).
certflow
Package certflow decides whether a domain is ready for a public certificate, tells operators the truth about the certificate it has, and retries stuck renewals with backoff.
Package certflow decides whether a domain is ready for a public certificate, tells operators the truth about the certificate it has, and retries stuck renewals with backoff.
changelog
Package changelog parses the repo's release-please-maintained CHANGELOG.md into the entries GET /api/v1/changelog and the dashboard's "What's new" panel serve, so release notes keep exactly one source of truth instead of a second, hand-curated copy.
Package changelog parses the repo's release-please-maintained CHANGELOG.md into the entries GET /api/v1/changelog and the dashboard's "What's new" panel serve, so release notes keep exactly one source of truth instead of a second, hand-curated copy.
changes
Package changes answers "what changed on this app recently" by merging the app event log, deploy attempts and the audit log into one ordered list.
Package changes answers "what changed on this app recently" by merging the app event log, deploy attempts and the audit log into one ordered list.
chaos
Package chaos describes the failure scenarios the platform is measured against and the result record they produce.
Package chaos describes the failure scenarios the platform is measured against and the result record they produce.
chaos/live
Package live runs the chaos scenarios against real local Docker containers that carry a unique name prefix and are always removed afterwards.
Package live runs the chaos scenarios against real local Docker containers that carry a unique name prefix and are always removed afterwards.
cleanup
Package cleanup is the retention center: a registry of cleanup targets, a scheduler that runs them under per-target modes, and a run history.
Package cleanup is the retention center: a registry of cleanup targets, a scheduler that runs them under per-target modes, and a run history.
cliconsole
Package cliconsole turns one typed console line into a vetted argv for the platform CLI and runs it as a child process.
Package cliconsole turns one typed console line into a vetted argv for the platform CLI and runs it as a child process.
clitree
Package clitree is the CLI's command tree, shared by its shell completions and the control plane's web CLI console allowlist.
Package clitree is the CLI's command tree, shared by its shell completions and the control plane's web CLI console allowlist.
cliupdate
Package cliupdate lets the CLI find a newer release and replace its own executable with it, reusing selfupgrade's download, checksum and signature code.
Package cliupdate lets the CLI find a newer release and replace its own executable with it, reusing selfupgrade's download, checksum and signature code.
cloudmeta
Package cloudmeta reads the provider, region and zone a machine runs in from the link-local metadata service of the cloud it sits on (AWS IMDSv2, Google Cloud, Azure, Hetzner, DigitalOcean).
Package cloudmeta reads the provider, region and zone a machine runs in from the link-local metadata service of the cloud it sits on (AWS IMDSv2, Google Cloud, Azure, Hetzner, DigitalOcean).
compliance
Package compliance builds access reviews and signed evidence packs from data the platform already records.
Package compliance builds access reviews and signed evidence packs from data the platform already records.
compose
Package compose parses a Docker Compose file into Levelrail's own desired-state model, in two shapes depending on the caller.
Package compose parses a Docker Compose file into Levelrail's own desired-state model, in two shapes depending on the caller.
configtranslate
Package configtranslate reads hosted-platform config files (Heroku Procfile and app.json, Vercel vercel.json) and proposes a Levelrail app spec fragment plus findings for what has no equivalent.
Package configtranslate reads hosted-platform config files (Heroku Procfile and app.json, Vercel vercel.json) and proposes a Levelrail app spec fragment plus findings for what has no equivalent.
coolifyexit
Package coolifyexit turns a read of a Coolify instance and the import plan built from it into an exit report: what each resource becomes, what still needs a person, and an ordered cutover checklist.
Package coolifyexit turns a read of a Coolify instance and the import plan built from it into an exit report: what each resource becomes, what still needs a person, and an ordered cutover checklist.
coolifyexit/exportfixture
Package exportfixture serves a read-only imitation of a Coolify API export for tests.
Package exportfixture serves a read-only imitation of a Coolify API export for tests.
costbudget
Package costbudget holds named monthly budgets scoped to a project, tag or app, and the level-triggered state machine that decides which alert thresholds fired and whether the 100 percent action is in force.
Package costbudget holds named monthly budgets scoped to a project, tag or app, and the level-triggered state machine that decides which alert thresholds fired and whether the 100 percent action is in force.
costestimate
Package costestimate is a deterministic, pure-Go engine that turns an app's CPU/memory allocation into an ESTIMATED monthly cost under a few generic reference pricing profiles (a plain VM, a managed VM, a metered container PaaS).
Package costestimate is a deterministic, pure-Go engine that turns an app's CPU/memory allocation into an ESTIMATED monthly cost under a few generic reference pricing profiles (a plain VM, a managed VM, a metered container PaaS).
cpbackup
Package cpbackup manages control plane self-backups: verified SQLite snapshots kept in a directory under the data dir.
Package cpbackup manages control plane self-backups: verified SQLite snapshots kept in a directory under the data dir.
cphealth
Package cphealth turns raw control plane measurements into saturation findings with typed fixes.
Package cphealth turns raw control plane measurements into saturation findings with typed fixes.
cutover
Package cutover plans and runs a guided, reversible move of one staged import app: readiness rules, a persisted state machine, DNS undo data.
Package cutover plans and runs a guided, reversible move of one staged import app: readiness rules, a persisted state machine, DNS undo data.
dashboards
Package dashboards defines the portable custom dashboard document, its JSON Schema and the starter templates.
Package dashboards defines the portable custom dashboard document, its JSON Schema and the starter templates.
dataexport
Package dataexport sends logs, audit events and metrics to destinations an operator already runs.
Package dataexport sends logs, audit events and metrics to destinations an operator already runs.
datamigrate
Package datamigrate copies live data from a source database into a managed database here, and checks a cutover is safe.
Package datamigrate copies live data from a source database into a managed database here, and checks a cutover is safe.
dbaccess
Package dbaccess manages database users, temporary credentials and network scope.
Package dbaccess manages database users, temporary credentials and network scope.
dbcatalogbuild
Package dbcatalogbuild builds, validates and signs the database version catalog (databases.v1.json) from upstream registries and endoflife.date.
Package dbcatalogbuild builds, validates and signs the database version catalog (databases.v1.json) from upstream registries and endoflife.date.
dbprovision
Package dbprovision records and summarizes the steps of creating a database, so the dashboard, CLI and API all show the same truth.
Package dbprovision records and summarizes the steps of creating a database, so the dashboard, CLI and API all show the same truth.
dbrotate
Package dbrotate rotates a managed database's owner password in the engine itself, then switches the stored credential every app reads.
Package dbrotate rotates a managed database's owner password in the engine itself, then switches the stored credential every app reads.
dbupgrade
Package dbupgrade advises on and automates minor and patch upgrades of managed databases: a curated version catalog, per database policies with a maintenance window, and a resumable runner that backs up, upgrades, verifies and reverts.
Package dbupgrade advises on and automates minor and patch upgrades of managed databases: a curated version catalog, per database policies with a maintenance window, and a resumable runner that backs up, upgrades, verifies and reverts.
dbviewer
Package dbviewer runs read-only (and, when explicitly allowed, write) SQL against a managed database by exec'ing the engine's own client inside its container.
Package dbviewer runs read-only (and, when explicitly allowed, write) SQL against a managed database by exec'ing the engine's own client inside its container.
demo
Package demo builds and guards the read-only public demo instance: a seeded control plane with no Docker, ingress or agent listeners.
Package demo builds and guards the read-only public demo instance: a seeded control plane with no Docker, ingress or agent listeners.
deploy
Package deploy is the build integration: it connects internal/spec's build declaration to internal/build's BuildKit client, and a successful build's output to internal/store's desired state, closing the loop the application controller (internal/reconcile/ application) reads from on every reconcile.
Package deploy is the build integration: it connects internal/spec's build declaration to internal/build's BuildKit client, and a successful build's output to internal/store's desired state, closing the loop the application controller (internal/reconcile/ application) reads from on every reconcile.
deploy/secretscan
Package secretscan finds credentials committed to a build context or stored as plain environment values, and applies a per-app deploy policy.
Package secretscan finds credentials committed to a build context or stored as plain environment values, and applies a per-app deploy policy.
deploycontext
Package deploycontext holds the pure rules for deploy contexts: which context a deploy runs in and how env and build settings resolve across the branch override, context and app default layers.
Package deploycontext holds the pure rules for deploy contexts: which context a deploy runs in and how env and build settings resolve across the branch override, context and app default layers.
deploylink
Package deploylink validates and builds "Deploy to Levelrail" links for git repositories and templates.
Package deploylink validates and builds "Deploy to Levelrail" links for git repositories and templates.
deploylog
Package deploylog is the glue between internal/build.ProgressEvent (the progress callback all three real deploy-attempt trigger paths already thread through internal/deploy.Pipeline.Deploy) and two real consumers: a persisted, replayable row in telemetry.db (internal/telemetry's deploy_logs table) and any currently-connected SSE viewer watching that same attempt live.
Package deploylog is the glue between internal/build.ProgressEvent (the progress callback all three real deploy-attempt trigger paths already thread through internal/deploy.Pipeline.Deploy) and two real consumers: a persisted, replayable row in telemetry.db (internal/telemetry's deploy_logs table) and any currently-connected SSE viewer watching that same attempt live.
deploysafety
Package deploysafety decides whether a new release may take traffic and whether a live one must be rolled back, and holds the shared reason strings.
Package deploysafety decides whether a new release may take traffic and whether a live one must be rolled back, and holds the shared reason strings.
deploytimeline
Package deploytimeline folds the sources that describe one deploy (the attempt row, pipeline trace, gate events, probes, hook runs, build log and request metrics) into one ordered list of events, the same shape for a live stream and for a frozen replay.
Package deploytimeline folds the sources that describe one deploy (the attempt row, pipeline trace, gate events, probes, hook runs, build log and request metrics) into one ordered list of events, the same shape for a live stream and for a frozen replay.
deploytrace
Package deploytrace records the step-by-step pipeline of a deploy, build or not, as rows the step stream, the log stream and the CLI all read.
Package deploytrace records the step-by-step pipeline of a deploy, build or not, as rows the step stream, the log stream and the CLI all read.
deployurls
Package deployurls keeps an immutable hostname for each recent successful deploy: a retained service that runs that attempt's pinned image and sleeps when idle, so a past deployment can be opened without rolling back.
Package deployurls keeps an immutable hostname for each recent successful deploy: a retained service that runs that attempt's pinned image and sleeps when idle, so a past deployment can be opened without rolling back.
deploywatch
Package deploywatch pins released images as rollback targets and watches each new release after cutover, rolling it back when it misbehaves.
Package deploywatch pins released images as rollback targets and watches each new release after cutover, rolling it back when it misbehaves.
diagnose
Package diagnose is a deterministic, pure-Go pattern matcher over diagnostic signals the platform already collects: deploy attempt status/error, reconcile condition reason strings, crashloop alert state, and recent log lines.
Package diagnose is a deterministic, pure-Go pattern matcher over diagnostic signals the platform already collects: deploy attempt status/error, reconcile condition reason strings, crashloop alert state, and recent log lines.
diskguard
Package diskguard watches free space on the volumes the platform writes to, refuses risky operations before they fill a disk and keeps a reserve file so SQLite can still commit when space runs out.
Package diskguard watches free space on the volumes the platform writes to, refuses risky operations before they fill a disk and keeps a reserve file so SQLite can still commit when space runs out.
dnsrecords
Package dnsrecords builds a provider-agnostic DNS record manager from whichever ACME DNS-01 provider a control plane already has credentials for (Cloudflare or Route53), reusing libdns's own interfaces instead of inventing a second one: github.com/libdns/cloudflare and github.com/libdns/route53, both already a dependency via internal/ingress's Caddy DNS-01 wiring, implement them already.
Package dnsrecords builds a provider-agnostic DNS record manager from whichever ACME DNS-01 provider a control plane already has credentials for (Cloudflare or Route53), reusing libdns's own interfaces instead of inventing a second one: github.com/libdns/cloudflare and github.com/libdns/route53, both already a dependency via internal/ingress's Caddy DNS-01 wiring, implement them already.
dnszones
Package dnszones manages whole DNS zones at Cloudflare and Route53: zones, their assigned name servers, record sets with routing policies, delegation checks, propagation checks, zone file import and export, and templates.
Package dnszones manages whole DNS zones at Cloudflare and Route53: zones, their assigned name servers, record sets with routing policies, delegation checks, propagation checks, zone file import and export, and templates.
dnszones/gcdtest
Package gcdtest is an in-memory fake of the Cloud DNS v1 REST API for tests.
Package gcdtest is an in-memory fake of the Cloud DNS v1 REST API for tests.
docker
Package docker wraps the Docker Engine API.
Package docker wraps the Docker Engine API.
dockerguard
Package dockerguard is an in-process Unix socket proxy in front of the Docker Engine API.
Package dockerguard is an in-process Unix socket proxy in front of the Docker Engine API.
dockerlint
Package dockerlint checks a Dockerfile for the handful of hints that most often cause production trouble and offers a safe patch where one exists.
Package dockerlint checks a Dockerfile for the handful of hints that most often cause production trouble and offers a safe patch where one exists.
dockerssh
Package dockerssh reads a remote Docker host over an SSH login without running anything on it: SSH is only a transport to the Docker socket, and a client-side allowlist lets nothing but read-only Engine API GETs out.
Package dockerssh reads a remote Docker host over an SSH login without running anything on it: SSH is only a transport to the Docker socket, and a client-side allowlist lets nothing but read-only Engine API GETs out.
dockertest
Package dockertest holds test helpers shared by every package whose _live_test.go files need a real Docker daemon (or other real, network-dependent infra) to run.
Package dockertest holds test helpers shared by every package whose _live_test.go files need a real Docker daemon (or other real, network-dependent infra) to run.
domaindoctor
Package domaindoctor runs an ordered set of read-only checks against one domain (DNS, CAA, ports, TLS, HTTP, redirects, HSTS, platform state) and turns each result into a fix an operator can act on.
Package domaindoctor runs an ordered set of read-only checks against one domain (DNS, CAA, ports, TLS, HTTP, redirects, HSTS, platform state) and turns each result into a fix an operator can act on.
edgefw
Package edgefw is the ingress firewall: ordered rules, automatic bans, bot modes, a proof-of-work challenge and bounded in-memory visibility.
Package edgefw is the ingress firewall: ordered rules, automatic bans, bot modes, a proof-of-work challenge and bounded in-memory visibility.
email
Package email is the platform's one email-sending capability: a narrow Sender interface plus a registry of providers (SMTP, SES, Resend, Postmark, SendGrid, Mailgun), shared by internal/alerting and internal/api so neither imports the other.
Package email is the platform's one email-sending capability: a narrow Sender interface plus a registry of providers (SMTP, SES, Resend, Postmark, SendGrid, Mailgun), shared by internal/alerting and internal/api so neither imports the other.
envredact
Package envredact decides which environment values are sensitive and masks them for every read surface.
Package envredact decides which environment values are sensitive and masks them for every read surface.
erroringest
Package erroringest decodes Sentry SDK payloads into grouped error events.
Package erroringest decodes Sentry SDK payloads into grouped error events.
eventhook
Package eventhook delivers platform events to operator-configured HTTPS endpoints: signed, queued, retried with backoff, dead-lettered after the last attempt, and recorded in a delivery log that supports replay.
Package eventhook delivers platform events to operator-configured HTTPS endpoints: signed, queued, retried with backoff, dead-lettered after the last attempt, and recorded in a delivery log that supports replay.
experimental
Package experimental is the single platform gate for features hidden at launch.
Package experimental is the single platform gate for features hidden at launch.
exposure
Package exposure answers "which published container ports can the internet reach" and manages comment-tagged DOCKER-USER rules that restrict them.
Package exposure answers "which published container ports can the internet reach" and manages comment-tagged DOCKER-USER rules that restrict them.
extdb
Package extdb connects to databases this platform does not run: validating their addresses, probing them read-only, and opening them for the viewer through short-lived helper containers.
Package extdb connects to databases this platform does not run: validating their addresses, probing them read-only, and opening them for the viewer through short-lived helper containers.
failure
Package failure classifies a failed, held or unhealthy deploy into one structured object shared by the API, CLI and MCP surfaces.
Package failure classifies a failed, held or unhealthy deploy into one structured object shared by the API, CLI and MCP surfaces.
fixit
Package fixit turns failing readiness and diagnostic checks into typed, previewable, verifiable fixes with attempt memory and loop protection.
Package fixit turns failing readiness and diagnostic checks into typed, previewable, verifiable fixes with attempt memory and loop protection.
footprint
Package footprint bounds and measures the control plane's idle cost: a default memory limit, a registry of background loops, and process stats.
Package footprint bounds and measures the control plane's idle cost: a default memory limit, a registry of background loops, and process stats.
forms
Package forms captures HTML form posts for static sites: parsing, spam classification, storage, notification and export.
Package forms captures HTML form posts for static sites: parsing, spam classification, storage, notification and export.
frameworks
Package frameworks is the catalog of first-class framework presets: the port, health path, build mode, env hints and volumes a framework needs to deploy with no manual build config.
Package frameworks is the catalog of first-class framework presets: the port, health path, build mode, env hints and volumes a framework needs to deploy with no manual build config.
functions
Package functions holds the starter handlers for scale-to-zero functions.
Package functions holds the starter handlers for scale-to-zero functions.
ghactions
Package ghactions maps a Levelrail deploy outcome onto GitHub deployment statuses and check runs, for the GitHub Actions deploy action.
Package ghactions maps a Levelrail deploy outcome onto GitHub deployment statuses and check runs, for the GitHub Actions deploy action.
giteaapp
Package giteaapp implements OAuth2 and the small slice of Gitea's REST API this control plane needs once connected.
Package giteaapp implements OAuth2 and the small slice of Gitea's REST API this control plane needs once connected.
githubapp
Package githubapp implements the GitHub App manifest registration flow, App-level JWT signing (RS256, per GitHub's own App authentication spec), and the small slice of the GitHub REST API this control plane needs once an App is connected: minting installation access tokens, listing an installation's repositories, and listing a repository's branches.
Package githubapp implements the GitHub App manifest registration flow, App-level JWT signing (RS256, per GitHub's own App authentication spec), and the small slice of the GitHub REST API this control plane needs once an App is connected: minting installation access tokens, listing an installation's repositories, and listing a repository's branches.
gitlabapp
Package gitlabapp implements OAuth2 and the small slice of GitLab's REST API this control plane needs once connected.
Package gitlabapp implements OAuth2 and the small slice of GitLab's REST API this control plane needs once connected.
gitprovider
Package gitprovider holds the small slice of REST-client plumbing that is genuinely identical across internal/githubapp, internal/gitlabapp, and internal/bitbucketapp: sending a built request and turning its response into either a decoded value or a uniform API error.
Package gitprovider holds the small slice of REST-client plumbing that is genuinely identical across internal/githubapp, internal/gitlabapp, and internal/bitbucketapp: sending a built request and turning its response into either a decoded value or a uniform API error.
golive
Package golive turns the platform's separate checks (app readiness, ports, host firewall, DNS, certificate, end-to-end HTTPS) into one ordered checklist for an app and a domain, each step with a status, evidence and one primary action.
Package golive turns the platform's separate checks (app readiness, ports, host firewall, DNS, certificate, end-to-end HTTPS) into one ordered checklist for an app and a domain, each step with a status, evidence and one primary action.
gpu
Package gpu detects NVIDIA GPUs on a node by querying nvidia-smi and the Docker daemon's registered runtimes.
Package gpu detects NVIDIA GPUs on a node by querying nvidia-smi and the Docker daemon's registered runtimes.
hostdiag
Package hostdiag answers a fixed set of read-only host questions for the web CLI console, in process.
Package hostdiag answers a fixed set of read-only host questions for the web CLI console, in process.
hostfw
Package hostfw reads the host firewall (ufw, firewalld, nftables, iptables) and opens exactly ports 80 and 443 in it, nothing else.
Package hostfw reads the host firewall (ufw, firewalld, nftables, iptables) and opens exactly ports 80 and 443 in it, nothing else.
hostprovider
Package hostprovider names the cloud or VPS provider this server runs on, from DMI strings first and a short link-local metadata probe second, and holds the provider-specific steps for opening web ports in a firewall the control plane cannot change.
Package hostprovider names the cloud or VPS provider this server runs on, from DMI strings first and a short link-local metadata probe second, and holds the provider-specific steps for opening web ports in a firewall the control plane cannot change.
iac
Package iac turns multi-document YAML resource files into a plan of changes against a control plane and applies it through the ordinary REST API, so per-resource authorization applies to every item.
Package iac turns multi-document YAML resource files into a plan of changes against a control plane and applies it through the ordinary REST API, so per-resource authorization applies to every item.
imagelife
Package imagelife builds the image inventory of a node, decides which images retention may free, and verifies image signatures.
Package imagelife builds the image inventory of a node, decides which images retention may free, and verifies image signatures.
imagemove
Package imagemove streams a host-built image from a source Docker host over SSH into a target node's image store and verifies it by image ID.
Package imagemove streams a host-built image from a source Docker host over SSH into a target node's image store and verifies it by image ID.
imageupdate
Package imageupdate periodically asks the control plane to check each opted-in app's image tag against its registry and redeploy when it moved.
Package imageupdate periodically asks the control plane to check each opted-in app's image tag against its registry and redeploy when it moved.
importplan
Package importplan classifies an import input (repo URL, docker run command, image reference, compose file or Dockerfile) and builds a side-effect free deployment plan preview from it.
Package importplan classifies an import input (repo URL, docker run command, image reference, compose file or Dockerfile) and builds a side-effect free deployment plan preview from it.
ingress
Package ingress is the Phase 0 spike for embedding Caddy as a Go library, driven entirely through its in-process admin API.
Package ingress is the Phase 0 spike for embedding Caddy as a Go library, driven entirely through its in-process admin API.
integrations
Package integrations holds the curated catalog of third-party tools an app can attach (internal/catalog's deployable-template catalog is unrelated: this is per-app add-ons, not services to deploy).
Package integrations holds the curated catalog of third-party tools an app can attach (internal/catalog's deployable-template catalog is unrelated: this is per-app add-ons, not services to deploy).
integrity
Package integrity checks the control plane SQLite database for corruption and stages a verified snapshot to replace it.
Package integrity checks the control plane SQLite database for corruption and stages a verified snapshot to replace it.
investigate
Package investigate merges the signals that explain a spike (deploys, config changes, restarts, resource saturation) into one ordered timeline.
Package investigate merges the signals that explain a spike (deploys, config changes, restarts, resource saturation) into one ordered timeline.
janitor
Package janitor runs bounded, level-triggered cleanup passes on the control plane's own node: unused Docker data, build cache over budget, orphaned volumes (quarantined first) and old failed deploy attempts.
Package janitor runs bounded, level-triggered cleanup passes on the control plane's own node: unused Docker data, build cache over budget, orphaned volumes (quarantined first) and old failed deploy attempts.
keyreminder
Package keyreminder sends a scheduled notice when encryption keys are older than the operator's maximum key age policy.
Package keyreminder sends a scheduled notice when encryption keys are older than the operator's maximum key age policy.
loadbalancer
Package loadbalancer is the product-level load balancer model layered on the embedded Caddy reverse_proxy upstream pool (internal/ingress).
Package loadbalancer is the product-level load balancer model layered on the embedded Caddy reverse_proxy upstream pool (internal/ingress).
loadbalancer/lbexport
Package lbexport renders a load balancer config as Terraform, CDK, CloudFormation, Caddyfile or Caddy JSON.
Package lbexport renders a load balancer config as Terraform, CDK, CloudFormation, Caddyfile or Caddy JSON.
localmode
Package localmode holds the pieces shared by the CLI's dev verb and the control plane's local-instance behavior.
Package localmode holds the pieces shared by the CLI's dev verb and the control plane's local-instance behavior.
mailcast
Package mailcast sends broadcasts: a queue of per-recipient messages processed in rate-limited batches, resumable after a restart and cancellable while sending.
Package mailcast sends broadcasts: a queue of per-recipient messages processed in rate-limited batches, resumable after a restart and cancellable while sending.
mailgroups
Package mailgroups defines email audiences: saved rules over platform users plus manual addresses, with a suppression list and signed one-click unsubscribe tokens.
Package mailgroups defines email audiences: saved rules over platform users plus manual addresses, with a suppression list and signed one-click unsubscribe tokens.
mailtemplates
Package mailtemplates renders the platform's emails: a token registry, a {{token}} substitution engine with no code execution, a small safe markup and one shared branded layout around every event template.
Package mailtemplates renders the platform's emails: a token registry, a {{token}} substitution engine with no code execution, a small safe markup and one shared branded layout around every event template.
maintenance
Package maintenance holds one-off scheduled maintenance windows: their validation, state, and the lead-time announcement through alert channels.
Package maintenance holds one-off scheduled maintenance windows: their validation, state, and the lead-time announcement through alert channels.
mcptools
Package mcptools builds the MCP tool server every levelrail-mcp transport (stdio, network, and the in-process transport an embedded caller like internal/ai uses) shares: one *mcp.Server with every tool registered against the same apiclient.Client.
Package mcptools builds the MCP tool server every levelrail-mcp transport (stdio, network, and the in-process transport an embedded caller like internal/ai uses) shares: one *mcp.Server with every tool registered against the same apiclient.Client.
meshpath
Package meshpath answers one question for the ingress and application controllers: can this control plane reach a remote node's published ports over the WireGuard mesh right now, and on which address.
Package meshpath answers one question for the ingress and application controllers: can this control plane reach a remote node's published ports over the WireGuard mesh right now, and on which address.
migrateagent
Package migrateagent is the control plane side of the read-only migration agent: single-use tokens, the mTLS session service, discovery storage and the volume comparison that advances the cutover checklist.
Package migrateagent is the control plane side of the read-only migration agent: single-use tokens, the mTLS session service, discovery storage and the volume comparison that advances the cutover checklist.
migrateverify
Package migrateverify proves a migrated or shadow-running instance matches the source platform before cutover.
Package migrateverify proves a migrated or shadow-running instance matches the source platform before cutover.
migrationgate
Package migrationgate decides whether the old instance is safe to delete.
Package migrationgate decides whether the old instance is safe to delete.
migrationplan
Package migrationplan turns a read of another platform into a reviewable plan: a per-item verdict, what would be created, and typed fixes.
Package migrationplan turns a read of another platform into a reviewable plan: a per-item verdict, what would be created, and typed fixes.
models
Package models manages AI model resources: an inference engine (Ollama, vLLM, llama.cpp) running as a container on a GPU node, with an OpenAI-compatible endpoint fronted by an API-key gateway.
Package models manages AI model resources: an inference engine (Ollama, vLLM, llama.cpp) running as a container on a GPU node, with an OpenAI-compatible endpoint fronted by an API-key gateway.
network
Package network is ADR 006's WireGuard mesh: the abstraction that ADR 006 says "has to be designed in Phase 1 as an interface, not a concrete WireGuard dependency" and that, until now, did not exist at all (the directory the project's repo layout reserves for it was empty).
Package network is ADR 006's WireGuard mesh: the abstraction that ADR 006 says "has to be designed in Phase 1 as an interface, not a concrete WireGuard dependency" and that, until now, did not exist at all (the directory the project's repo layout reserves for it was empty).
nodecapacity
Package nodecapacity judges a node's disk, inode, memory and swap headroom against warn and critical thresholds and groups cleanup candidates by safety class.
Package nodecapacity judges a node's disk, inode, memory and swap headroom against warn and critical thresholds and groups cleanup candidates by safety class.
nodefailure
Package nodefailure is the opt-in, deterministic policy for nodes that stay unreachable: it reschedules stateless apps, never moves anything holding node-local data, and fences stale copies when the node returns.
Package nodefailure is the opt-in, deterministic policy for nodes that stay unreachable: it reschedules stateless apps, never moves anything holding node-local data, and fences stale copies when the node returns.
nodemove
Package nodemove runs persisted, resumable moves of apps and databases between nodes, and node drains built on those moves.
Package nodemove runs persisted, resumable moves of apps and databases between nodes, and node drains built on those moves.
nodepreflight
Package nodepreflight judges the facts a joining node reports about itself (Docker, kernel WireGuard, disk, clock, architecture, mesh port) and turns each problem into a concrete fix.
Package nodepreflight judges the facts a joining node reports about itself (Docker, kernel WireGuard, disk, clock, architecture, mesh port) and turns each problem into a concrete fix.
objectstore
Package objectstore is the S3-compatible storage layer shared by log archive and other features that write to a connected storage destination.
Package objectstore is the S3-compatible storage layer shared by log archive and other features that write to a connected storage destination.
objectstore/objectstoretest
Package objectstoretest is an in-memory, path-style S3 server for tests.
Package objectstoretest is an in-memory, path-style S3 server for tests.
oidc
Package oidc mints short-lived, signed OIDC tokens for pipeline jobs that opt in with `oidc: {audience: ...}`, and publishes the matching JWKS so AWS IAM, GCP workload identity federation, and Vault's JWT auth method can verify them without a long-lived credential ever touching a job.
Package oidc mints short-lived, signed OIDC tokens for pipeline jobs that opt in with `oidc: {audience: ...}`, and publishes the matching JWKS so AWS IAM, GCP workload identity federation, and Vault's JWT auth method can verify them without a long-lived credential ever touching a job.
orphans
Package orphans is the single definition of a leftover container or volume that desired state no longer accounts for.
Package orphans is the single definition of a leftover container or volume that desired state no longer accounts for.
otlpingest
Package otlpingest decodes OTLP/HTTP trace exports into stored spans.
Package otlpingest decodes OTLP/HTTP trace exports into stored spans.
pipeline
Package pipeline is a user-defined CI/CD layer on top of the existing build and deploy primitives.
Package pipeline is a user-defined CI/CD layer on top of the existing build and deploy primitives.
pkgregistry
Package pkgregistry renders private package registry credentials into the tool config files a Dockerfile build reads through BuildKit secret mounts, so a token is never baked into an image layer or a build log.
Package pkgregistry renders private package registry credentials into the tool config files a Dockerfile build reads through BuildKit secret mounts, so a token is never baked into an image layer or a build log.
placement
Package placement is the multi-node scheduler: label selectors, a fit check against node CPU, memory and disk headroom, then a spread that prefers the most headroom.
Package placement is the multi-node scheduler: label selectors, a fit check against node CPU, memory and disk headroom, then a spread that prefers the most headroom.
platformimport
Package platformimport reads apps from another self-hosted platform (read-only) into a neutral model and maps it to this platform's resources.
Package platformimport reads apps from another self-hosted platform (read-only) into a neutral model and maps it to this platform's resources.
platformimport/fakecoolify
Package fakecoolify is a read-only stand-in for the Coolify v4 REST API, shaped from the documented responses the importer consumes.
Package fakecoolify is a read-only stand-in for the Coolify v4 REST API, shaped from the documented responses the importer consumes.
platformimport/fakecoolify/cmd/fakecoolify command
Command fakecoolify serves the read-only fake Coolify API for local runs of the app import flow.
Command fakecoolify serves the read-only fake Coolify API for local runs of the app import flow.
platformimport/fakeheroku
Package fakeheroku is a read-only stand-in for the Heroku Platform API, shaped from the documented responses the importer consumes.
Package fakeheroku is a read-only stand-in for the Heroku Platform API, shaped from the documented responses the importer consumes.
platformimport/fakerender
Package fakerender is a read-only stand-in for the Render REST API, shaped from the documented responses the importer consumes.
Package fakerender is a read-only stand-in for the Render REST API, shaped from the documented responses the importer consumes.
platformimport/fakevercel
Package fakevercel is a read-only stand-in for the Vercel REST API, shaped from the documented responses the importer consumes.
Package fakevercel is a read-only stand-in for the Vercel REST API, shaped from the documented responses the importer consumes.
plugin
Package plugin runs out-of-process extensions behind a signed, digest-pinned package and an operator-approved ability list (ADR 034).
Package plugin runs out-of-process extensions behind a signed, digest-pinned package and an operator-approved ability list (ADR 034).
policy
Package policy evaluates deploy guardrail rules against what an app is about to run.
Package policy evaluates deploy guardrail rules against what an app is about to run.
prcommand
Package prcommand parses /levelrail commands out of a pull request comment.
Package prcommand parses /levelrail commands out of a pull request comment.
preflight
Package preflight runs deterministic pre-deploy checks (DNS, ports, disk, memory, image and git reachability, env, mounts, GPU) and reports pass, warn or fail with a reason and fix hint for each.
Package preflight runs deterministic pre-deploy checks (DNS, ports, disk, memory, image and git reachability, env, mounts, GPU) and reports pass, warn or fail with a reason and fix hint for each.
preview
Package preview captures a thumbnail of each deployed release with a short-lived browser container and keeps them within bounded storage.
Package preview captures a thumbnail of each deployed release with a short-lived browser container and keeps them within bounded storage.
privnet
Package privnet models VPC-like private networks and security-group style allow rules between apps, and answers which app pairs can talk.
Package privnet models VPC-like private networks and security-group style allow rules between apps, and answers which app pairs can talk.
profile
Package profile is the server profile: one switch that sets which optional subsystems start.
Package profile is the server profile: one switch that sets which optional subsystems start.
projecttpl
Package projecttpl renders starter project files (app.yaml and, for the pipeline starter, a pipeline file) from a small set of validated templates.
Package projecttpl renders starter project files (app.yaml and, for the pipeline starter, a pipeline file) from a small set of validated templates.
prompb
Package prompb implements the small subset of Prometheus's remote-read wire protocol needed for a Prometheus remote read endpoint (ReadRequest/ReadResponse and their nested messages), by hand, using google.golang.org/protobuf's low-level protowire primitives (already a transitive dependency, no new module).
Package prompb implements the small subset of Prometheus's remote-read wire protocol needed for a Prometheus remote read endpoint (ReadRequest/ReadResponse and their nested messages), by hand, using google.golang.org/protobuf's low-level protowire primitives (already a transitive dependency, no new module).
provision
Package provision creates and tears down cloud VMs at a provider (Hetzner, DigitalOcean, Azure, GCP) so a fresh node can join the fleet through the existing join-token enrollment flow, without an operator manually clicking through a cloud console first.
Package provision creates and tears down cloud VMs at a provider (Hetzner, DigitalOcean, Azure, GCP) so a fresh node can join the fleet through the existing join-token enrollment flow, without an operator manually clicking through a cloud console first.
proxycoexist
Package proxycoexist helps run the dashboard behind a reverse proxy that already owns ports 80 and 443 (Traefik, Caddy, nginx), which is the normal situation on a server migrating off another platform.
Package proxycoexist helps run the dashboard behind a reverse proxy that already owns ports 80 and 443 (Traefik, Caddy, nginx), which is the normal situation on a server migrating off another platform.
proxyinstall
Package proxyinstall plans and applies the start of a managed reverse proxy container through the Docker Engine API.
Package proxyinstall plans and applies the start of a managed reverse proxy container through the Docker Engine API.
proxyroutes
Package proxyroutes writes and maintains route files in an external reverse proxy's watched configuration directory (Traefik's file provider), so domains reach this instance through a proxy that owns ports 80 and 443.
Package proxyroutes writes and maintains route files in an external reverse proxy's watched configuration directory (Traefik's file provider), so domains reach this instance through a proxy that owns ports 80 and 443.
quota
Package quota holds the pure limit arithmetic for team and project resource quotas.
Package quota holds the pure limit arithmetic for team and project resource quotas.
reconcile
Package reconcile implements the core convergence loop: desired state in, observed state diffed against it, idempotent and level-triggered controllers converge the two.
Package reconcile implements the core convergence loop: desired state in, observed state diffed against it, idempotent and level-triggered controllers converge the two.
reconcile/application
Package application implements the declarative app spec's service contract and the application controller: the reconcile.Controller that converges a real, store-backed desired service to a running container, replacing nginxdemo's hardcoded desired state with the real thing.
Package application implements the declarative app spec's service contract and the application controller: the reconcile.Controller that converges a real, store-backed desired service to a running container, replacing nginxdemo's hardcoded desired state with the real thing.
reconcile/cloudflaretunnel
Package cloudflaretunnel implements the reconcile.Controller that converges a single, platform-wide desired state (store.
Package cloudflaretunnel implements the reconcile.Controller that converges a single, platform-wide desired state (store.
reconcile/database
Package database implements the managed database controller: the reconcile.Controller that converges a store-backed store.DesiredDatabase to a running, volume-backed container, the same architectural pattern internal/reconcile/application already establishes (level-triggered, deterministic naming, a narrow store interface for testability), applied to a database instead of a built application image.
Package database implements the managed database controller: the reconcile.Controller that converges a store-backed store.DesiredDatabase to a running, volume-backed container, the same architectural pattern internal/reconcile/application already establishes (level-triggered, deterministic naming, a narrow store interface for testability), applied to a database instead of a built application image.
reconcile/exposure
Package exposure converges the host's DOCKER-USER chain onto the stored exposure restrictions, so they survive a reboot or Docker restart.
Package exposure converges the host's DOCKER-USER chain onto the stored exposure restrictions, so they survive a reboot or Docker restart.
reconcile/firewall
Package firewall implements the reconcile.Controller that converges internal/store's firewall_rules table onto the local host's ufw via internal/firewall.
Package firewall implements the reconcile.Controller that converges internal/store's firewall_rules table onto the local host's ufw via internal/firewall.
reconcile/ingress
Package ingress implements the ingress controller: the reconcile.Controller that keeps Caddy's config (internal/ingress, ADR 005) in sync with every service that declares domains.
Package ingress implements the ingress controller: the reconcile.Controller that keeps Caddy's config (internal/ingress, ADR 005) in sync with every service that declares domains.
reconcile/mesh
Package mesh implements the mesh controller: the reconcile.Controller that keeps the WireGuard mesh and the internal DNS zone converged on whatever the store currently says the fleet and its placements look like.
Package mesh implements the mesh controller: the reconcile.Controller that keeps the WireGuard mesh and the internal DNS zone converged on whatever the store currently says the fleet and its placements look like.
reconcile/nginxdemo
Package nginxdemo is the Phase 0 exit criterion: one controller that keeps a single hardcoded nginx container running.
Package nginxdemo is the Phase 0 exit criterion: one controller that keeps a single hardcoded nginx container running.
reconcile/nodehealth
Package nodehealth implements the node health check: the reconcile.Controller that converges a node's observed heartbeat (internal/store's last_seen_at, kept fresh by internal/agent.Server's periodic touch loop while a node's gRPC session stays open) against its recorded Status, the same architectural pattern internal/reconcile/application and internal/reconcile/database already establish (level-triggered, a narrow store interface for testability, one controller instance per resource), applied to a node instead of a service or database.
Package nodehealth implements the node health check: the reconcile.Controller that converges a node's observed heartbeat (internal/store's last_seen_at, kept fresh by internal/agent.Server's periodic touch loop while a node's gRPC session stays open) against its recorded Status, the same architectural pattern internal/reconcile/application and internal/reconcile/database already establish (level-triggered, a narrow store interface for testability, one controller instance per resource), applied to a node instead of a service or database.
reconcile/proxyroutes
Package proxyroutes is the reconcile.Controller that keeps route files in an external Traefik's dynamic directory in step with the routed domains.
Package proxyroutes is the reconcile.Controller that keeps route files in an external Traefik's dynamic directory in step with the routed domains.
reconcile/registry
Package registry implements the reconcile.Controller that converges a single, platform-wide desired state (store.RegistrySettings plus a generated password in internal/secrets) to a running or absent registry:2 container: Levelrail's own built-in image registry, so a multi-node deployment gets a BuildKit cache/distribution backend (internal/build's WithCacheRegistry) without an operator first signing up for an external one.
Package registry implements the reconcile.Controller that converges a single, platform-wide desired state (store.RegistrySettings plus a generated password in internal/secrets) to a running or absent registry:2 container: Levelrail's own built-in image registry, so a multi-node deployment gets a BuildKit cache/distribution backend (internal/build's WithCacheRegistry) without an operator first signing up for an external one.
registrycatalog
Package registrycatalog implements a minimal client for the Docker Registry HTTP API v2's catalog endpoints (_catalog, <name>/tags/list), used to browse repositories and tags in Levelrail's own built-in registry (internal/reconcile/registry) from the app-creation UI.
Package registrycatalog implements a minimal client for the Docker Registry HTTP API v2's catalog endpoints (_catalog, <name>/tags/list), used to browse repositories and tags in Levelrail's own built-in registry (internal/reconcile/registry) from the app-creation UI.
registrytoken
Package registrytoken mints short-lived container registry passwords from an existing cloud connection (ECR, Artifact Registry, ACR) and keeps the stored registry credential fresh.
Package registrytoken mints short-lived container registry passwords from an existing cloud connection (ECR, Artifact Registry, ACR) and keeps the stored registry credential fresh.
registryvendor
Package registryvendor is the catalog of container registry vendors the credential flow offers presets for: default host, fixed username where the vendor defines one, and how long its tokens live.
Package registryvendor is the catalog of container registry vendors the credential flow offers presets for: default host, fixed username where the vendor defines one, and how long its tokens live.
repolayout
Package repolayout inspects a repository's file tree to suggest where its build context and Dockerfile should point, so a monorepo does not silently fall back to auto-detecting the repository root.
Package repolayout inspects a repository's file tree to suggest where its build context and Dockerfile should point, so a monorepo does not silently fall back to auto-detecting the repository root.
repolist
Package repolist caches and queries the repository lists of connected git providers: one cached snapshot per connection, filtered and paged server side so a huge account never reaches the browser in one response.
Package repolist caches and queries the repository lists of connected git providers: one cached snapshot per connection, filtered and paged server side so a huge account never reaches the browser in one response.
repoplan
Package repoplan turns detected workspace packages into a read-only import plan: one proposed app per package, with collisions and risks flagged.
Package repoplan turns detected workspace packages into a read-only import plan: one proposed app per package, with collisions and risks flagged.
repopreview
Package repopreview builds the read-only repository card shown before an app is created from a git URL.
Package repopreview builds the read-only repository card shown before an app is created from a git URL.
resilience
Package resilience judges whether the data plane would keep serving if the control plane went away.
Package resilience judges whether the data plane would keep serving if the control plane went away.
resourceadvisor
Package resourceadvisor turns telemetry, limits and specs into read-only resource findings.
Package resourceadvisor turns telemetry, limits and specs into read-only resource findings.
rightsizing
Package rightsizing is a deterministic, pure-Go engine that turns an app's historical CPU/memory usage into a resource-limit suggestion.
Package rightsizing is a deterministic, pure-Go engine that turns an app's historical CPU/memory usage into a resource-limit suggestion.
rollback
Package rollback plans and applies a return to an earlier control plane release.
Package rollback plans and applies a return to an earlier control plane release.
runtimesettings
Package runtimesettings holds the registry of operator-tunable settings and resolves each one as saved value, then env var, then registry default.
Package runtimesettings holds the registry of operator-tunable settings and resolves each one as saved value, then env var, then registry default.
safemode
Package safemode keeps a boot ledger so a control plane that cannot start stops restarting and serves a read-only recovery page instead.
Package safemode keeps a boot ledger so a control plane that cannot start stops restarting and serves a read-only recovery page instead.
scheduledeploy
Package scheduledeploy checks, on an interval, which apps have a due cron schedule (store.AppSchedule, migrations/0250_app_schedules.sql) and redeploys the latest commit on their configured branch.
Package scheduledeploy checks, on an interval, which apps have a due cron schedule (store.AppSchedule, migrations/0250_app_schedules.sql) and redeploys the latest commit on their configured branch.
scheduledtask
Package scheduledtask runs operator-defined jobs on a cron schedule, in the running container (exec mode) or in a fresh one-off container built from the app's own spec (fresh mode), mirroring internal/backup's Runner/Scheduler split: Runner (this file) does one run and records its outcome, Scheduler (scheduler.go) decides when a run is due.
Package scheduledtask runs operator-defined jobs on a cron schedule, in the running container (exec mode) or in a fresh one-off container built from the app's own spec (fresh mode), mirroring internal/backup's Runner/Scheduler split: Runner (this file) does one run and records its outcome, Scheduler (scheduler.go) decides when a run is due.
search
Package search is the unified search service: a SQLite FTS5 index fed by providers, filtered through an Authorizer before any hit leaves it.
Package search is the unified search service: a SQLite FTS5 index fed by providers, filtered through an Authorizer before any hit leaves it.
secretmask
Package secretmask masks known secret values in text before it is written to a log, audit row or stored build output.
Package secretmask masks known secret values in text before it is written to a log, audit row or stored build output.
secretrotation
Package secretrotation schedules and performs per-secret rotation policies for app secrets: generate a new value, keep the old one for a grace window, restart the owning app, and record every step.
Package secretrotation schedules and performs per-secret rotation policies for app secrets: generate a new value, keep the old one for a grace window, restart the owning app, and record every step.
secrets
Package secrets implements envelope encryption: per-app data encryption keys, wrapped by a master key held only by the control plane, using filippo.io/age for the crypto primitives.
Package secrets implements envelope encryption: per-app data encryption keys, wrapped by a master key held only by the control plane, using filippo.io/age for the crypto primitives.
selfupgrade
Package selfupgrade replaces the control plane binary with a verified newer release and rolls binary and data back if it does not become healthy.
Package selfupgrade replaces the control plane binary with a verified newer release and rolls binary and data back if it does not become healthy.
serverready
Package serverready reports whether a server can run the control plane and in which mode.
Package serverready reports whether a server can run the control plane and in which mode.
setupguide
Package setupguide derives the Get started checklist from real instance state.
Package setupguide derives the Get started checklist from real instance state.
sharedenv
Package sharedenv composes internal/store's shared env var tables (project_env_vars, organization_env_vars, environment_env_vars) with internal/secrets' envelope encryption, so a secret-marked shared env var resolves to its decrypted plaintext by the time internal/reconcile/application's resolveEnv merges it into a running container's environment.
Package sharedenv composes internal/store's shared env var tables (project_env_vars, organization_env_vars, environment_env_vars) with internal/secrets' envelope encryption, so a secret-marked shared env var resolves to its decrypted plaintext by the time internal/reconcile/application's resolveEnv merges it into a running container's environment.
soak
Package soak records control plane resource samples during a long churn run and decides pass or fail from growth between the start and the end.
Package soak records control plane resource samples during a long churn run and decides pass or fail from growth between the start and the end.
sourcecache
Package sourcecache keeps a bounded bare mirror of every repository the control plane fetches, so a known commit never needs the git host again.
Package sourcecache keeps a bounded bare mirror of every repository the control plane fetches, so a known commit never needs the git host again.
sourceupload
Package sourceupload packs a local directory into a deterministic archive, stores uploaded archives for a bounded time and extracts them safely.
Package sourceupload packs a local directory into a deterministic archive, stores uploaded archives for a bounded time and extracts them safely.
spec
Package spec parses and validates the app.yaml file: the one declarative file a user writes in their repo, per the app spec design.
Package spec parses and validates the app.yaml file: the one declarative file a user writes in their repo, per the app spec design.
spendcap
Package spendcap holds per-app monthly spend and egress guardrails: the pure threshold math and the level-triggered controller step that decides whether an app is throttled or paused.
Package spendcap holds per-app monthly spend and egress guardrails: the pure threshold math and the level-triggered controller step that decides whether an app is throttled or paused.
spendguard
Package spendguard refuses new deploys of an app whose spend cap or cost budget is in block_deploys mode and has reached 100% this month.
Package spendguard refuses new deploys of an app whose spend cap or cost budget is in block_deploys mode and has reached 100% this month.
splittest
Package splittest holds the pure rules of app split testing: variant validation, sticky assignment and the env defaults.
Package splittest holds the pure rules of app split testing: variant validation, sticky assignment and the env defaults.
sshprovision
Package sshprovision adopts a machine the operator already has (any VPS, home server, Raspberry Pi) as a node by dialing into it over SSH and installing the node agent there.
Package sshprovision adopts a machine the operator already has (any VPS, home server, Raspberry Pi) as a node by dialing into it over SSH and installing the node agent there.
stackdrift
Package stackdrift periodically plans each stack's latest applied revision against live state and records whether they still match (ADR 042).
Package stackdrift periodically plans each stack's latest applied revision against live state and records whether they still match (ADR 042).
stacktemplates
Package stacktemplates lists and renders the bundled starter stacks.
Package stacktemplates lists and renders the bundled starter stacks.
standalone
Package standalone models domains that are not owned by any app and proxy to a target the operator picks: a local port, an address, a URL, another app's port or a container.
Package standalone models domains that are not owned by any app and proxy to a target the operator picks: a local port, an address, a URL, another app's port or a container.
staticroutes
Package staticroutes parses and evaluates the in-repo routing rules of a static site: Netlify style _redirects and _headers files, the app.yaml routes and headers blocks, and the SPA, clean URL and 404 options.
Package staticroutes parses and evaluates the in-repo routing rules of a static site: Netlify style _redirects and _headers files, the app.yaml routes and headers blocks, and the SPA, clean URL and 404 options.
statuspage
Package statuspage builds the opt-in public status page: component probing, 90-day uptime bars, operator-authored incidents and the whitelisted public view.
Package statuspage builds the opt-in public status page: component probing, 90-day uptime bars, operator-authored incidents and the whitelisted public view.
store
Package store is the embedded SQLite state layer: WAL mode, modernc.org/sqlite (pure Go, no cgo, keeps cross-compiling the control plane binary trivial), forward-only versioned migrations.
Package store is the embedded SQLite state layer: WAL mode, modernc.org/sqlite (pure Go, no cgo, keeps cross-compiling the control plane binary trivial), forward-only versioned migrations.
stuck
Package stuck explains why a reconciled resource is not ready, by mapping condition reasons plus nearby context to a plain-language cause, evidence lines and typed next actions.
Package stuck explains why a reconciled resource is not ready, by mapping condition reasons plus nearby context to a plain-language cause, evidence lines and typed next actions.
supplychain
Package supplychain records the SBOM of each build, optionally scans it for known vulnerabilities in a short-lived container, and decides whether a release may go live.
Package supplychain records the SBOM of each build, optionally scans it for known vulnerabilities in a short-lived container, and decides whether a release may go live.
takeover
Package takeover moves a server's ports 80 and 443 from the proxy of the platform it is migrating off (Coolify's Traefik, a Caddy or nginx container) to this control plane's own ingress, with a recorded way back.
Package takeover moves a server's ports 80 and 443 from the proxy of the platform it is migrating off (Coolify's Traefik, a Caddy or nginx container) to this control plane's own ingress, with a recorded way back.
telemetry
Package telemetry is the node-local metrics store, decided in ADR 009: a dedicated SQLite database (telemetry.db, separate from internal/store's levelrail.db) holding container resource-usage samples, queried in place rather than shipped anywhere centrally.
Package telemetry is the node-local metrics store, decided in ADR 009: a dedicated SQLite database (telemetry.db, separate from internal/store's levelrail.db) holding container resource-usage samples, queried in place rather than shipped anywhere centrally.
tlsowner
Package tlsowner decides which component terminates TLS for a hostname, so every surface reports one coherent certificate and ACME state.
Package tlsowner decides which component terminates TLS for a hostname, so every surface reports one coherent certificate and ACME state.
tokenhash
Package tokenhash is the one SHA-256 hex digest used for stored secrets.
Package tokenhash is the one SHA-256 hex digest used for stored secrets.
totp
Package totp holds the recovery-code format helpers and an RFC 6238 code generator the auth engine and its tests share.
Package totp holds the recovery-code format helpers and an RFC 6238 code generator the auth engine and its tests share.
trafficexport
Package trafficexport delivers finished edge requests to analytics vendors through bounded, lossy queues so a slow vendor never slows a real request.
Package trafficexport delivers finished edge requests to analytics vendors through bounded, lossy queues so a slow vendor never slows a real request.
trafficpolicy
Package trafficpolicy holds the per-domain traffic control model (headers, path forwarders, geolocation, caching, redirects): the wire types the API, CLI and dashboard share, their validation, and a human readable preview.
Package trafficpolicy holds the per-domain traffic control model (headers, path forwarders, geolocation, caching, redirects): the wire types the API, CLI and dashboard share, their validation, and a human readable preview.
treestat
Package treestat counts regular files and bytes under a directory.
Package treestat counts regular files and bytes under a directory.
tui
Package tui is the interactive terminal UI behind the CLI's "tui" command: a live, keyboard-driven view of apps, databases, deployments, nodes, domains, alerts and backups over the public HTTP API only.
Package tui is the interactive terminal UI behind the CLI's "tui" command: a live, keyboard-driven view of apps, databases, deployments, nodes, domains, alerts and backups over the public HTTP API only.
updatecheck
Package updatecheck periodically checks the configured update channel's latest release against the running build, when an operator has opted into auto-update checking (update_settings.auto_update_enabled, migrations/0258_update_settings.sql).
Package updatecheck periodically checks the configured update channel's latest release against the running build, when an operator has opted into auto-update checking (update_settings.auto_update_enabled, migrations/0258_update_settings.sql).
upgradehistory
Package upgradehistory records every control plane version transition at boot, however the binary was replaced, and builds the links and context the Updates page shows for it.
Package upgradehistory records every control plane version transition at boot, however the binary was replaced, and builds the links and context the Updates page shows for it.
upgradesched
Package upgradesched runs scheduled and automatic control plane upgrades.
Package upgradesched runs scheduled and automatic control plane upgrades.
usagecost
Package usagecost allocates a real or configured infrastructure price to the apps and databases that consume it, then rolls the result up per project, environment and team.
Package usagecost allocates a real or configured infrastructure price to the apps and databases that consume it, then rolls the result up per project, environment and team.
vault
Package vault resolves a live secret value from an external HashiCorp Vault instance at container-create time, as an alternative to internal/secrets' own envelope-encrypted storage.
Package vault resolves a live secret value from an external HashiCorp Vault instance at container-create time, as an alternative to internal/secrets' own envelope-encrypted storage.
version
Package version holds the control plane's own build version, injected via -ldflags at release build time (see .github/workflows/release.yml).
Package version holds the control plane's own build version, injected via -ldflags at release build time (see .github/workflows/release.yml).
walship
Package walship is an opt-in prototype of continuous SQLite replication by WAL frame shipping (ADR 039).
Package walship is an opt-in prototype of continuous SQLite replication by WAL frame shipping (ADR 039).
webhook
Package webhook is the git integration: a GitHub push-webhook receiver that verifies the request signature, extracts the pushed commit SHA, fetches the repository at that SHA to a local checkout, and hands the result to internal/deploy's Pipeline, the same pipeline a manual deploy trigger will use once the HTTP API exists.
Package webhook is the git integration: a GitHub push-webhook receiver that verifies the request signature, extracts the pushed commit SHA, fetches the repository at that SHA to a local checkout, and hands the result to internal/deploy's Pipeline, the same pipeline a manual deploy trigger will use once the HTTP API exists.
webpush
Package webpush sends browser push notifications (RFC 8030/8291) to every subscription this control plane's dashboard has registered, backing the "webpush" notification-channel kind in internal/alerting: an operator gets a deploy/alert notification even with no dashboard tab focused or open, something none of the other 17 channel kinds (all webhooks or email) can do on their own.
Package webpush sends browser push notifications (RFC 8030/8291) to every subscription this control plane's dashboard has registered, backing the "webpush" notification-channel kind in internal/alerting: an operator gets a deploy/alert notification even with no dashboard tab focused or open, something none of the other 17 channel kinds (all webhooks or email) can do on their own.
kit module
plugins
cloudflare-dns command
Command cloudflare-dns manages DNS records in Cloudflare for the control plane.
Command cloudflare-dns manages DNS records in Cloudflare for the control plane.
dingtalk command
Command dingtalk delivers alerts to a DingTalk group through a custom robot webhook.
Command dingtalk delivers alerts to a DingTalk group through a custom robot webhook.
internal/pluginkit
Package pluginkit is the shared scaffolding for first-party notification channel plugins.
Package pluginkit is the shared scaffolding for first-party notification channel plugins.
internal/pluginkit/pluginkittest
Package pluginkittest holds the checks every first-party plugin test shares.
Package pluginkittest holds the checks every first-party plugin test shares.
mailgun command
Command mailgun emails each alert through the Mailgun HTTP API.
Command mailgun emails each alert through the Mailgun HTTP API.
matrix command
Command matrix posts alerts to a Matrix room with a bot access token.
Command matrix posts alerts to a Matrix room with a bot access token.
twilio-sms command
Command twilio-sms sends a short SMS for each alert through Twilio.
Command twilio-sms sends a short SMS for each alert through Twilio.
wecom command
Command wecom delivers alerts to a WeCom (WeChat Work) group through a group robot webhook.
Command wecom delivers alerts to a WeCom (WeChat Work) group through a group robot webhook.
zulip command
Command zulip posts alerts to a Zulip stream topic as a bot.
Command zulip posts alerts to a Zulip stream topic as a bot.
scripts
catalog-smoke command
Command catalog-smoke prepares and reports the local template smoke run.
Command catalog-smoke prepares and reports the local template smoke run.
gen-api-reference command
Command gen-api-reference regenerates the route tables in docs/api-reference.md and the route metadata in internal/api/openapi_gen.go, both derived from the mux registrations in internal/api/routes*.go.
Command gen-api-reference regenerates the route tables in docs/api-reference.md and the route metadata in internal/api/openapi_gen.go, both derived from the mux registrations in internal/api/routes*.go.
gen-template-catalog-docs command
Command gen-template-catalog-docs regenerates the per-category tables in docs/template-catalog.md from internal/catalog.Templates, the same data GET /api/v1/service-templates serves.
Command gen-template-catalog-docs regenerates the per-category tables in docs/template-catalog.md from internal/catalog.Templates, the same data GET /api/v1/service-templates serves.
gen-template-gallery command
Command gen-template-gallery exports internal/catalog.Templates as the JSON the docs site's self-host gallery pages are built from.
Command gen-template-gallery exports internal/catalog.Templates as the JSON the docs site's self-host gallery pages are built from.
glinr-bot command
Command glinr-bot evaluates one pull request against .github/glinr-bot.yml.
Command glinr-bot evaluates one pull request against .github/glinr-bot.yml.
go-top-level-idents command
Command go-top-level-idents prints every top-level identifier (func, method, type, var, const, including grouped blocks) a single Go file declares, one per line.
Command go-top-level-idents prints every top-level identifier (func, method, type, var, const, including grouped blocks) a single Go file declares, one per line.
idle-footprint command
Command idle-footprint measures the idle footprint of the control plane on Linux and guards it against a committed baseline.
Command idle-footprint measures the idle footprint of the control plane on Linux and guards it against a committed baseline.
mcp-eval command
Command mcp-eval runs scripted agent tasks through the real MCP server and reports pass or fail and the estimated tokens each one costs.
Command mcp-eval runs scripted agent tasks through the real MCP server and reports pass or fail and the estimated tokens each one costs.
perf-fixtures command
Command perf-fixtures seeds a scratch control plane data dir with a large, deterministic resource graph for UI performance measurement.
Command perf-fixtures seeds a scratch control plane data dir with a large, deterministic resource graph for UI performance measurement.
plugin-publish command
Command plugin-publish signs plugin manifests and marketplace indexes offline.
Command plugin-publish signs plugin manifests and marketplace indexes offline.
refresh-db-catalog command
Command refresh-db-catalog builds the published database version catalog (databases.v1.json) and its ed25519 signature.
Command refresh-db-catalog builds the published database version catalog (databases.v1.json) and its ed25519 signature.
template-smoke command
Command template-smoke starts catalog templates under real Docker and reports per template whether services stay running, exit, pass their healthcheck or fail to pull.
Command template-smoke starts catalog templates under real Docker and reports per template whether services stay running, exit, pass their healthcheck or fail to pull.
validate-templates command
Command validate-templates checks template manifests and, optionally, a directory of raw compose files against the same parse, guard and translation path a real deploy uses.
Command validate-templates checks template manifests and, optionally, a directory of raw compose files against the same parse, guard and translation path a real deploy uses.
Package stacks embeds the bundled starter stack templates.
Package stacks embeds the bundled starter stack templates.
test
chaos
Package chaos holds the local resilience suite, built only with the chaos tag: go test -tags chaos ./test/chaos.
Package chaos holds the local resilience suite, built only with the chaos tag: go test -tags chaos ./test/chaos.
e2e
e2e/testenv
Package testenv holds the live-Docker test helpers shared by both test/e2e (tests that exercise a real api.Router over HTTP) and test/e2e/reconcile (tests that drive the reconciler/Docker runtime directly, with no internal/api dependency).
Package testenv holds the live-Docker test helpers shared by both test/e2e (tests that exercise a real api.Router over HTTP) and test/e2e/reconcile (tests that drive the reconciler/Docker runtime directly, with no internal/api dependency).
fixtures/bench-app command
Command bench-app is the fixture HTTP app the load harness deploys.
Command bench-app is the fixture HTTP app the load harness deploys.
fixtures/plugin-notify command
Command plugin-notify is the smallest notification_channel plugin: it logs each event title and reports delivery.
Command plugin-notify is the smallest notification_channel plugin: it logs each event title and reports delivery.
fixtures/plugin-notify/signer command
Command signer creates an ed25519 publisher key and signs a plugin manifest.
Command signer creates an ed25519 publisher key and signs a plugin manifest.
Package web embeds the built frontend via embed.FS, keeping the control plane a single static binary with no Node runtime required on the server, and serves it with client-side-routing fallback, so a hard refresh or direct link to a TanStack Router path like /apps/foo resolves correctly instead of 404ing at the server before React Router ever gets a chance to handle it.
Package web embeds the built frontend via embed.FS, keeping the control plane a single static binary with no Node runtime required on the server, and serves it with client-side-routing fallback, so a hard refresh or direct link to a TanStack Router path like /apps/foo resolves correctly instead of 404ing at the server before React Router ever gets a chance to handle it.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL