Skip to main content

CI Pipeline

The CI runs on every push to main and every pull request. It uses smart scoping to skip expensive jobs when only unrelated areas changed.

Job Overview

JobPurposeWhen it runs
preflightDetect docs-only changes, changed scopes, changed extensions, and build the CI manifestAlways on non-draft pushes and PRs
security-fastPrivate key detection, workflow audit via zizmor, production dependency auditAlways on non-draft pushes and PRs
build-artifactsBuild dist/ and the Control UI once, upload reusable artifacts for downstream jobsNode-relevant changes
checks-fast-coreFast Linux correctness lanes such as bundled/plugin-contract/protocol checksNode-relevant changes
checks-fast-extensionsAggregate the extension shard lanes after checks-fast-extensions-shard completesNode-relevant changes
extension-fastFocused tests for only the changed bundled pluginsWhen extension changes are detected
checkMain local gate in CI: pnpm check plus pnpm build:strict-smokeNode-relevant changes
check-additionalArchitecture and boundary guards plus the gateway watch regression harnessNode-relevant changes
build-smokeBuilt-CLI smoke tests and startup-memory smokeNode-relevant changes
checksHeavier Linux Node lanes: full tests, channel tests, and push-only Node 22 compatibilityNode-relevant changes
check-docsDocs formatting, lint, and broken-link checksDocs changed
skills-pythonRuff + pytest for Python-backed skillsPython-skill-relevant changes
checks-windowsWindows-specific test lanesWindows-relevant changes
macos-nodemacOS TypeScript test lane using the shared built artifactsmacOS-relevant changes
macos-swiftSwift lint, build, and tests for the macOS appmacOS-relevant changes
androidAndroid build and test matrixAndroid-relevant changes

Fail-Fast Order

Jobs are ordered so cheap checks fail before expensive ones run:
  1. preflight decides which lanes exist at all. The docs-scope and changed-scope logic are steps inside this job, not standalone jobs.
  2. security-fast, check, check-additional, check-docs, and skills-python fail quickly without waiting on the heavier artifact and platform matrix jobs.
  3. build-artifacts overlaps with the fast Linux lanes so downstream consumers can start as soon as the shared build is ready.
  4. Heavier platform and runtime lanes fan out after that: checks-fast-core, checks-fast-extensions, extension-fast, checks, checks-windows, macos-node, macos-swift, and android.
Scope logic lives in scripts/ci-changed-scope.mjs and is covered by unit tests in src/scripts/ci-changed-scope.test.ts. The separate install-smoke workflow reuses the same scope script through its own preflight job. It computes run_install_smoke from the narrower changed-smoke signal, so Docker/install smoke only runs for install, packaging, and container-relevant changes. On pushes, the checks matrix adds the push-only compat-node22 lane. On pull requests, that lane is skipped and the matrix stays focused on the normal test/channel lanes.

Runners

RunnerJobs
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, Linux checks, docs checks, Python skills, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Local Equivalents

pnpm check          # types + lint + format
pnpm build:strict-smoke
pnpm test:gateway:watch-regression
pnpm test           # vitest tests
pnpm test:channels
pnpm check:docs     # docs format + lint + broken links
pnpm build          # build dist when CI artifact/build-smoke lanes matter