KiCI

KiCI vs Buildkite

Two hybrid CI platforms that keep your source and secrets on your own infrastructure. The difference is authoring: KiCI is typed TypeScript with schema-validated values, where Buildkite uses YAML steps and shell commands.

Visit Buildkite homepage ↗

KiCI Buildkite
Workflow language
Pipelines are real, typed TypeScript — loops, conditionals, functions, autocomplete
Pipelines are steps in a pipeline.yml YAML file; command steps run shell commands on agents
Where code & secrets live (shared model)
KiCI runs the control plane as a hosted service while your orchestrator and agents execute on your own infrastructure — source and secrets never reach KiCI
The same hybrid model — Buildkite runs the control plane as SaaS while agents run on your infrastructure, and source code and secrets stay in your environment
Autoscaling ephemeral agents
A built-in auto-scaler provisions ephemeral agents on demand across Docker/Podman containers, bare-metal processes, and Firecracker microVMs — on your own infrastructure, with no extra controller
Autoscaling agents uses the Elastic CI Stack for AWS — an AWS Auto Scaling group of agents you deploy in your own account
Cost model
The hosted control plane is free with full functionality; paid tiers raise limits for scale and observability and never meter your executions — you provide the execution compute itself
Priced per active user per month — usage is not metered per build minute (you run your own agents)
Development experience
Dynamic job generation
Generate jobs programmatically in-process — a dynamicJob generator emits typed job definitions in TypeScript, fanning out one job per item an upstream job discovers
A script in any language generates pipeline steps as YAML or JSON at build time and uploads them with the pipeline upload step
Typed values between steps & jobs
Step and job outputs are declared with Zod schemas, so values passed between jobs are typed and validated — not stringly-typed
Values pass between steps through the build meta-data key/value store — values must be strings, with no schema validation
Testing & local dev loop
kici run --local and kici run remote run a full workflow from your current codebase — locally or against the real remote pipeline — before you commit or push
Builds run on your agents once a build is created — Buildkite has no equivalent that runs the real remote pipeline from your local working tree before pushing
Get started with KiCI See all comparisons