Vercel provider connection (hosted TypeScript service)
This is the canonical live demo path for Keycli right now. It is the safest honest way to prove that the hosted control plane can really mutate infrastructure:- single provider
- preview environment
- no deploy step
- low risk under current policy
What is live now
- ✅ store a Vercel ProviderConnection
- ✅ test/validate that connection from the hosted API
- ✅ surface workspace-scoped live readiness through authenticated
GET /v1/capabilities - ✅ upsert/rotate Vercel env vars through the Vercel API
- ✅ redeploy the latest Vercel deployment when a plan includes a deploy step
- ✅ participate in mixed-provider execution when every provider in the plan is connected and supported
What falls back to simulation
If the workspace does not have a valid connected Vercel ProviderConnection, Keycli stays honest and returns:plan.execution.mode: "local-provider-simulation"- a reason such as:
missing_vercel_connectionconnection_needs_reauthconnection_invalid
Configure a Vercel connection
Start the hosted API:scope.
Test the connection
This validates the token and, if you passprojectIdOrName, confirms project access for the live path.
reason: "vercel_scope_mismatch" and leaves live execution unavailable for that target.
Inspect workspace readiness
Canonical live demo: preview-only Vercel flow
One-command version
Terminal 1:- bootstraps a workspace
- issues an agent token
- creates the Vercel connection
- tests it against your project
- prints workspace readiness
- creates a preview-only Vercel plan
- verifies the plan is in
provider-apimode - applies it and waits for the run to finish
Manual curl flow
Create an agent token:plan.risk.level: "low"- response
nextAction: "apply_plan" plan.execution.mode: "provider-api"plan.execution.reason: "vercel_connection_ready"
Deploy step behavior
WhendeployAfter: true, Keycli adds a vercel:deploy step.
In provider-api mode this performs a real Vercel redeploy by:
- resolving the project
- looking up the latest deployment
- requesting a redeploy
- fetching best-effort deployment status
Safety / redaction
- Secrets are retrieved via
SecretStore.getSecret(ref)at apply/test time. - Secret values are not stored in plan diffs, run events, or audit logs.
- Connection reads return redacted
credentialRefvalues.