Skip to content
Crow CI
Codeberg

Agent

Agent configuration for Crow CI workers.

CROW_SERVER=crow-server:9000
CROW_AGENT_SECRET=<token>
VariableDescription
CROW_SERVERServer gRPC address (no protocol prefix)
CROW_AGENT_SECRETAuthentication token from server
CROW_MAX_WORKFLOWS=4

By default, agents execute one workflow at a time. Increase based on available resources.

Crow routes workflows to agents using two mechanisms:

MethodDescription
LabelsFilter by matching key-value pairs
PriorityPrefer agents with higher priority when multiple match

Agents have built-in labels:

LabelDescription
backendExecution backend (docker, kubernetes, local)
typeAgent type
platformOS/architecture
agentAgent identifier

Add custom labels to route specific workflows:

# Agent configuration
CROW_AGENT_LABELS='gpu=true,memory=high'
# Workflow configuration (.crow.yaml)
labels:
gpu: true
memory: high

Only agents with matching labels will process workflows with those labels.

When multiple agents match, higher priority agents are preferred:

CROW_AGENT_PRIORITY=100

Use this to prefer agents with more capacity when available.

Admin-managed agents that process all workflows. Configure via environment variables on the agent.

Non-admin users can register agents scoped to their org or user account.

Remote agent configuration:

CROW_GRPC_ADDR=crow.example.com:9000
CROW_GRPC_SECURE=true
CROW_AGENT_SECRET=<token>
CROW_BACKEND=docker

Process workflows from multiple specified organizations or repositories.

# Multiple orgs (pipe-separated)
CROW_CUSTOM_LABELS='org=1|2|3'
# Alternative syntax (comma-separated, merged internally)
CROW_CUSTOM_LABELS='org=1,org=2,org=3'
# Limit to specific repos
CROW_CUSTOM_LABELS='org=myorg,repo=myorg/specific-repo'

Multi-org labels appear highlighted in the agent list:

Multi-org Agent
Multi-org Agent

Configure backend-specific settings at the agent level. See environment variables for all CROW_BACKEND_* options.

Enable process isolation using macOS sandbox-exec:

CROW_BACKEND_LOCAL_SANDBOX_LEVEL=standard
LevelNetworkSystem AccessUse Case
none✅ Full✅ FullTrusted code only
standard✅ Full⚠️ LimitedMost CI/CD workloads
strict❌ Blocked❌ MinimalOffline builds, maximum isolation

Standard level details:

AllowsDenies
Network access (npm, go get, pip)Writing outside workflow dirs
System libraries and frameworksSensitive user dirs (Documents, Desktop)
Shell configs (.bashrc, .zshrc)SSH private keys
Workflow temp directories

none runs processes without isolation. Only use with fully trusted code.