Skip to content
RusticStackPublic

About

Performance-first, self-hosted CI engine written in Rust: durable distributed runs, local-first caching, rootless Podman and microVM isolation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Sentinel

Fast, self-hosted CI that treats every second as a budget.

Native pipelines, durable distributed execution and local-first caching,
built in Rust for teams that want control of their hardware and their data.

MIT license Rust 1.97.0 Pre-release status Linux server and worker

Warning

Sentinel is under active development and does not have a stable release yet. The first release will provide native .sentinel.yml pipelines on Linux workers. Configuration, APIs and on-disk formats may change before then.

Why Sentinel?

Sentinel is a purpose-built CI engine, not a dashboard around another runner. It combines the controller, worker protocol, pipeline compiler, cache and log storage in one auditable system, with performance measured against real CI workloads on the same hardware.

The primary target is trigger-to-required-check p95 in at most half of Blacksmith's time for the same checks and conditions. The independent absolute target remains sub-minute warm pull-request checks on hardware where the equivalent CI previously took five minutes or more. Both are unmet targets, not published results: current pilot records have no qualifying five-minute baseline and no Blacksmith comparison. Measurements and their exact conditions live in the benchmark records and benchmark contracts.

What you get

  • Native pipelines. A strict, versioned .sentinel.yml schema with job dependencies, conditions, resources, caches, artifacts, secrets and concurrency controls.
  • Fast, isolated execution. Fresh rootless Podman workspaces on Linux, no job network by default and exact-revision checkouts. Firecracker microVM execution is in development for KVM hosts.
  • Local-first caching. Separate download, dependency and compiler caches, content-addressed Git mirrors and reusable runtime images, with explainable hit and miss reasons.
  • Durable by design. SQLite metadata, fenced worker leases, restart recovery, resumable log spooling and explicit partial-data states instead of silent loss.
  • A real multi-tenant control plane. Organizations and personal namespaces, scoped credentials, local and GitHub sign-in, MFA, OAuth, CLI/MCP access and tenant-owned workers.
  • Useful feedback everywhere. A web interface, human- and machine-readable CLI output, structured diagnostics, live logs and native GitHub Checks.
  • Your repositories, your infrastructure. Generic Git works with Gitea, Forgejo, GitLab and bare repositories; GitHub App integration adds native pull-request checks.

How it works

 Git push, pull request or manual run
                  |
                  v
        +-------------------+
        | Sentinel controller|
        | API, auth, queue,  |
        | SQLite and storage |
        +---------+---------+
                  | authenticated worker link
          +-------+-------+
          |               |
          v               v
   +-------------+ +-------------+
   | Linux worker| | Linux worker|
   | containers  | | containers  |
   | or microVMs | | or microVMs |
   +-------------+ +-------------+

The controller never executes jobs. Workers run as separate processes, receive only work they are authorized and equipped to run, and report logs and outcomes through durable, fenced attempts. The intended Q11/Q12 host model adds UI-generated worker-only Tailcat enrollment, controller-approved host CPU/RAM/storage ceilings and fastest-eligible placement with an explicit operator priority override; those flows are not yet implemented.

A pipeline looks like this

schema: 1
on: [push]

jobs:
  test:
    image: docker.io/library/rust:1-alpine
    resources: { cpu: 2, memory: 1GiB }
    timeout: 10m
    steps:
      - id: build
        run: cargo build --locked
      - id: test
        run: cargo test --locked

Explore valid pipeline fixtures, ready-to-adapt cache recipes and the complete pipeline schema.

Quick start

Validate a pipeline

Sentinel's CLI builds on Linux and Windows. The pinned toolchain is selected automatically by rustup.

git clone https://github.com/RusticStack/sentinel.git
cd sentinel
cargo run -p sentinel -- pipeline validate fixtures/pipelines/valid/minimal.yml

Start a development deployment

The controller and worker require Linux. From the repository root, use separate terminals:

cargo dev-server --data-dir "$PWD/data/controller"
cargo dev-worker --data-dir "$PWD/data/worker"

Then follow operator first run to create the first administrator and configuration to enroll and connect a worker. The example commands start the processes; they do not bypass authentication or worker enrollment.

Project status

Area State
Native pipeline compiler and validation Implemented; current-tree revalidation open
Linux controller and rootless-Podman workers Implemented; correctness revalidation open
Multi-tenancy, authentication, OAuth and secrets Implemented; authorization/admission rework open
Logs, artifacts, caches, recovery and retention Implemented; durability and cache rework open
Web interface, CLI, MCP and GitHub Checks Implemented; current verification open
UI worker enrollment, host caps and host priority Planned as Q11–Q13
Same-hardware optimization and pilot measurements Revision-4 records exist; B08 unmet
2× Blacksmith comparison B11 blocked by benchmark access
Firecracker microVMs for Linux jobs Implemented; networking, snapshots and verification open
GitHub Actions runner mode and Windows jobs Planned after v0.1 unless separately promoted

The v0.1 release still requires Part 24 correctness rework, deployment packaging, Q11–Q13, required microVM gaps, pilot/benchmark work, B09, B11 and the release gates. TODO.md is the authoritative task tracker; plan.md explains the architecture and longer-term direction.

Documentation

Start with the task you want to accomplish:

Contributing

Bug reports and focused pull requests are welcome. Please read the development guide and AGENTS.md before making changes, and discuss substantial features or architectural changes first.

Keep pull requests focused, include behavior and failure-path tests where appropriate, and never commit credentials or production data. Commit messages and code must stay free of AI attribution; disclose AI-assisted work in the pull-request description instead.

License

Sentinel is free and open-source software under the MIT License.

About

Performance-first, self-hosted CI engine written in Rust: durable distributed runs, local-first caching, rootless Podman and microVM isolation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages