config.yaml file at the root of the environment directory.
Repository layout
- Keep environment-specific files under
environments/<name> - Store shared templates or scripts outside the environment folder
- Reference shared files from
config.yamlusing relative paths
config.yaml schema
The agent parses this file to reconcile packages, services, and files on the managed host.config.yaml
Sections explained
serverMetadata
Optional metadata that appears in the UI and log entries.
packages
Package manager operations. The agent auto-detects the package manager (APK, APT, YUM/DNF) based on the host OS.
present: Install if missinglatest: Install or update to latest versionabsent: Remove if installed
services
Service management using the detected or configured service manager.
files
File content management with optional service reload triggers.
system
Optional system configuration for the agent.
Example with source files
Example with reload command
Supported package managers
The agent auto-detects and supports:Supported service managers
The agent auto-detects and supports:
Override auto-detection using the
system.serviceManager field when the agent runs in an environment where detection fails (e.g., containers without full init).
Secrets management
- Avoid committing secrets to Git. Store them in your secret manager and inject them at runtime (for example, via environment variables or file mounts).
- If you must reference credentials, use encrypted files and have the agent decrypt them in a post-processing step.
- Configure package repositories to use system-level credentials (e.g.,
/etc/apt/auth.conf) rather than embedding tokens inconfig.yaml.
Branching strategy
- Use one branch per promotion stage (for example,
main→staging→production). - Add Pullbase environments pointing to the relevant branch and deploy path.
- Protect branches with pull requests and CI validation to ensure the desired state compiles.
Testing configuration changes
- Update
config.yamland related files in a feature branch. - Validate YAML syntax locally with a linter.
- Merge to the environment branch.
- Trigger a webhook or rely on polling to publish the new commit.
The agent includes built-in validation for YAML structure, but semantic checks (such as verifying package names) depend on the target OS. Test changes in staging before promoting to production environments.