Produkty

Workers

Ciężkie i długo działające zadania w 15 środowiskach: autodetekcja, pakiety systemowe i galeria gotowych szablonów.

Workers (Panel → projekt → Workers) uruchamiają kod, który nie mieści się w Edge Function: długie zadania, duże zależności, przeglądarki headless, ffmpeg, usługi JVM i .NET. Wgrywasz kod (albo wybierasz szablon), my budujemy obraz na hoście danych i uruchamiamy go w izolowanym kontenerze gVisor z dostępem do Twojej bazy. Typy: http (publiczny adres HTTPS), background, cron i queue (konsument pgmq).

Środowiska i autodetekcja

Podaj runtime: "auto" (w kreatorze: Wykryj automatycznie), a rozpoznamy środowisko po plikach — to czysta funkcja pokryta testami jednostkowymi. Kolejność: Dockerfile → mix.exs → Cargo.toml → go.mod → Maven/Gradle → *.csproj → composer.json → Gemfile → Deno → Node/Bun → Python.

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

Procfile (web: … dla http, worker: … dla pozostałych) lub pole command nadpisuje komendę startową. Kontenery działają jako uid 10001 z systemem plików tylko do odczytu; zapisywalny jest /tmp (128 MB), HOME=/tmp. Presety przekierowują tam cache frameworków (Rails tmp/ i log/, Laravel storage/, Deno, npm, uv). Port podaje zmienna $PORT.

Pakiety systemowe

Wybierz pakiety z białej listy w kreatorze, w worker.json ("packages": ["ffmpeg","chromium"]), w API (packages) albo w pliku Aptfile obok kodu. Dozwolone: ffmpeg, chromium, tesseract, poppler, imagemagick, ghostscript, pandoc, libreoffice, wkhtmltopdf, weasyprint, fonts, libvips, opencv, graphviz, git, curl, jq, unzip, sqlite, postgresql-client, libpq, build-tools. Typowe zależności Pythona wykrywamy same: weasyprint, pytesseract, ffmpeg-python, pdf2image, opencv-python, psycopg2. Gdy w requirements.txt lub package.json jest playwright, budowanie uruchamia też playwright install --with-deps chromium.

Galeria szablonów

35 gotowych workerów z działającym kodem, opisem zmiennych środowiskowych i listą funkcji Supabase, z których korzystają (baza, Auth, Storage, kolejki pgmq, Realtime, AI Gateway, Email, pgvector). Otwórz Workers → Galeria szablonów, filtruj po języku, kategorii lub funkcji Supabase i kliknij Wdróż: szablony bez wymaganych sekretów wdrażają się od razu, pozostałe otwierają kreator z wypełnioną konfiguracją (oraz opcjonalnym SQL tworzącym tabele i kolejki).

hostbase workers templates            # lista (filtry: --language Python --category ai)
hostbase workers init --template stripe-webhook   # tworzy workers/stripe-webhook/ + worker.json + .env.example
hostbase workers deploy stripe-webhook             # buduje i wdraża
hostbase workers deploy-template ocr-tesseract --name ocr   # jedno polecenie, bez plików lokalnych

GET  /api/v1/worker-templates?q=ocr&language=Python
GET  /api/v1/worker-templates/{id}                    # razem z plikami źródłowymi
POST /api/v1/projects/{ref}/workers/from-template     # { template, name?, env?, size?, run_setup_sql? }

Narzędzia MCP: list_worker_templates i deploy_worker_template; deploy_worker przyjmuje runtime: "auto" oraz packages.

Wszystkie szablony
  • 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)

Czasy budowania

Jedno budowanie naraz na hoście; czasy obejmują pobranie obrazów bazowych przy zimnym cache i zależności (zmierzone na VM danych przy obciążeniu 17–23 — równolegle działały inne budowania i bazy klientów; budowanie ograniczone do 2 CPU / 2 GB). Kolejne budowania korzystają z warstw i cache Cargo / Maven / NuGet.

SzablonRuntimeCzas budowaniaObrazUwagi
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)

Zużycie i rozliczenie

Workery rozliczamy za godziny pracy replik w przeliczeniu na instancję Small (Small = 1, Medium = 2, Large = 8). Płatne plany zawierają miesięczny limit (Pro: 750 godz.). Ustawienia → Zużycie pokazuje panel Workery z ostatnimi 7 dniami i limitem planu; strona zużycia organizacji — sumę miesięczną i nadwyżkę.