Skip to main content

Configuration

Citadel is configured through a YAML manifest file that defines the node's identity and services, plus environment variables for runtime behavior.

Manifest File

The citadel.yaml manifest is generated by citadel init. It is the source of truth for your node's configuration.

Example

node:
name: gpu-server-01
tags:
- gpu
- production
org_id: org_abc123

services:
- name: vllm
compose_file: services/vllm.yml
- name: ollama
compose_file: services/ollama.yml

Fields

FieldTypeDescription
node.namestringDisplay name for this node
node.tagslistTags for classification and filtering
node.org_idstringOrganization identifier (set during device authorization)
serviceslistServices to run on this node
services[].namestringService name (vllm, ollama, llamacpp, lmstudio, extraction)
services[].typestring"docker" or "native" (default: auto-detect)
services[].compose_filestringPath to Docker Compose file (for docker services)
services[].portintPort number (for native services)

Manifest Discovery

Citadel locates the manifest using the global config file, which points to the node configuration directory:

  1. Read the global config at the platform-specific config path (see below)
  2. The node_config_dir field in the global config points to the directory containing citadel.yaml
  3. If node_config_dir is not set, fall back to ~/citadel-node/citadel.yaml

If no manifest is found, Citadel prompts you to run citadel init.

Platform-Specific Paths

Config Directory

The global config file (config.yaml) lives in the platform-specific config directory:

PlatformConfig Directory
Linux/etc/citadel/
macOS/usr/local/etc/citadel/
WindowsC:\ProgramData\Citadel\

Node Directory

The default node configuration directory (containing citadel.yaml and service files):

PlatformNode Directory
Linux / macOS~/citadel-node/
Windows%USERPROFILE%\citadel-node\

Network State

AceTeam Network connection state is stored in:

~/.citadel-node/network/

This directory persists across restarts so the node reconnects automatically without re-authentication.

Environment Variables

VariableDefaultDescription
REDIS_URLredis://redis.aceteam.ai:6379Redis connection URL for the job queue
REDIS_PASSWORD(none)Redis authentication password
WORKER_QUEUEjobs:v1:gpu-generalRedis Stream queue name to consume from
CITADEL_AUTH_HOSThttps://aceteam.aiAuth service URL for device authorization
CITADEL_DEVICE_CODE(none)Device code from the authorization flow, used for config lookup

Environment variables override default values but are themselves overridden by command-line flags when both are specified.