Render provider connection (hosted TypeScript service)
Keycli can perform a real Render env var mutation from the hosted control plane when the workspace has a connected Render ProviderConnection.What is live now
- ✅ store a Render ProviderConnection
- ✅ test/validate a Render connection from the hosted API
- ✅ resolve a credential ref at apply time
- ✅ mutate a Render service env var through the Render API
- ✅ expose Render readiness through authenticated
GET /v1/capabilities
What is not the recommended demo lane
- Render is live, but it is not the canonical morning demo path.
- The safest live demo remains the preview-only Vercel flow in
docs/VERCEL.md. - Render deploy/restart flows are still not implemented.
Configure a Render connection
Start the hosted API:docs/DEMO.md), then create a Render connection.
Recommended: use an env-backed secret ref so Keycli never stores the raw token in the API object.
If the token should only be used for one Render service, bind it explicitly with scope.
- Keycli stores only the
credentialRefin the connection record. GETendpoints return redacted credential refs.- In dev/test, you can also pass
credentialdirectly and Keycli will store it through the configuredSecretStore.
Test the connection
This validates the token and, if you passserviceId, confirms service access for the live path.
reason: "render_scope_mismatch" and leaves live execution unavailable for that target.
Live env var mutation path
When a plan targets Render and the workspace has a connected Render connection, Keycli marks the plan as:plan.execution.mode: "provider-api"
render:rotate-secret steps Keycli calls the Render API:
GET /v1/services/:serviceId/env-varsPUT /v1/services/:serviceId/env-vars
Workspace readiness
Inspect authenticated capabilities:Safety / redaction
- Secrets are retrieved via
SecretStore.getSecret(ref)at apply time. - Secret values are not stored in plan diffs, run events, or audit logs.
- Connection reads return redacted
credentialRefvalues.