CI/CD, built with Rust

See every step.
Trust every build.

Contigra is a production-ready CI/CD platform. Describe your pipeline as a graph, run it across distributed runners, and let every job execute in isolation.

securitycargo auditcompilecached buildtestparalleltestparallelpackageartifacts
RustgRPCmTLSDockerPodmanTOML
4components, one platform
6starter templates
mTLSbetween every component
2container runtimes: Docker & Podman

The Contigra stack

Four components. One platform.

01plan

Contigra CLI

Initialize, preview, and run pipelines. Built-in health checks and interactive tutorials.

02serve

Contigra Server

A gRPC orchestrator with a job queue, runner registry, and mTLS-secured communication.

03run

Contigra Runner

Distributed job execution with tag-based routing and sandboxed containers.

04connect

MCP Server

Expose your pipelines to AI tooling through the Model Context Protocol.

Why Contigra

Built for teams that ship.

Fast by design

DAG scheduling with parallel execution, and a content-based cache with LRU, LFU, and usage-based eviction.

Secure by default

mTLS between every component, non-root containers, dropped capabilities, and full audit logging.

Distributed

Runners register themselves, report health, and receive work matched to their capabilities.

Observable

Built-in health checks, distributed tracing, and structured real-time execution logs.

Pipelines as code

Readable, declarative, reproducible.

Define stages, dependencies, environment variables, and timeouts in a single TOML file. Contigra resolves the graph and runs independent work in parallel.

# contigra.toml
[pipeline]
name = "rust-service"

[[pipeline.stages]]
name = "validate"

[[pipeline.stages.steps]]
name = "audit"
command = "cargo audit"

[[pipeline.stages]]
name = "build"
depends_on = ["validate"]

[[pipeline.stages.steps]]
name = "compile"
command = "cargo build --release"
timeout_seconds = 600

How it works

From commit to result, in four moves.

01

Describe

Write stages and dependencies in contigra.toml.

02

Resolve

Contigra builds the execution graph and orders it topologically.

03

Dispatch

The server queues jobs and matches them to runners by tag and load.

04

Execute

Runners run each job in a sandboxed container and report back.

Security

Zero-trust, from the first request.

Every component authenticates every other one. Every job runs with the least privilege it needs.

  • Mutual TLS between the CLI, server, and runners
  • Non-root containers with a read-only filesystem and dropped capabilities
  • JWT and API key authentication
  • Audit logging of security events
# start the orchestrator with mTLS
$ contigra-server \
    --config contigra-server.toml \
    --enable-mtls \
    --mtls-domain contigra.example.com

# connect a runner
$ contigra-runner \
    --server http://localhost:50051 \
    --tags rust,docker \
    --max-jobs 4

Start fast

Bring what you already have.

templates

Six starter templates

Rust, Node.js, Python, Docker, Kubernetes, or a minimal skeleton. Pick one with contigra init --template.

migrate

From GitHub Actions

Convert existing workflows to Contigra format with contigra migrate, or run GitHub Actions-style workflows locally.

cookbook

A recipe cookbook

Browse, search, and generate pipelines from curated patterns with contigra cookbook.

Get started

From zero to pipeline in minutes.

01

Define

Create a pipeline from a template.

$ contigra init --template rust
02

Preview

See the execution graph before anything runs.

$ contigra plan
03

Run

Execute stages in parallel, locally or on runners.

$ contigra run
04

Scale

Add a server and connect runners as you grow.

$ contigra-server --enable-mtls

FAQ

Questions, answered.

Can I run Contigra without a server?

Yes. The CLI runs pipelines entirely on your machine. Add a server and runners when you need shared capacity.

What do I need to run jobs in containers?

Docker or Podman. Jobs run in sandboxed containers with non-root users and a read-only filesystem.

How are pipelines defined?

In a TOML file, contigra.toml, with stages, steps, and depends_on relationships between stages.

Does it work with AI tools?

Contigra ships an MCP server, so AI tools that speak the Model Context Protocol can work with your pipelines.

Who builds Contigra?

Contigra is built and maintained by Nuvai.

Ready to ship with confidence?

Learn how Contigra works, from pipelines to runners, in the docs.