Skip to content

instance.yaml Reference

The central configuration file for a Sanctum instance lives at ~/.sanctum/instance.yaml. Every instance-specific value is defined here — services, networking, paths, family members, node topology, and secrets references.

A JSON cache is auto-regenerated at ~/.sanctum/.instance.json whenever the YAML changes, via lib/yaml2json.py.

instance:
slug: manoir-nepveu
name: Manoir Nepveu
timezone: America/Montreal
users:
mac: bert
vm: ubuntu
network:
vm_ip: 10.10.10.10
mac_bridge_ip: 10.10.10.1
bridge_interface: bridge100
vm_ssh_alias: openclaw
lan_ip: 192.168.1.10

Top-level identity for this Sanctum deployment.

KeyTypeRequiredDescription
slugstringYesURL-safe identifier used in hostnames, paths, and DNS. Example: manoir-nepveu
namestringYesHuman-readable display name. Example: Manoir Nepveu
timezonestringYesIANA timezone for scheduling and logs. Example: America/Montreal
instance:
slug: manoir-nepveu
name: Manoir Nepveu
timezone: America/Montreal

OS-level usernames on the Mac host and the VM.

KeyTypeRequiredDescription
macstringYesmacOS username on the host machine
vmstringYesLinux username inside the VM
users:
mac: bert
vm: ubuntu

Networking topology between the Mac host, the VM, and the LAN.

KeyTypeRequiredDescription
vm_ipstringYesStatic IP of the VM on the host-only network
mac_bridge_ipstringYesMac-side IP on the bridge interface
bridge_interfacestringYesmacOS bridge interface name (e.g., bridge100)
vm_ssh_aliasstringYesSSH config alias for the VM (e.g., openclaw)
lan_ipstringYesMac Mini IP on the local network
network:
vm_ip: 10.10.10.10
mac_bridge_ip: 10.10.10.1
bridge_interface: bridge100
vm_ssh_alias: openclaw
lan_ip: 192.168.1.10

Filesystem paths used by Sanctum tools, scripts, and backup routines.

KeyTypeRequiredDescription
openclaw_configstringYesAgent config directory. Default: ~/.openclaw
openclaw_skillsstringYesShared skills repo checkout
logsstringYesCentralized log directory
projectsstringYesProjects root (Mac side)
backupsstringYesBackup destination directory
paths:
openclaw_config: /Users/bert/.openclaw
openclaw_skills: /Users/bert/Projects/openclaw-skills
logs: /Users/bert/.sanctum/logs
projects: /Users/bert/Projects
backups: /Users/bert/.sanctum/backups

Each service has at minimum an enabled boolean flag. Services that listen on a port include a port key (or multiple port keys). The enabled flag controls whether generate-plists.sh renders and loads the corresponding LaunchAgent.

ServiceKeyDefault Port(s)Description
Gatewaygateway18789OpenClaw/DenchClaw agent gateway
Home Assistanthome_assistant8123Home automation hub (Docker)
Dashboarddashboard3001, 3002Command center web UI
Firewalla Bridgefirewalla18094Firewalla P2P bridge
VMvmUTM virtual machine
Voice Agentvoice_agentYoda voice interaction agent
XTTSxttsText-to-speech server
MLX Servermlx_serverCouncil MLX model server
Cloudflare TunnelcloudflareCloudflare Zero Trust tunnel
iCloud Filericloud_filerAutomatic iCloud filing daemon
Health Centerhealth_centerHealth monitoring dashboard
TailscaletailscaleMesh VPN
LM Studiolmstudio1234Local LLM inference server
WatchdogwatchdogService health monitoring
Kiwixkiwix8888Offline library server
Signal Bridgesignal_bridgeSignal messaging bridge
LiteLLM Proxylitellm4000, 4001LLM fallback proxy
services:
gateway:
enabled: true
port: 18789
home_assistant:
enabled: true
port: 8123
dashboard:
enabled: true
port: 3001
dev_port: 3002
firewalla:
enabled: true
port: 18094
vm:
enabled: true
voice_agent:
enabled: true
xtts:
enabled: true
mlx_server:
enabled: true
cloudflare:
enabled: true
icloud_filer:
enabled: true
health_center:
enabled: true
tailscale:
enabled: true
lmstudio:
enabled: true
port: 1234
watchdog:
enabled: true
kiwix:
enabled: true
port: 8888
signal_bridge:
enabled: false
litellm:
enabled: true
port: 4000
admin_port: 4001

From the shell library:

Terminal window
source ~/.sanctum/lib/config.sh
if sanctum_enabled services.gateway; then
echo "Gateway is enabled on port $(sanctum_get services.gateway.port)"
fi

From TypeScript:

import { isEnabled, get } from './lib/config';
if (isEnabled('services.gateway')) {
const port = get('services.gateway.port');
}

References to external secret stores. Sanctum never stores secrets in instance.yaml directly.

KeyTypeDescription
keychain_accountstringmacOS Keychain account name for stored tokens
onepassword_vaultstring1Password vault name for credentials
sops_filestringPath to SOPS-encrypted secrets file on the VM
secrets:
keychain_account: sanctum
onepassword_vault: FamilyOS
sops_file: /home/ubuntu/.openclaw/secrets.enc.yaml

Configuration specific to the Home Assistant integration.

KeyTypeDescription
sonos_speakerslistKnown Sonos speaker IPs (required for bridge networking)
cameraslistCamera integration entries
hvacmapHVAC zone definitions
home_assistant:
sonos_speakers:
- 192.168.1.101
- 192.168.1.102
- 192.168.1.103
- 192.168.1.104
- 192.168.1.105
- 192.168.1.106
- 192.168.1.107
- 192.168.1.108
- 192.168.1.109
- 192.168.1.110
cameras:
- name: front_door
type: blink
hvac:
main_floor:
type: ecobee

Defines the family members known to the instance. Used by agents for personalization and access control.

KeyTypeDescription
memberslistList of family member objects
members[].namestringDisplay name
members[].rolestringRole within the household
family:
members:
- name: Bertrand
role: admin
- name: Partner
role: member

Multi-site node topology. Each node represents a physical location running Sanctum infrastructure.

KeyTypeDescription
<node_id>mapNode identifier (e.g., manoir, chalet)
.typestringNode type: hub, satellite, mobile, or sensor
.hoststringLAN hostname or IP
.tailscale_ipstringTailscale mesh IP
.tailscale_namestringTailscale device name
.userstringSSH username on this node
.servicesmapPer-node service overrides (enabled flags)
nodes:
manoir:
type: hub
host: 192.168.1.10
tailscale_ip: 100.112.178.25
tailscale_name: berts-mac-mini-m4-pro
user: bert
services:
gateway:
enabled: true
home_assistant:
enabled: true
vm:
enabled: true
chalet:
type: satellite
host: chalet.local
tailscale_ip: 100.112.203.32
tailscale_name: berts-mac-mini-chalet
user: bert
services:
gateway:
enabled: true
home_assistant:
enabled: true
vm:
enabled: false
TypeDescription
hubPrimary site with full infrastructure (VM, all services)
satelliteSecondary site with reduced stack (no VM, lighter services)
mobileLaptop or portable device
sensorHeadless monitoring device

An annotated example is available at ~/.sanctum/instance.yaml.example and can be used as a starting point for new instances.


The YAML config is automatically converted to a flat JSON cache at ~/.sanctum/.instance.json. This cache is used by the shell and TypeScript libraries for fast key lookups. If you edit instance.yaml manually, regenerate the cache:

Terminal window
python3 ~/.sanctum/lib/yaml2json.py