Add Render Blueprint for app + realtime + cron deployment - #6800
Add Render Blueprint for app + realtime + cron deployment#6800glennrm27 wants to merge 3 commits into
Conversation
Mirrors docker-compose.prod.yml topology (shared Postgres/Redis) for one-click deploy via Render's Blueprint feature. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Someone is attempting to deploy a commit to the Sim Team on Vercel. A member of the Team first needs to authorize it. |
PR SummaryLow Risk Overview Env wiring uses groups for shared secrets ( The file documents manual post-sync steps: enable pgvector, fill Reviewed by Cursor Bugbot for commit 70c5f80. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryThis PR adds a Render Blueprint for deploying the app, realtime service, cron worker, migrations, Postgres, and Redis. It also centralizes generated secrets and dashboard-supplied storage and URL configuration.
Confidence Score: 4/5This PR should not merge until the internal realtime and app service references are converted into valid absolute HTTP URLs. The Blueprint passes scheme-less Files Needing Attention: render.yaml
|
| Filename | Overview |
|---|---|
| render.yaml | Adds the complete Render deployment topology, but its internal service references provide bare host-and-port values where app and cron consumers require absolute HTTP URLs. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
Browser[Browser] --> App[sim-app]
Browser --> Realtime[sim-realtime]
App --> DB[(Postgres)]
App --> Redis[(Redis)]
App --> Realtime
Realtime --> DB
Realtime --> Redis
Cron[sim-cron] --> App
Migrations[sim-migrations] --> DB
Reviews (1): Last reviewed commit: "Add Render Blueprint for app + realtime ..." | Re-trigger Greptile
| - key: SIM_AGENT_API_URL | ||
| sync: false | ||
| # Internal (server-side) address of sim-realtime. | ||
| - key: SOCKET_SERVER_URL | ||
| fromService: | ||
| type: web |
There was a problem hiding this comment.
Scheme-less internal service URLs
When sim-app sends a realtime notification or sim-cron invokes a scheduled endpoint, Render supplies these hostport references as bare host:port values. The consumers interpolate them directly into fetch and curl URLs without adding a scheme, causing realtime notifications and scheduled processing to fail URL parsing.
| # sim-app only, but kept here so it's generated once, in one place. | ||
| # Cannot be changed later without losing stored credentials. | ||
| - key: ENCRYPTION_KEY | ||
| generateValue: true |
There was a problem hiding this comment.
Invalid auto-generated encryption key
High Severity
ENCRYPTION_KEY uses generateValue: true, but Render generates a base64 256-bit secret (~44 chars), not the 64-character hex string the app requires. Credential encrypt/decrypt will throw at runtime once anything tries to use ENCRYPTION_KEY.
Reviewed by Cursor Bugbot for commit ddae21f. Configure here.
| fromService: | ||
| type: web | ||
| name: sim-realtime | ||
| property: hostport |
There was a problem hiding this comment.
Internal URLs missing HTTP scheme
High Severity
SOCKET_SERVER_URL and SIM_URL are wired from hostport, which is bare host:port with no scheme. Compose and Helm use full http://… URLs; server fetch and cron curl need a scheme, so realtime notifications and all scheduled jobs will fail to reach their targets.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit ddae21f. Configure here.
Render's Blueprint schema has no service-level envVarGroups field — groups are attached per-entry inside a service's envVars list via fromGroup, not with a separate top-level key on the service. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Render removed the legacy Starter/Standard/Pro Postgres plan names for new databases in favor of Basic/Pro/Accelerated tiers named by RAM. basic-4gb is the closest match to the old 'standard' size. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
There are 3 total unresolved issues (including 2 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 70c5f80. Configure here.
| # replaced Starter/Standard/Pro with Basic/Pro/Accelerated tiers named by | ||
| # RAM. basic-4gb is the closest new-tier match to the old 'standard' size; | ||
| # resize up (pro-*) or down (basic-1gb/basic-256mb) as load requires. | ||
| plan: basic-4gb |
There was a problem hiding this comment.
Wrong Postgres plan for Standard
Medium Severity
The Blueprint replaces legacy standard with basic-4gb, and the comment calls that the closest match. Legacy Standard is 1 GB RAM; basic-1gb is the RAM- and price-aligned successor, while basic-4gb matches legacy Pro (4 GB). One-click deploys get roughly 4× the intended DB cost and capacity relative to the old plan this change claims to replace.
Reviewed by Cursor Bugbot for commit 70c5f80. Configure here.


Mirrors docker-compose.prod.yml topology (shared Postgres/Redis) for one-click deploy via Render's Blueprint feature.
Summary
Brief description of what this PR does and why.
Fixes #(issue)
Type of Change
Testing
How has this been tested? What should reviewers focus on?
Checklist
Screenshots/Videos