Skip to content

VAP15-77 docs: add config as code (GitOps) page - #1287

Open
scott-lowe-vapi wants to merge 5 commits into
mainfrom
scottlowe/vap15-77-add-gitops-and-non-interactive-setup-to-public-docs
Open

scott-lowe-vapi wants to merge 5 commits into
mainfrom
scottlowe/vap15-77-add-gitops-and-non-interactive-setup-to-public-docs

Conversation

@scott-lowe-vapi

@scott-lowe-vapi scott-lowe-vapi commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds the public docs side of Vapi GitOps (VAP15-77). As agreed on the ticket, the page explains why to manage configuration as code and how to get started, then links out to the repository for the details, so the docs don't drift as the repository changes.

  • New page: Config as code (GitOps) (fern/config-as-code.mdx), in Get started right after CLI quickstart. It covers:

    • why manage Vapi as code (dashboard vs config as code);
    • what the repository gives you: safe sync, references by name, multiple orgs, PR checks, agent instructions;
    • a four-step setup, with tabs for interactive and for non-interactive setup for coding agents and CI (key from the environment or a human-created env file, never a flag);
    • a copyable Set up Vapi GitOps prompt for Claude Code or Cursor;
    • development / staging / production with npm run promote, and test gating;
    • PR checks: the offline Validate resources check on every PR, and simulation checks (with a note that they use simulation minutes);
    • working alongside the dashboard and built-in versioning.
  • Replaces "Enterprise environments (DEV/UAT/PROD)". That page described a hypothetical deployer: api.vendor.com, a kind: Assistant YAML schema, and PUT by name, none of which match Vapi. Its useful guidance (one org per environment, production writes from CI only, secrets out of git, how this relates to versioning) is now in the new page's environments section. /documentation/best-practices/enterprise-environments-dev-uat-prod redirects to /config-as-code#development-staging-and-production.

  • "Already running Vapi in production?" For teams with existing orgs:

    • setup imports what is already live;
    • review the import with npm run audit;
    • preview the first deploy with npm run push -- <org> --dry-run, which should create and delete nothing (updates are expected, because a deploy re-sends every managed resource);
    • keep unmanaged resources out with .vapi-ignore.

    Teams already running several orgs are pointed to the promotion guide's one-time setup and its read-only plan. I verified the import claims against a test org (69 files): the dry run showed 0 creates, 66 updates and 0 deletes, and audit flagged two pairs of same-named simulations.

  • Home page: Developer tools in the introduction now shows a GitOps card next to the CLI card.

  • llms.txt, without replacing it. Fern can serve a hand-written llms.txt (agents.llms-txt in docs.yml), but that file would replace the auto-generated 450-line index and stop updating with the docs. Instead, this PR:

    • writes the new page's frontmatter description for agents. Fern turns it into the page's llms.txt line, which lands near the top of the index, right after the CLI, because the page is in Get started;
    • adds <llms-only> blocks, which appear only in the Markdown that agents read: setup steps and safety rules on the new page, and a pointer to GitOps on the introduction page, which is the first entry agents read.

    The trade-off: there's no separate ## Config as code section in llms.txt, as proposed on the ticket, because a custom section would mean hand-maintaining the whole file.

Merge after the GitOps stack lands (VapiAI/gitops#65 through #78). The guide links arrive in #70, the promotion test gate is #66, the .vapi-ignore cleanup protection is #73, and the Validate resources check is #76 and #77. The links 404 until #70 merges.

Testing Steps

  • fern check (fern-api 5.112.0): 0 errors. All 14 warnings existed before this PR (API discriminators, accent contrast, and the redirect check, which needs fern login).
  • Open the preview deployment and check:
    • /config-as-code: the steps, the tabs, the Set up Vapi GitOps prompt card with its copy and open-in buttons, and the cards under Learn more;
    • /quickstart/introduction#developer-tools: the CLI and GitOps cards side by side;
    • the old URL /documentation/best-practices/enterprise-environments-dev-uat-prod redirects to the environments section;
    • /config-as-code.md includes the <llms-only> agent steps, and the rendered page doesn't;
    • after deploy, /llms.txt lists Config as code (GitOps) with the new description.
  • Not done: a local render. fern docs dev was still building the full API reference after several minutes, so I'm relying on the preview deployment.

🤖 Generated with Claude Code

- New Config as code (GitOps) page in Get started: why config as code,
  what the VapiAI/gitops repository does, a four-step setup (including
  the non-interactive setup for coding agents and CI), a copyable agent
  prompt, environments and promotion, PR checks, and links out to the
  repository's guides for everything else.
- It replaces the Enterprise environments (DEV/UAT/PROD) best-practices
  page, whose examples used a placeholder API and YAML schema. The old
  URL redirects to the new page's environments section.
- The introduction's Developer tools section shows GitOps next to the CLI.
- Agent guidance goes in <llms-only> blocks and the page description, so
  the auto-generated llms.txt picks it up without replacing it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Setup imports an org's existing resources. The section says how to review
the import (audit), preview the first deploy (push --dry-run: no creates
or deletes; updates are expected, because a deploy re-sends every managed
resource), and keep resources out with .vapi-ignore. It warns against
promoting between separately imported orgs, whose filenames differ, so
promotion would plan a copy and a delete of every resource.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Replace an unverified warning that promotion between imported orgs would
duplicate and delete resources. Promotion's documented setup bootstraps
target state without files, and push matches resources by name, so the
warning overstated the risk. Point to the promotion guide's one-time
setup and its read-only plan instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

…hboard

- Test every pull request: the Validate resources check runs offline on
  every PR, and simulation checks use simulation minutes, with a newer
  push cancelling the older run.
- Already running Vapi in production: phone numbers and credentials
  aren't imported as files; each org binds its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

The gate reuses the pull request's simulation checks, and blocks the
promotion when a check fails or can't finish. Link the guide's section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

@scott-lowe-vapi
scott-lowe-vapi marked this pull request as ready for review October 6, 2026 03:23
@lightsage-app

lightsage-app Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Lightsage docs evals

Lightsage could not queue docs evals for this PR.

Docs URL: https://vapi-preview-01a10f3d-a822-736e-9940-4fc6439a038e.docs.buildwithfern.com
Commit: 116b2bd
Reason: No custom evals are selected for GitHub PR evals. Open Lightsage > Custom Evals and enable the GitHub checkbox for at least one custom eval.

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant