First Run
After completing the Installation, follow this guide to verify that everything is running correctly and complete the initial setup.
Run the Test Suite
Section titled “Run the Test Suite”Sanctum includes a test suite that validates your configuration, checks service health, and reports any issues.
-
Execute the full test suite.
Terminal window bash ~/.sanctum/tests/run-all.shThe suite runs checks in order:
- Configuration validation (instance.yaml syntax, required keys)
- Node identity verification (.node_id exists and matches config)
- LaunchAgent status (loaded and running)
- Service health (port reachability, HTTP endpoints)
- VM connectivity (SSH, bridge network)
- Dashboard availability
-
Review the output.
Each check prints a status line:
[PASS] instance.yaml is valid[PASS] node_id "your-home-name" matches config[PASS] com.sanctum.gateway is running[PASS] Gateway responding on port 18789[FAIL] com.sanctum.voice-agent is not runningAddress any
[FAIL]lines before continuing. -
Re-run after fixes.
If you needed to fix anything, run the suite again to confirm a clean pass:
Terminal window bash ~/.sanctum/tests/run-all.sh
Verify LaunchAgents
Section titled “Verify LaunchAgents”Check that all expected Sanctum LaunchAgents are loaded and running.
launchctl list | grep sanctumYou should see entries for each enabled service. A typical hub node might show:
- 0 com.sanctum.gateway- 0 com.sanctum.dashboard- 0 com.sanctum.homeassistant- 0 com.sanctum.firewalla-bridge- 0 com.sanctum.voice-agent- 0 com.sanctum.utm-autostart- 0 com.sanctum.watchdog- 0 com.sanctum.cloudflare-tunnelThe second column is the exit status. A 0 indicates the service exited cleanly (or is still running). A non-zero value suggests a startup failure.
If a LaunchAgent is missing from the list, load it manually:
launchctl load ~/Library/LaunchAgents/com.sanctum.<service>.plistIf it exits immediately with a non-zero status, check its log output:
# Most LaunchAgents log to the system loglog show --predicate 'process == "sanctum"' --last 5m
# Or check the specific stdout/stderr files defined in the plistcat /tmp/com.sanctum.<service>.stdout.logcat /tmp/com.sanctum.<service>.stderr.log| Symptom | Cause | Fix |
|---|---|---|
| Agent not in list | Plist not loaded | launchctl load ~/Library/LaunchAgents/com.sanctum.*.plist |
| Exit status 78 | Configuration error | Check instance.yaml for the affected service |
| Exit status 127 | Binary not found | Verify node, python3, or other binaries are in the plist PATH |
| Agent loads but port unreachable | Firewall or binding issue | Check if another process is using the port with lsof -i :<port> |
Open the Dashboard
Section titled “Open the Dashboard”Navigate to the dashboard in your browser.
-
Access the dashboard.
http://localhost:3001If you configured a hostname alias (such as a DNS entry or mDNS broadcast), you can use that instead:
http://your-home-name -
Verify service status.
The dashboard home screen shows the health of all enabled services. Each service tile displays:
- Service name and port
- Status indicator (green = healthy, red = down, yellow = degraded)
- Uptime since last restart
-
Check the config endpoint.
Confirm the dashboard is reading your configuration correctly:
Terminal window curl -s http://localhost:3001/api/config | python3 -m json.toolThe response should include your instance name, slug, and the list of enabled services. Secrets are excluded from this endpoint.
Verify Node Identity
Section titled “Verify Node Identity”Confirm that your node identity is correctly configured.
cat ~/.sanctum/.node_idThis should print the slug you set during installation (for example, your-home-name). Verify that it matches a key in the nodes section of instance.yaml:
sanctum_get nodes.$(cat ~/.sanctum/.node_id).typeThis should print hub for a hub node. If the command returns nothing or an error, double-check that your .node_id value matches the YAML key exactly.
Verify VM Connectivity
Section titled “Verify VM Connectivity”If you set up the Ubuntu VM, confirm the Mac-to-VM link is working.
-
Check the bridge interface.
Terminal window ifconfig bridge100You should see
10.10.10.1assigned to the interface. If the interface does not exist, verify that UTM is running and the VM is started. -
Test SSH.
Terminal window ssh ubuntu@10.10.10.10 'hostname && uptime'This should print the VM hostname and uptime without prompting for a password (assuming SSH key auth is configured).
-
Check VM services.
Terminal window ssh ubuntu@10.10.10.10 'systemctl --user status sanctum-gateway'The gateway service on the VM should show
active (running).
Enable the Watchdog
Section titled “Enable the Watchdog”The watchdog monitors all services and performs automatic remediation when it detects failures. It runs on a timer (default: every 10 minutes) and is managed by its own LaunchAgent.
Verify the watchdog is loaded:
launchctl list | grep com.sanctum.watchdogThe watchdog writes a health report after each run. Check the latest report:
cat /tmp/sanctum-watchdog-latest.logWhat Comes Next
Section titled “What Comes Next”With a verified installation, you are ready to start using Sanctum. Here are recommended next steps:
- Architecture Overview — Understand how the platform components fit together.
- Configure agents — Set up AI agents for security, efficiency, health, and finance.
- Add a satellite node — Extend the platform to a second location.
- Set up secret rotation — Enable automatic monthly token rotation.
- Customize the dashboard — Add or remove panels based on your enabled services.