Deterministic output
Same spec, same SDK, byte for byte, every run. An agent can regenerate freely and the diff shows only what actually changed, so a human review stays possible.
Reading this as an agent? This page's markdown twin is at https://voxgig.com/sdk/agents.md. The complete end-to-end build guide is AGENTS.md in create-sdkgen: start there, and use this page for the runbook and the map. The site's own machine surface (MCP server, llms.txt, catalog API) is described at /developers.
An agent hand-writing six SDKs has all the maintenance problems a human team has, at higher speed. Driving a deterministic generator removes them. Six properties do the removing.
Same spec, same SDK, byte for byte, every run. An agent can regenerate freely and the diff shows only what actually changed, so a human review stays possible.
An agent shapes the SDK by editing the model, which is data, not by authoring N codebases. A three-line declaration can change every language at once, and a contradictory edit fails the model build instead of shipping.
Project decisions are declared in the model and re-read every time. Generation diff-merges into existing files. Running generate twice, or after an upgrade, is safe, which is what makes an iterate loop possible at all.
voxgig-sdkgen doctor reports every forked component, edited template and stale file, and exits non-zero. An agent can verify the project state instead of inferring it.
Every SDK generates with its own test suite, and the test and netsim features mock the API and inject failures deterministically. An agent can prove its work with no network, no credentials and no wall clock.
Every generated SDK ships its own AGENTS.md. Each toolchain repo carries one. This page has a markdown twin at /sdk/agents.md, and the site publishes /AGENTS.md, /llms.txt and an MCP server.
Four commands take an OpenAPI 3 description to generated, tested SDKs. Everything needs Node, and nothing needs a network beyond npm.
# 1. Scaffold a project from the user's OpenAPI 3 description
npm create @voxgig/sdkgen -- my-api -d ./openapi.yaml -o ./my-api-sdk
# 2. Add language targets, plus the offline test feature
cd my-api-sdk/.sdk
npx voxgig-sdkgen target add ts py go
npx voxgig-sdkgen feature add test
# 3. Generate every SDK from the model
npm run generate
# 4. Verify a target the way its ecosystem would
cd ../ts && npm install && npm run build && npm test From there the loop is: edit, regenerate, verify. The place to edit is the model in .sdk/model/, entities, operations, fields, project decisions, because everything under the language directories (ts/, py/, go/) is generated output and regeneration overwrites or merges it. When the output itself needs to change shape, use the customization levers: templates, components, custom features, custom targets.
Before committing, ask the toolchain rather than guessing:
npx voxgig-sdkgen doctor # reports drift, exits non-zero for CI .sdk/model/project.aon as the project's own file: the toolchain creates it once and never overwrites it.doctor before committing, and treat a non-zero exit as a finding to act on.project.aon: they are refreshed so toolchain fixes propagate.doctor in CI: the next resync reverts silent edits.This page is the front door. The depth is versioned with the code it describes.
AGENTS.md in the create-sdkgen repo: spec to scaffold to generate to test to publish, what to edit versus what is generated, and the known gotchas. The authoritative runbook this page summarises.
create-sdkgen AGENTS.mdThe six customization levers, from model declarations to entirely custom language targets, with a worked demo repo. Read it when the stock output is not quite what the user needs.
CustomizationAGENTS.md in sdkgen covers templates, components and targets from the inside, and AGENTS.md in apidef covers how the OpenAPI description becomes the model.
sdkgen AGENTS.mdapidef AGENTS.mdOne scaffold command, a declarative model, and a doctor that checks the work. The generated SDK arrives with the tests to prove it.