Render is a cloud platform that supports infrastructure-as-code via aDocumentation Index
Fetch the complete documentation index at: https://docs.output.ai/llms.txt
Use this file to discover all available pages before exploring further.
render.yaml Blueprint. You define your services in a single file, connect your GitHub repo, and Render handles the rest.
Here’s what we’ll do:
- Create the worker Dockerfile — Add the
ops/directory and Dockerfile to your repo - Create the Render Blueprint — Define the API, worker, and optional Redis in
render.yaml - Deploy — Connect your repo and provision all services
- Verify — Confirm everything is connected end-to-end
Project structure
After runningoutput init, your repository looks like this:
ops/ directory containing a Dockerfile for the worker, and a render.yaml Blueprint at the root.
Step 1: Create the worker Dockerfile
Create theops/ directory and add ops/render.Dockerfile for your worker:
ops/render.Dockerfile
render.yaml Blueprint next and commit everything together.
Step 2: Create the Render Blueprint
Render’s Blueprint Spec lets you define your entire infrastructure in a singlerender.yaml file. When you connect your repo, Render reads this file and provisions all services automatically.
Create render.yaml at the root of your repository:
render.yaml
Adding Redis for remote tracing
For production debugging, you can add Redis as a Render service and reference it usingfromService. This keeps everything in one Blueprint and Render handles the connection string automatically:
render.yaml
fromService reference automatically injects the Redis connection string — no need to manage it manually. See Advanced configuration for more on remote tracing.
Blueprint key concepts
Service types:type: web— The API. Render assigns it a public URL and routes HTTP traffic to it.type: worker— The worker. No public URL, just runs your Dockerfile.
sync: false:
Variables marked sync: false are secrets. Render prompts you to enter their values when you first deploy the Blueprint. They won’t be committed to your repo.
generateValue: true for tokens that just need to be a random secure string. Render generates and stores the value for you.
API keys and credentials in production
Your workflows need API keys (Anthropic, OpenAI, etc.) to run. Instead of pasting each key into Render as a separate secret, Output lets you store all your keys in one encrypted file that lives in your repo. Render only needs one secret — the master key that unlocks the file. Here’s how it works:1. Put all your API keys into encrypted credentials
If you haven’t already, initialize credentials and add your keys:config/credentials/production.yml.enc— the encrypted file. Commit this to your repo. It’s encrypted and safe to push.config/credentials/production.key— the master key. Never commit this. It’s already in.gitignore.
2. Add the master key to Render
Copy the contents ofconfig/credentials/production.key and add it to your worker service in Render as a secret env var:
3. Reference keys in your Blueprint with credential:
In render.yaml, instead of setting each API key as a separate secret, pass a credential: reference as a plain string. The SDK resolves these automatically when the worker starts:
credential:, decrypts the credentials file using the master key, and replaces the values with the real API keys — before any workflow code runs.
The
credential: pattern works for any env var the AI SDK or your code reads from process.env. Just add the key to your encrypted credentials and reference it in render.yaml.Rotating a key
To change an API key in production:Step 3: Deploy
- Go to Render’s dashboard and click New → Blueprint
- Connect your GitHub repository
- Render detects
render.yamland shows the services it will create - Enter values for any
sync: falsesecrets when prompted - Click Apply to provision all services
Render assigns a
.onrender.com subdomain to web services automatically. You can add a custom domain in the service settings.Step 4: Verify
Once both services are running, verify the API is up and the worker has registered your workflows.- Check the API is healthy:
200 OK response.
- Confirm the worker has connected and your workflows are registered via the catalog endpoint:
- Run a workflow end-to-end:
Tuning worker concurrency
For high-throughput workloads, you can tune how aggressively the worker pulls and executes tasks from Temporal. Add these to your worker’senvVars:
Monitoring
Render dashboard
Render provides built-in metrics for:- CPU and memory usage per service
- Deploy history and logs
Temporal Cloud
Monitor workflow executions in the Temporal Cloud UI:- Active workflows
- Failed executions
- Workflow history
Traces
If you’ve enabled remote tracing, traces are stored in Redis and optionally uploaded to S3.Scaling considerations
| Scenario | Recommendation |
|---|---|
| Low traffic | 1 worker, 1 API instance |
| Moderate traffic | 2-5 workers, 2 API instances |
| High traffic | 5-30 workers, 3+ API instances |
| Burst workloads | Configure aggressive auto-scaling thresholds (40-50% CPU/memory) |
Troubleshooting
Worker not picking up jobs
- Check the Temporal UI for pending workflows
- Verify
TEMPORAL_ADDRESS,TEMPORAL_NAMESPACE, andTEMPORAL_API_KEYare correct - Check worker logs in Render for connection errors
Trace files not appearing
- Verify
OUTPUT_REDIS_URLis set and Redis is running - Check
OUTPUT_TRACE_REMOTE_ON=trueis set - For S3, verify AWS credentials have write access to the bucket
Out of memory errors
- Increase
NODE_OPTIONSmemory allocation in the Dockerfile - Upgrade Render plan for more resources
- Check for memory leaks in workflow code (large payloads, unbounded arrays)
Credentials not found (MissingCredentialError)
- Verify
config/credentials/production.yml.encexists in your repo (not justconfig/credentials.yml.enc— the Dockerfile setsNODE_ENV=production, which makes the SDK look for the scoped path) - Verify
OUTPUT_CREDENTIALS_KEY_PRODUCTIONis set in Render with the correct master key - Verify the Dockerfile includes
COPY config/ ./config/— without it, the encrypted file never reaches the container - If using
credential:references for API keys (e.g.ANTHROPIC_API_KEY=credential:anthropic.api_key), make sure the encrypted credentials file actually contains that key path
Build failures
- Check Dockerfile path matches
dockerfilePathinrender.yaml - Verify all dependencies are in
package.json - Review build logs in the Render dashboard