Six ways to run your app
A native runtime for familiar apps, Compose for custom stacks.
Web and Worker support
| Service type | Supported runtimes | Readiness |
|---|---|---|
| Web/API | Node.js, Bun, Go, Python, PHP, Compose | Application port and configured HTTP checks; optional project domain |
| Worker | Node.js, Bun, Go, Python script | Host process stability; no Portal port or HTTP probe |
The runtime matrix below describes Web execution. Worker preparation never starts the candidate consumer. PHP, Compose, Python ASGI/WSGI and one-shot Workers are unsupported.
Runtime contracts
| Runtime | Configure | Execution |
|---|---|---|
| Node.js | Package scripts + Node 20/22/24/26 | Dependencies, optional build, candidate HTTP, systemd. |
| Bun | Package scripts | Bun install, optional build, candidate HTTP, systemd. |
| Go | go.mod + main package | Compile a binary, candidate HTTP, systemd. |
| Python | Script / ASGI / WSGI + dependency source | Per-release venv installed by the host helper. |
| PHP | Artisan / Spark / PHP server + document root | Optional Composer install as project user; helper activation. |
| Docker Compose | Compose file + web service + port | Validated Compose build/start and host health check. |
Node and Bun dependencies
Node selects npm or pnpm from packageManager and the lockfile. npm uses npm ci; Bun uses bun install --frozen-lockfile. npm/Bun can retry a stale lockfile with an isolated unlocked install; pnpm fails on a stale frozen lockfile. The synced checkout is not rewritten. Prisma preparation follows dependency installation, before the optional build. Native Web apps must honor the assigned port; Workers have no Portal-assigned port.
Set up pnpm · Prepare Prisma and fix deployment errors
Trusted Compose projects
This is separate from running Portal itself in Docker. Install Docker Engine + Compose through Setup when needed. Choose a repository-relative YAML and a web service that publishes the configured project port. The helper rejects privileged containers, host network/PID/IPC and host bind mounts. Builds occur during host activation. These policies are guardrails, not hostile-code isolation.