Prog-Language Eggs docs · PTDL_v2 · exported 2026-08-30

Panel setup & startup

Everything on this page is generated from the real egg JSON -41 variables, the multi-language docker image and the launcher startup command. No invented defaults.

Import into your panel

The egg is a single PTDL_v2 JSON file that imports into every Wings-family panel (Pterodactyl, Pelican, Jexactyl, Wisp, Emerald) plus Feather Panel and PufferPanel template flows.

  1. Download egg-programming-multi.json from the master branch.
  2. In your panel admin area open Nests / Templates Import Egg and select the file.
  3. Create a server on the egg. The docker image ghcr.io/potenfyr-studios/prog-language-eggs:latest is selected automatically.
  4. Start the server. The startup command bash /usr/local/bin/run.sh launches the launcher, which auto-detects your code or pulls it from Git.

Self-updating egg

The egg ships with EGG_UPDATE_URL pointing at this repository's raw JSON (https://raw.githubusercontent.com/PotenFYR-Studios/Prog-Language-Eggs/master/egg-programming-multi.json). With AUTO_UPDATE_EGG=1 (default) the launcher checks it on every boot and refreshes its scripts when the upstream egg changes, you import once and stay current.

Version selection

RUNTIME_VERSION controls the primary runtime version. Values are validated and resolved from live upstream feeds at boot, exact versions (22, 22.1, 22.1.4) or the keyword channels below.

VariableDefaultEditableDescription
RUNTIME_VERSIONlatestyesVersion of the primary runtime: 22 | 22.1 | 22.1.4 or keywords latest, stable, lts, alpha, beta, rc, preview, nightly. Validated & resolved from live upstream feeds. 'latest' resolves once, then pins to the exact version; set to 'auto-detect' to re-resolve.
LANGUAGE_VERSION-yesDB_VERSION-style alias: pinned version (e.g. 22.1, 3.12, 21) or keywords latest/stable/lts/nightly. Acts as RUNTIME_VERSION fallback.

Version channels

ChannelResolves to
latestNewest stable GA release, resolves once, then pins
stableProduction stable branch
ltsLong-Term Support release line
beta / rc / alpha / previewPre-release channels where the vendor publishes them
nightlyCanary/nightly builds (Node, Rust, Zig master, Bun canary)
22 · 22.1 · 22.1.4Highest release matching the exact version prefix
RUNTIME_VERSION=lts        # or 22, 3.12, nightly, stable
LANGUAGE_VERSION=          # optional DB_VERSION-style alias fallback
EXTRA_RUNTIMES=python@3.12,bun@latest,java@21   # companion toolchains

First-boot pinning

To protect production containers from upstream major bumps, auto and latest resolve once: the concrete version (e.g. v22.14.0) is pinned into .multi-prog.conf and reused on every cold start. Set the variable to auto-detect in the Startup tab to clear the pin and re-resolve.

Custom runtime URL

Need a fork or an internal build? CUSTOM_RUNTIME_URL downloads a .tar.gz, .zip or standalone binary into the container on boot and uses it as the runtime.

Startup command customization

The panel startup command stays fixed at bash /usr/local/bin/run.sh, the launcher is the stable interface. You customize what runs through variables, which the panel exposes in the Startup tab:

VariableDefaultEditableDescription
CUSTOM_COMMAND-yesCustom command to override the default runner entirely.
RUNNERautoyesRunner or engine to use (e.g. auto, node, bun, tsx, uvicorn, cargo, go). 'auto' resolves to the effective engine on first boot and is pinned; set to 'auto-detect' to re-arm.
MAIN_FILEautoyesThe main script or file to execute (leave 'auto' for smart detection). 'auto' resolves to the concrete entry point on first boot and is pinned; set to 'auto-detect' to re-arm.
PACKAGE_MANAGERautoyesPackage manager for dependency resolution (e.g. auto, npm, pnpm, yarn, bun, pip, cargo).

