Pythonator

Languages

Pythonator runs a service with the language’s own tools, found on your PATH. It never looks in the project folder for them, so a project can’t put its own python or node in front of the real one.

Language Found as A file runs as With no file Install packages Packages go to Container image
Python python3, python (Windows: python, py) python -u bot.py   venv, then pip .venv in the project python:3.13-slim
Node.js node node server.js npm start npm ci / npm install / pnpm / yarn node_modules node:22-slim
Bun bun bun run index.ts   bun install node_modules oven/bun:1
Deno deno deno run --allow-all main.ts     Deno’s cache, private to the sandbox denoland/deno:2
Go go go run main.go go run . go mod download the Go module cache golang:1.24
Java java java -jar app.jar, java Main.java     your build’s own folders eclipse-temurin:21
.NET dotnet dotnet run --project app.csproj dotnet run dotnet restore the NuGet cache mcr.microsoft.com/dotnet/sdk:9.0
Ruby ruby ruby main.rb   bundle install vendor/bundle ruby:3.4-slim
PHP php php index.php   composer install vendor php:8.4-cli
Rust cargo   cargo run --release cargo fetch target and the Cargo cache rust:1-slim
Shell bash, sh bash run.sh       debian:stable-slim
PowerShell pwsh, powershell pwsh -NoProfile -File run.ps1       mcr.microsoft.com/powershell
Custom command the first word exactly what you type        

Arguments go after the file. A .ts file picks Bun when Bun is installed, Deno when only Deno is; you can change it in the Language list.

Python and virtual environments

Pythonator uses the project’s own virtual environment when it has one, in .venv, venv or env: the service runs with that environment’s Python, and its packages are there. Install packages creates .venv when there is none, and remakes it when it is broken (for example when the Python it was made from was uninstalled).

The environment check before each start warns about a project with a requirements.txt or pyproject.toml but no virtual environment.

A Python service in a sandbox can read its .venv and the Python installation it was made from, and nothing else of yours.

Deno

Deno has its own permission prompts. A background service can’t answer them, so Pythonator runs Deno with --allow-all and lets its own sandbox do the limiting. Pass Deno’s flags yourself under Arguments (or as a custom command) if you want both.

A language that isn’t in the list

Use Custom command: the program and its arguments, as you would type them, for example ./target/release/mybot --config prod.toml or elixir --no-halt app.exs. A sandboxed custom command can read the folder its program is installed in.

To add a language to the list for everyone, or in your fork, see Adding a language. It is one entry in a table.