Products

Workers

Heavy and long-running jobs in 15 runtimes with auto-detection, system packages and a gallery of ready-to-deploy templates.

Workers (Dashboard → project → Workers) run code that does not fit an Edge Function: long jobs, big dependencies, headless browsers, ffmpeg, JVM or .NET services. You upload source (or pick a template), we build an image on the data-plane host and run it in a gVisor-isolated container wired to your database. Types: http (public HTTPS URL), background, cron and queue (pgmq consumer). See the Edge Functions page for short serverless invocations.

Runtimes and auto-detection

Pass runtime: "auto" (or pick Detect automatically in the wizard) and we choose the runtime from your files — a pure function, covered by unit tests. Priority: Dockerfile → mix.exs → Cargo.toml → go.mod → Maven/Gradle → *.csproj → composer.json → Gemfile → Deno → Node/Bun → Python. A Python app with a frontend package.json stays Python when it has main.py/app.py and no start script.

RuntimeDetected fromInstall / buildStart
python3.11 / 3.12 / 3.13requirements.txt, pyproject.toml, Pipfile, *.pyuv pip install (fast installs)main.py · uvicorn / gunicorn when present · Procfile
node20 / node22 / node24package.json (engines.node)npm ci / pnpm / yarn, npm run build, prunenpm start · index.js · server.js
bunbun.lock, bunfig.toml, packageManagerbun installbun run index.ts
deno2deno.json, deno.lockdeno cachedeno task start · deno run -A main.ts
go1.22 – go1.25go.mod (go directive)go build (static, multi-stage, cmd/*)/app/server
rustCargo.tomlcargo build --release (multi-stage, cached registry)/app/server
java21pom.xml, build.gradle(.kts)Maven or Gradle → fat JAR → JRE 21java -jar app.jar (-Dserver.port=$PORT)
dotnet8 / dotnet9*.csproj, *.slndotnet publish (multi-stage)dotnet <project>.dll (ASPNETCORE_URLS)
php8.3composer.jsoncomposer install on FrankenPHP (Laravel, Symfony, Octane)Caddy php_server on $PORT
ruby3.3Gemfile, config.rubundle install (deployment)puma on $PORT (Rails, Sinatra, Rack)
elixirmix.exsmix release (multi-stage)bin/<app> start
dockerfileDockerfileyour own build (uid 10001, read-only rootfs)your CMD

A Procfile (web: … for http workers, worker: … otherwise) or the command field overrides the start command. Containers run as uid 10001 with a read-only root filesystem; /tmp (128 MB) is writable and HOME=/tmp. The presets already redirect framework caches (Rails tmp/ and log/, Laravel storage/, Deno, npm, uv) there. The port comes from $PORT.

System packages

List whitelisted packages in the wizard, in worker.json ("packages": ["ffmpeg","chromium"]), in the API (packages) or in an Aptfile next to your code. Allowed: ffmpeg, chromium, tesseract, poppler, imagemagick, ghostscript, pandoc, libreoffice, wkhtmltopdf, weasyprint, fonts, libvips, opencv, graphviz, git, curl, jq, unzip, sqlite, postgresql-client, libpq, build-tools. Common Python dependencies are detected automatically: weasyprint, pytesseract, ffmpeg-python, pdf2image, opencv-python, psycopg2. When playwright is in requirements.txt or package.json, the build also runs playwright install --with-deps chromium.

Template gallery

35 ready-to-deploy workers with working code, documented environment variables and the Supabase features they use (database, Auth, Storage, pgmq queues, Realtime, AI Gateway, Email, pgvector). Open Workers → Template gallery, filter by language, category or Supabase feature and press Deploy: templates without required secrets deploy immediately, others open the wizard pre-filled (with optional setup SQL such as tables and queues).

The same catalogue is available from the terminal and over MCP:

hostbase workers templates            # list (filters: --language Python --category ai)
hostbase workers init --template stripe-webhook   # writes workers/stripe-webhook/ + worker.json + .env.example
hostbase workers deploy stripe-webhook             # builds and rolls out
hostbase workers deploy-template ocr-tesseract --name ocr   # one command, no local files

GET  /api/v1/worker-templates?q=ocr&language=Python
GET  /api/v1/worker-templates/{id}                    # includes source files
POST /api/v1/projects/{ref}/workers/from-template     # { template, name?, env?, size?, run_setup_sql? }

MCP tools: list_worker_templates and deploy_worker_template; deploy_worker accepts runtime: "auto" and packages.

All templates
  • fastapi — FastAPI (HTTP) (Python, http)
  • pgmq-consumer — Konsument kolejki pgmq (Python) (Python, queue)
  • node-cron — Zadanie cron (Node.js) (Node.js, cron)
  • go-http — Serwer HTTP (Go) (Go, http)
  • bun-http — Serwer HTTP (Bun) (Bun, http)
  • cron-backup-s3 — Backup bazy do S3 (cron) (Python, cron)
  • csv-excel-import — Import CSV/Excel do Postgresa (FastAPI) (Python, http)
  • data-sync-api — Synchronizacja z zewnętrznym API (cron) (Python, cron)
  • deno-oak-api — API Oak (Deno 2) (Deno, http)
  • discord-bot — Bot Discord (discord.js) (Node.js, background)
  • dotnet-minimal-api — API CRUD (.NET 9 Minimal API) (.NET, http)
  • elixir-plug-api — API (Elixir, Plug + Bandit) (Elixir, http)
  • email-digest — Dzienny digest e-mail (cron) (Python, cron)
  • embeddings-worker — Worker embeddingów (pgmq + pgvector) (Python, queue)
  • fastapi-supabase-crud — API CRUD (FastAPI) (Python, http)
  • flask-webhook-receiver — Odbiornik webhooków (Flask) (Python, http)
  • go-grpc-service — Usługa gRPC (Go) (Go, http)
  • hono-bun-api — API Hono (Bun) (Bun, http)
  • langgraph-agent — Agent LangGraph (FastAPI) (Python, http)
  • laravel-api — API CRUD (Laravel 12) (PHP, http)
  • media-ffmpeg-pillow — Miniatury i transkodowanie (ffmpeg + Pillow) (Python, http)
  • nestjs-api — API NestJS (TypeScript) (Node.js, http)
  • ocr-tesseract — OCR (Tesseract) (Python, http)
  • pdf-weasyprint — Generator PDF (WeasyPrint) (Python, http)
  • pgmq-tasks — Zadania w tle na pgmq (Celery-like) (Python, queue)
  • rag-api — RAG API (FastAPI + pgvector) (Python, http)
  • rails-api — API CRUD (Rails 7.2) (Ruby, http)
  • report-to-storage — Raport tygodniowy do Storage (cron) (Python, cron)
  • rust-axum-api — API CRUD (Rust, Axum) (Rust, http)
  • scraper-playwright — Scraper stron (Playwright) (Python, http)
  • slack-bot — Bot Slack (Socket Mode) (Node.js, background)
  • spring-boot-api — API CRUD (Spring Boot) (Java, http)
  • stripe-webhook — Webhook Stripe (FastAPI) (Python, http)
  • telegram-bot — Bot Telegram (long polling) (Python, background)
  • websocket-server — Serwer WebSocket (ws) (Node.js, http)

Build times

One build at a time per host; times include pulling base images on a cold cache and dependency downloads (measured on the data-plane VM at load average 17–23 while other builds and customer databases were running; builds are capped at 2 CPU / 2 GB). Rebuilds reuse layers and the Cargo / Maven / NuGet caches.

TemplateRuntimeBuild timeImageNotes
hono-bun-apibun11 s331 MBbun install
fastapi-supabase-crudpython3.1215 s297 MBuv pip install
deno-oak-apideno225 s290 MBdeno cache
pdf-weasyprintpython3.1255 s480 MB+ apt: Pango, fonts
dotnet-minimal-apidotnet962 s331 MBdotnet publish
spring-boot-apijava2175 s515 MBMaven → fat JAR → JRE
ocr-tesseractpython3.1277 s478 MB+ apt: tesseract (pol, eng), poppler
nestjs-apinode22115 s629 MBnpm install + nest build + prune
go-grpc-servicego1.24147 s37 MBstatic binary on Alpine
scraper-playwrightpython3.12170 s2.1 GBplaywright install --with-deps chromium
laravel-apiphp8.3187 s1.0 GBcomposer install on FrankenPHP (cold)
elixir-plug-apielixir211 s587 MBmix release
rails-apiruby3.3211 s401 MBbundle install (multi-stage)
rust-axum-apirust284 s135 MBcargo build --release, ~250 crates; 28 s after a code change (dependencies are a cached layer)

Usage and billing

Workers are billed per replica-hour of runtime, expressed in Small-equivalent hours (Small = 1, Medium = 2, Large = 8). Paid plans include a monthly allowance (Pro: 750 h). Settings → Usage shows a Workers panel with the last 7 days and the plan allowance; the organization usage page shows the monthly total and overage.