Skip to content
Crow CI
Codeberg

Installation

Crow CI consists of three components:

ComponentRequiredDescription
ServerYesUI, API, webhook handling, pipeline parsing
AgentYesExecutes pipelines via Docker, Kubernetes, or local backend
AutoscalerNoSpins up/down cloud VMs for pending builds
MethodBest For
Docker ComposeSingle-server deployments
Helm ChartKubernetes clusters
BinaryCustom deployments
AnsibleAutomated provisioning

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

Images are published to the Codeberg Container Registry:

TagDescription
vX.Y.ZSemVer release (scratch image)
vX.Y.Z-alpineSemVer release (Alpine, rootless)
vX, vX.YRolling major/minor version
devLatest from main branch

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>:8000
CROW_GRPC_ADDR: <private-ip>:9000
CROW_AGENT_SECRET: <token>

Requires TLS for secure GRPC connection:

CROW_SERVER: crow.mydomain.com
CROW_GRPC_ADDR: grpc.crow.mydomain.com
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.