Skip to content
Crow CI

Installation

Crow CI consists of three components:

| Component | Required | Description | | --- | --- | --- | | Server | Yes | UI, API, webhook handling, pipeline parsing | | Agent | Yes | Executes pipelines via Docker, Kubernetes, or local backend | | Autoscaler | No | Spins up/down cloud VMs for pending builds |

| Method | Best For | | --- | --- | | Docker Compose | Single-server deployments | | Helm Chart | Kubernetes clusters | | Binary | Custom deployments | | Ansible | Automated provisioning |

Crow uses SQLite by default. For production, PostgreSQL or MariaDB is recommended.[^1]

Images are published to the Codeberg Container Registry:

The unsuffixed and -alpine tags differ depending on the component:

  • crow-server and crow-agent are published as Alpine-based images. The unsuffixed tag and the -alpine tag point to the same image — -alpine is kept as an alias for backwards compatibility.
  • crow-cli is published in two flavours: the unsuffixed tag is a minimal scratch image, and the -alpine tag is the Alpine variant.

| Tag | Description | | --- | --- | | vX.Y.Z | SemVer release (server/agent: Alpine; cli: scratch) | | vX.Y.Z-alpine | SemVer release (Alpine, rootless; alias of vX.Y.Z for server/agent) | | vX, vX.Y | Rolling major/minor version | | vX-alpine, vX.Y-alpine | Rolling major/minor version (Alpine variant) | | dev | Latest from main branch | | dev-alpine | Latest from main branch (Alpine variant) |

Agents authenticate with the server using tokens via CROW_AGENT_SECRET.

Set the same CROW_AGENT_SECRET on both server and agent. On first connection:

  1. Agent connects with system token
  2. Server registers agent and returns unique ID
  3. Agent stores ID in CROW_AGENT_CONFIG_FILE
  4. Subsequent connections use stored ID

For multiple agents with different configurations, create tokens via Settings → Agents → Add agent or the API. Each agent uses its assigned token in CROW_AGENT_SECRET.

Agent creation
Agent creation

Agents can run on separate machines from the server.

Connect using private IP addresses:

CROW_SERVER: <private-ip>:9000
CROW_AGENT_SECRET: <token>

Requires TLS for secure GRPC connection:

CROW_SERVER: grpc.crow.mydomain.com:443
CROW_GRPC_SECURE: "true"
CROW_AGENT_SECRET: <token>

Requirements:

  • Subdomain for GRPC service
  • Valid SSL certificate
  • TLS-terminating proxy

See Reverse Proxy Setup for ingress configuration examples.

[^1]: Pipeline logs are stored in the database. External log storage is planned.