Octri

SDKs

Publishing

Publishing puts the generated SDK where your users already look: npm install, pip install, go get. Connect each registry account once and Octri publishes on every release.

Registries

RegistryLanguages
npmTypeScript
PyPIPython
Maven CentralJava, Kotlin
crates.ioRust
RubyGemsRuby
PackagistPHP
pub.devDart

Connect an account under SDK settings. Octri stores the credential against the registry and reuses it for every release.

Go and Swift publish by git tag

Go modules and Swift Package Manager resolve straight from a git repository. There is no registry account to connect, so there's nothing to link: Octri publishes by pushing a tagged commit.

  1. Connect the GitHub App

    Required so Octri can push to the repository.

  2. Set the repository per language

    Each language's SDK usually lives in its own repo (acme-node, acme-python, acme-go). Set Repository per language.

  3. Release

    Octri pushes the generated code and a version tag. go get and SPM resolve it from there.

For Go, the repository IS the import path

Go derives the module path from the repo URL and writes it into go.mod. github.com/acme/acme-go means users write import "github.com/acme/acme-go". Changing the repo later changes every import statement your users have written, which is a breaking change with no deprecation path.

Pick the Go repo name once, deliberately. See Go.

Package names

Package name can be set once for the project, or per language. Per language is usually what you want, because naming conventions differ: @acme/api on npm, acme-api on PyPI, com.acme:api on Maven.

The first publish claims the name permanently

Registries do not let you rename a package after publishing, and most block reusing a version number even after a delete. npm and PyPI both refuse to re-publish a deleted version.

Confirm the name is the one you want before the first release. This is the least reversible thing in the whole pipeline.

Repository metadata

Repository is written into the generated package manifest, so the registry page links back to the source. Stored as the repo picker writes it (github.com/owner/repo); a bare slug, an https URL, or an SSH remote all work.

Leave it empty and the manifests carry no repository metadata, which makes your package look abandoned on npm.

README

The README setting is shipped as the package's README.md and is what people see on the registry page. Leave it empty and the generator emits a default.

It syncs with the linked repo

When a GitHub repo is linked for a language, the README is kept in sync with the repo's own README, so you write it once.

Before the first release