Render
Deploy a Fabric Harness HTTP server to Render as a Web Service via Blueprint.
Render is a one-click PaaS that runs containers (Web Services), Cron Jobs, and Postgres. The Fabric Harness Render target emits a Blueprint (render.yaml) plus a Dockerfile so you can deploy with no Render-specific code.
Quickstart
fabric-harness build --target render
# Output: .fabricharness/build/render/{Dockerfile, render.yaml, RENDER_DEPLOY.md, dist/, ...}Push the bundle to a Git repo, then create a new Web Service on Render pointing at it. Render auto-detects render.yaml and provisions the service.
What ends up in the bundle
| File | Purpose |
|---|---|
Dockerfile | Standard Node 22 container image. |
render.yaml | Blueprint declaring a runtime: docker Web Service with /health healthcheck. |
RENDER_DEPLOY.md | Per-bundle deployment notes (env vars, Postgres setup). |
dist/server.mjs | The Fabric Harness HTTP server entry point. |
Required environment variables
Set these in the Render dashboard (or via Blueprint env groups):
OPENAI_API_KEY(or other provider keys, depending on your model config)DATABASE_URL— Postgres DSN (Render's managed Postgres works directly)FABRIC_HARNESS_SESSION_STORE=postgres
Why Postgres for the session store?
Render restarts containers and resets the local disk on every redeploy. The default FileSessionStore will lose state. Provision a Render Postgres instance and use PostgresSessionStore (selected via FABRIC_HARNESS_SESSION_STORE=postgres + DATABASE_URL).
For session histories you can afford to lose (e.g. one-shot CI agents), InMemorySessionStore is fine — no Postgres required.
Health check
Render probes /health by default; the Fabric Harness HTTP server exposes that route automatically. No code changes needed.
When to use Render vs other targets
| Pick Render when… | Pick another target when… |
|---|---|
| You want one-click deploys without managing Kubernetes / containers | You need durable workflows → use --target temporal-worker |
| Your agent is HTTP-shaped (webhook, REST) | Your agent runs on the edge → use --target cloudflare |
| You want managed Postgres alongside the app | You're on Azure / AWS / GCP → use --target aca / --target aks / Docker on ECS |
Cost sanity
Render's free tier sleeps after 15 minutes of inactivity. For production, use Starter (always-on) or higher. Per-call cost telemetry shows up in fh metrics --breakdown so you can size your plan correctly.