You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unified configuration management for the Pelagic fleet. Bridges the fragmented config landscape — fleet.yaml, per-agent agent.yaml, world/rooms.json, lighthouse config, environment variables, and runtime overrides — into one coherent system.
Schema validation — type checking, required fields, port conflict detection, path existence
Config templates — development, production, minimal, full, and Docker presets
Template rendering — {{keeper.port}} placeholders resolved from config context
Secret redaction — sensitive fields are masked in diffs and exports
Config snapshots — save/rollback config states for safe experimentation
Multi-format export — YAML, JSON, and ENV-file output
Doctor diagnostics — detect misconfigurations, port conflicts, missing files
Quick Start
# Generate a config from a template
python cli.py generate --template development
# View current config
python cli.py show
# Get a value
python cli.py get keeper.port
# Set a value
python cli.py set keeper.port 9000
# Validate
python cli.py validate
# Diff from defaults
python cli.py diff
# Save a snapshot before making changes
python cli.py snapshot --label "pre-migration"# Rollback if something breaks
python cli.py rollback pre-migration
# Export as JSON (secrets redacted)
python cli.py export --format json
# Diagnose issues
python cli.py doctor
Config Priority (highest → lowest)
Priority
Source
Example
1
CLI arguments
--port 9000
2
Environment variables
FLEET_KEEPER_PORT=9000
3
Runtime overrides
manager.set("keeper.port", 9000)
4
Fleet config
fleet.yaml
5
Agent config
<agent>/agent.yaml
6
Defaults
Built-in template defaults
Programmatic Usage
fromconfig_managerimportFleetConfigManagermanager=FleetConfigManager(config_dir="/etc/fleet")
# Load config (auto-applies all layers)config=manager.load_fleet_config()
# Get/set valuesport=manager.get("keeper.port")
manager.set("logging.level", "DEBUG")
# Validateresult=manager.validate()
ifnotresult.valid:
print(result)
# Generate agent-specific configagent_cfg=manager.generate_agent_config("git-agent")
# Save snapshot before changesmanager.snapshot(label="before-update")