CLI
Projects, specs and SDKs
Everything the dashboard does to a project, octri does from a terminal. This page covers the day-to-day: specs in, SDKs out, docs published.
Pick what you are working on
octri projects list
octri projects use # picker, or pass an id
octri auth whoami # user, org, plan, selected projectThe selected project is stored per profile. Override it for one command with --project <id>.
Specs
octri specs push ./openapi.yaml
octri specs import https://example.com/openapi.json
octri specs list
octri specs status <specId>specs push follows the whole pipeline, not just the upload. The spec parses in about a second; the doc pages, search index and changelog are written behind it, and the spinner names the stage it is on. Pass --no-wait to return as soon as the spec is accepted.
Reading a spec from stdin works, which is handy when you generate it:
./scripts/build-spec | octri specs push -octri specs status <specId> prints the same pipeline afterwards, one line per job, with the failure count if anything went wrong.
SDKs
octri sdk languages # the catalogue and each language's options
octri sdk operations --grep checkout # what the generator parsed
octri sdk validate # is this spec buildable
octri sdk audit # spec quality, scoredsdk audit is the one to run before a build. It scores the spec and lists what is costing you, marking which findings the generator can fix on its own:
octri sdk audit
octri sdk audit apply <key> # write the fix into the spec
octri sdk audit ignore <key> # mute a finding you have decided aboutBuilding:
octri sdk preview --lang go # real generator output, no build spent
octri sdk build --lang go,rust --download
octri sdk builds
octri sdk watch <buildId>
octri sdk download <buildId> --lang go --out ./sdk
octri sdk retry <buildId> # failed languages onlyIn a terminal, sdk build renders a lane per language and repaints it through generating, verifying, packaging, installing, ready. Piped or in CI it prints append-only lines instead. It exits non-zero if any language fails, so it works as a build step.
--detach returns as soon as the build is queued.
Settings and publishing
octri sdk settings get --key reliability
octri sdk settings set retries.maxAttempts 5
octri sdk settings set --file settings.json
octri sdk repos # per-language GitHub targets
octri sdk publish <buildId> --mode pack # dry run: build the package, don't push
octri sdk publish <buildId> --mode release--mode release pushes to public package registries. Versions there cannot be taken back. Use --mode pack until you mean it.
Docs
octri docs pages # generated pages
octri docs show <slug>
octri docs guides
octri docs nav
octri docs changelogRegenerating:
octri docs pages generate # only missing and stale pages
octri docs pages generate --all # rebuild everything
octri docs pages regenerate <pageId> # one page
octri docs pages publish <pageId> # publish that page's draftManual overrides sit on top of generated content. Rebuilding an edited page changes what is stored underneath and nothing of what a reader sees. --clear-overrides drops the edits as well, and asks for --yes first.
Versions and the public address:
octri docs versions
octri docs versions publish <specId>
octri docs versions label <specId> "Stable"
octri docs versions default <specId>
octri docs domain set docs.example.com
octri docs domain # prints the CNAME and TXT to add
octri docs domain verifySpecs from GitHub
Point a project at a spec file in a repository and every push to it re-ingests:
octri github connect acme/api --branch main --path openapi.yaml
octri github sync # pull it now
octri github auto-sync on
octri github statusOrganisation
octri orgs # orgs you belong to
octri orgs switch <id>
octri orgs usage
octri orgs billing
octri orgs members
octri orgs invites create dev@example.com --role memberorgs switch re-issues your session against the other organisation and clears the selected project, since projects do not cross organisations.
API keys
An API key is what a script or a service uses instead of your session.
octri keys create "ci-pipeline"
octri keys list
octri keys revoke <keyId> --yeskeys create prints the key a single time. There is no way to read it again. If you lose it, revoke it and make another.
Scripting it
--json prints one JSON document on stdout and nothing else. Errors go to stderr, and the exit code is non-zero on failure.
octri sdk builds --json | jq '.[0].status'
octri monitoring issues --status unresolved --json | jq 'length'