Override the runner entirely with CUSTOM_COMMAND, or nudge the detection: RUNNER=uvicorn forces the FastAPI path, MAIN_FILE picks the entry point, PACKAGE_MANAGER pins pnpm/uv/poetry/… The launcher announces the resolved command line in the console before exec.

Build & lifecycle hooks

VariableDefaultEditableDescription
BUILD_COMMAND-yesOptional build or compilation command (e.g. 'npm run build', 'cargo build --release').
PRE_RUN_COMMAND-yesCommand to execute before starting the main process (e.g. database migrations).
POST_RUN_COMMAND-yesCommand to execute when application stops or shuts down.
EXTRA_ARGS-yesExtra CLI arguments passed to the runner or executable.
DEV_MODE0yesEnable watch and hot-reload mode during development (1 = Enabled, 0 = Disabled).

Deploy from Git

Set GIT_REPO and the installer clones your repository on the install pass, then re-syncs it on every boot - fetching over a non-empty workspace instead of wiping, and printing the installed commit so latest-vs-old is verifiable in the console.

VariableDefaultEditableDescription
GIT_REPO-yesGit repository URL to clone and sync on startup.
GIT_BRANCHmainyesTarget branch to clone or track from the Git repository.
GIT_AUTH_TOKEN-yesPersonal Access Token for private Git repositories.

Token safety

GIT_AUTH_TOKEN is injected into the fetch URL server-side and redacted from console output and logs. Reinstall semantics: only committed, pushed files survive, a reinstall re-clones the branch.

Variable reference

All 41 startup variables from egg-programming-multi.json, grouped by role. “Editable = panel” rows are managed by the panel (port allocation) and not user-editable.

Core language selection

VariableDefaultEditableDescription
LANGUAGEautoyesTarget language or 'auto' for intelligent file auto-detection. After the first boot the detected value is pinned; set to 'auto-detect' to clear the pin and re-run detection.
RUNNERautoyesRunner or engine to use (e.g. auto, node, bun, tsx, uvicorn, cargo, go). 'auto' resolves to the effective engine on first boot and is pinned; set to 'auto-detect' to re-arm.
MAIN_FILEautoyesThe main script or file to execute (leave 'auto' for smart detection). 'auto' resolves to the concrete entry point on first boot and is pinned; set to 'auto-detect' to re-arm.
PACKAGE_MANAGERautoyesPackage manager for dependency resolution (e.g. auto, npm, pnpm, yarn, bun, pip, cargo).
RUNTIME_VERSIONlatestyesVersion of the primary runtime: 22 | 22.1 | 22.1.4 or keywords latest, stable, lts, alpha, beta, rc, preview, nightly. Validated & resolved from live upstream feeds. 'latest' resolves once, then pins to the exact version; set to 'auto-detect' to re-resolve.
LANGUAGE_VERSION-yesDB_VERSION-style alias: pinned version (e.g. 22.1, 3.12, 21) or keywords latest/stable/lts/nightly. Acts as RUNTIME_VERSION fallback.
CUSTOM_COMMAND-yesCustom command to override the default runner entirely.
CUSTOM_INSTALL_COMMAND-yesCustom dependency install command that replaces the automatic one (e.g. 'bun install', 'pnpm install --no-frozen-lockfile'). Leave empty for auto-detection.
BUILD_COMMAND-yesOptional build or compilation command (e.g. 'npm run build', 'cargo build --release').
EXTRA_ARGS-yesExtra CLI arguments passed to the runner or executable.

Runtimes & companions

VariableDefaultEditableDescription
EXTRA_RUNTIMESautoyesComma-separated extra toolchains to enable (e.g. 'python,java,go' or 'none').
SKIP_RUNTIMESnoneyesComma-separated runtimes to skip/disable (e.g. 'python,java' or 'none').
NODE_GYP_SUPPORT1yesInstall Python 3 + build tools for native node addon compilation (1 = Enabled, 0 = Disabled).
SKIP_PYTHON0yesPrevent the Python companion toolchain from being installed (1 = Skip, 0 = Allow).
AUTO_INSTALL_DEPS1yesAutomatically install missing dependencies on container boot (1 = Enabled, 0 = Disabled).
STARTER_TEMPLATEemptyyesStarter project template if workspace is empty (e.g. nodejs, bun, python, golang, rust).

