Kilo Code uses a fully automated CI pipeline triggered via GitHub Actions workflow_dispatch. A single workflow handles version bumping, building all artifacts, publishing to every distribution channel, and updating package registries.
publish workflow in GitHub Actions.main).bump (choice): patch, minor, or major. Determines how the version number is incremented.version (string, optional): Override the version explicitly instead of using bump. Leave empty to use the bump-based calculation.⚠️ Do not fill in
versionunless you have a specific reason to. The default behavior — leavingversionempty and selecting abumplevel — is almost always what you want. The automated bump logic computes the correct next version from the current state of the repo. Only use theversionoverride for exceptional cases like skipping versions or publishing a pre-release (e.g.1.5.0-beta.1).
The publish.yml workflow runs four jobs sequentially:
version)fetch-depth: 0).script/version.ts to compute the next version based on the bump or version input.v1.2.3) and release notes.version, release (database ID), and tag for downstream jobs.build-cli)packages/opencode/script/build.ts to compile the Kilo CLI binary..tar.gz for Linux, .zip for macOS/Windows) and uploads them to the draft GitHub Release.dist/ directory as a workflow artifact (kilo-cli) for subsequent jobs.build-vscode)packages/kilo-vscode/script/build.ts to build VSIX packages for all target platforms:
linux-x64, linux-arm64, alpine-x64, alpine-arm64, darwin-x64, darwin-arm64, win32-x64, win32-arm64kilo-vscode).publish)Downloads all build artifacts and publishes to every distribution channel:
version field in all package.json files across the monorepo.extension.toml) with the new version.packages/sdk/js).@kilocode/cli)@kilocode/cli-linux-x64, @kilocode/cli-darwin-arm64, etc.).@kilocode/cli package to npm with optional dependencies on the binary packages.ghcr.io/kilo-org/kilo) to GitHub Container Registry (linux/amd64 + linux/arm64).@kilocode/sdk)@kilocode/plugin)vsce.kilo-bin from the AUR, updates the PKGBUILD with new version and SHA256 checksums, and pushes.Kilo-Org/homebrew-tap, updates the kilo.rb formula with new version, download URLs, and SHA256 checksums, and pushes.Kilo-Org/kilocode repository (guarded by if: github.repository == 'Kilo-Org/kilocode').workflow_dispatch event.The workflow requires these GitHub token permissions:
id-token: write -- for npm provenance attestationcontents: write -- for creating releases, pushing tags, and uploading assetspackages: write -- for publishing Docker images to GHCRThe following secrets must be configured in the repository:
| Secret | Purpose |
|---|---|
KILO_API_KEY |
Kilo API key used during version computation |
KILO_ORG_ID |
Kilo organization ID |
KILO_MAINTAINER_APP_ID |
GitHub App ID for the kilo-maintainer bot (used for git commits) |
KILO_MAINTAINER_APP_SECRET |
GitHub App secret for the kilo-maintainer bot |
NPM_TOKEN |
npm authentication token for publishing packages |
VSCE_TOKEN |
VS Code Marketplace personal access token |
OVSX_TOKEN |
Open VSX Registry token (currently unused but configured) |
AUR_KEY |
SSH private key for pushing to the AUR |
The workflow uses concurrency control (workflow-ref-bump/version) to prevent parallel releases from conflicting.