OxygenFlow
Flow says what to run. Jet carries it to where it should run.
OxygenFlow is the CI system for Oxygen repositories. A pipeline is a
.flow/pipeline.kdl file of jobs. Each job runs hermetically in a
sandbox: a Firecracker microVM where the machine has KVM, a syscall
sandbox (Landlock and seccomp) where it doesn't. The job sees the
repository's files without a checkout, and ends with a receipt that
says exactly what ran, on which state, and what it produced. Jobs whose
files a change didn't touch keep their previous result.
What it does today
- Pipelines of jobs with dependencies, scopes, mounts, environment, triggers (push, tag, manual, schedule), variables and secrets: see Pipelines.
- Runs on your machine first:
flow runruns the pipeline locally, in the same sandboxes CI uses. See Running Locally. - Runners on your own machines, pulling jobs from OxygenHub over HTTPS. See Runners.
- Artifacts and reports kept per job, with signed receipts. See Reports.
What's next
Jetstream, the fleet as a service of its own:
- runners that measure themselves;
- placement that explains every choice;
- images fetched by hash;
- pools on your own hosts, on Kubernetes and on GCP, AWS and Azure.
OxygenHub embeds it by default; others can run it on its own.