Promote to production
You've got vendor-screen v1 and v2 in sandbox. Now we'll get the workflow to prod, activate it, and set up an API key for future automated deploys.
Step 1 — deploy to prod
culvii deploy vendor-screen.ts --env prod --workspace procurement
(Adjust the workspace name to whatever makes sense for your team. The Console will ask to create it if it doesn't exist.)
You'll see:
✓ Published vendor-screen v1 to prod
Note: it's v1 in prod, not v2. Versions are per-environment. Sandbox went v1, v2 independently of prod.
Step 2 — activate
In the Console, navigate to prod → procurement → workflows → vendor-screen. Click Activate.
The Console asks you to confirm; it shows you the workflow's input schema, output schema, and any triggers. (For our tutorial workflow there are no triggers, so this is mostly a no-op.) Click Activate.
The workflow is now Live in prod. The Console marks it with a "Live" badge. If you had cron triggers or webhooks attached, they'd be armed now.
Run it once manually from the Console with { "vendorId": "V001" } to confirm it works in prod.
Step 3 — create API keys for CI
So far you've been deploying as yourself, using the OAuth session created by culvii login. That works for one-off human-driven deploys. For anything automated — CI on merge to main, scheduled redeploys, integration tests — you'll need an API key.
Create a key for sandbox first:
culvii key create --env sandbox --scope developer --name "github-actions-sandbox"
The CLI prints the secret once:
Created API key:
Fingerprint: ck_sandbox_a3f9...8c2d (last 4)
Secret: ck_sandbox_a3f9b8e6c2d4f7a1...
⚠ This is the only time the secret will be shown. Store it somewhere safe.
Repeat for prod:
culvii key create --env prod --scope developer --name "github-actions-prod"
In your CI provider (GitHub Actions, GitLab CI, whatever you use), store these as secrets:
CULVII_API_KEY_SANDBOX = ck_sandbox_…CULVII_API_KEY_PROD = ck_prod_…
A minimal GitHub Actions example:
name: Deploy
on:
push:
branches: [main]
workflow_dispatch:
inputs:
env:
type: choice
options: [sandbox, prod]
jobs:
deploy-sandbox:
if: github.event_name == 'push'
runs-on: ubuntu-latest
environment: sandbox
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm install -g @culvii/cli
- run: culvii deploy vendor-screen.ts --env sandbox --workspace tutorial --yes
env:
CULVII_API_KEY: ${{ secrets.CULVII_API_KEY_SANDBOX }}
deploy-prod:
if: github.event_name == 'workflow_dispatch' && github.event.inputs.env == 'prod'
runs-on: ubuntu-latest
environment: prod
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm install -g @culvii/cli
- run: culvii deploy vendor-screen.ts --env prod --workspace procurement --yes
env:
CULVII_API_KEY: ${{ secrets.CULVII_API_KEY_PROD }}
The --yes flag suppresses interactive prompts (workspace creation, etc.) — required for unattended runs.
This shape — sandbox on every merge, prod via manual dispatch — is the most common starting point. As you build confidence, you can wire prod deploys to a release branch, a tag, or a manual approval gate in your CI provider.
You're done
That's the full developer loop:
- Write TypeScript with
@culvii/kit. - Iterate with
culvii devagainst your dev environment. - Deploy to sandbox with
culvii deploy --env sandbox. - Deploy and activate in prod.
- Hand future deploys to CI via API keys.
Where to go next
- How-to guides — recipes for specific tasks: connecting MCP, adding a HITL gate, debugging with
culvii logs --follow, real internal-API integrations. - Concepts — if any of the model felt fuzzy, this is where it gets explained in depth.
- SDK reference — the precise interfaces of
agent,tool,model,workflow. - Operator's Guide — if you'll be the one approving HITL gates and reviewing the audit log, this is your home.
If anything broke along the way, email [TODO support@culvii.com] with your run ID. We read every message.