Process supervision & lifecycle

VariableDefaultEditableDescription
SUPERVISORautoyesMulti-process mode: auto (Procfile when present + language auto), procfile (force), single (never). Powers multi-layer apps in one container.
PROCFILE_RESTART1yesRestart crashed Procfile processes with linear backoff (1 = Enabled, 0 = Disabled). Gives up after 5 attempts per process.
PROCFILE_LOGS0yesMirror each supervised process stream to .logs/processes/<name>.log (1 = Enabled, 0 = Console only).
AUTO_RESTART0yesAutomatically restart process on unexpected crash (1 = Enabled, 0 = Disabled).
RESTART_DELAY3yesDelay in seconds before attempting to auto-restart.
DEV_MODE0yesEnable watch and hot-reload mode during development (1 = Enabled, 0 = Disabled).
PRE_RUN_COMMAND-yesCommand to execute before starting the main process (e.g. database migrations).
POST_RUN_COMMAND-yesCommand to execute when application stops or shuts down.
CLEAN_BUILD_CACHE1yesPurge compiler caches after build to save disk space (1 = Enabled, 0 = Disabled).
MEMORY_AUTO_TUNE1yesAuto-tune GC & memory limits to prevent container OOM (1 = Enabled, 0 = Disabled).

Git & networking

VariableDefaultEditableDescription
SERVER_PORT{{server.build.default.port}}panelPrimary network port allocated by the panel.
AUTO_ENV_INJECT1yesEnsure .env has correct PORT and HOST=0.0.0.0 bindings (1 = Enabled, 0 = Disabled).
GIT_REPO-yesGit repository URL to clone and sync on startup.
GIT_BRANCHmainyesTarget branch to clone or track from the Git repository.
GIT_AUTH_TOKEN-yesPersonal Access Token for private Git repositories.
EXTRA_URLS-yesAdditional files or archives to download on boot (URL or dest|URL).

Health checks & console

VariableDefaultEditableDescription
HEALTH_CHECK_PATH-yesHTTP path probed after boot (e.g. /healthz). Empty = disabled. Probe targets http://127.0.0.1:$SERVER_PORT<path>.
HEALTH_STRICT0yesExit the server non-zero when the health check fails (1 = Strict, 0 = Warn only).
PANEL_STOP_WATCHERautoyesWatch console input for the panel stop command (^C, stop, kill...) so Stop works on Wings/Feather-style daemons that send stop as console text (auto = enabled except when stdin must stay with the app; 0 = disabled, 1 = forced on).
CLI_THEMEprogyesConsole output theme for the launcher (prog = Prog-Language Eggs agent theme, classic = legacy PotenFYR theme).
CLI_BANNER_GRADIENTautoyesConsole banner color gradient: auto (random each boot), citrus, aurora, sunset, ocean, candy, spectrum, or none.
DEBUG0yesEnable verbose script debug output (1 = Enabled, 0 = Disabled).
EGG_UPDATE_URLhttps://raw.githubusercontent.com/PotenFYR-Studios/Prog-Language-Eggs/master/egg-programming-multi.jsonyesURL checked on every startup for egg/launcher self-updates. Points at the PotenFYR egg JSON by default; when it changes, the launcher scripts are refreshed automatically. Can also point at a raw .sh URL to update the launcher directly.
AUTO_UPDATE_EGG1yesCheck EGG_UPDATE_URL on startup and self-update the launcher when the upstream egg changed (1 = enabled, 0 = disabled).
CUSTOM_RUNTIME_URL-yesDirect URL to a custom runtime (.tar.gz, .zip or standalone binary) downloaded into the container on boot.