System Architecture & Topology¶
StackPilot is designed around an autonomous agent-hub model engineered for resilience, isolation, and low operational overhead.
1. Architectural Topology¶
flowchart TB
subgraph Browser ["Web Client / Admin Console"]
UI["SPA Dashboard (Vanilla JS)"]
Components["Modular UI Engines\n(MetricsEngine, WorkloadFilter, WorkloadTable)"]
UI --- Components
end
subgraph Hub ["StackPilot Central Hub (Node.js / Express)"]
Router["Express REST API (:8081)\n(CSP Nonce, Double-Submit CSRF, Helmet)"]
AuthStore["Auth Store\n(Bcrypt / PBKDF2 + Forward-Auth)"]
TokenStore["Agent Token Store\n(0600 Permissions, Atomic Persistence)"]
ConfigSource["Config Store\n(Default Overlays)"]
TemplateEngine["Template Engine\n(In-Memory Cached Templates)"]
Router --> AuthStore
Router --> TokenStore
Router --> ConfigSource
Router --> TemplateEngine
end
subgraph Node ["Managed Host (Rootless Linux Host)"]
subgraph Agent ["StackPilot Agent (:9091)"]
PyAgent["Python ZipApp (:9091)\n(TLS + Pinned SHA-256 Fingerprint)"]
Watchdog["Self-Heal Systemd Timer\n(1-min Active Check + Critical Monitor)"]
end
subgraph Systemd ["Systemd User Manager"]
Quadlets["Quadlet Units\n(*.container, *.pod, *.volume)"]
Journald["systemd-journald\n(Structured Workload Logs)"]
end
subgraph Podman ["Podman Runtime"]
Containers["Rootless Containers & Pods"]
end
PyAgent <--> Systemd
PyAgent <--> Podman
Systemd --> Podman
end
Browser <== "HTTPS / REST + Nonce CSP" ==> Hub
Hub <== "mTLS + X-Agent-Token" ==> Node
2. Core Architectural Tenets¶
1. Rootless by Default¶
All workloads, agent collectors, and self-heal timers run within unprivileged user namespaces. Root privilege is never required for normal operations.
2. First-Class Systemd Native (Daemonless Quadlets)¶
Instead of maintaining a continuous container management daemon, StackPilot compiles definitions into native systemd unit files (.container, .pod, .volume, .network). Systemd manages supervision, cgroups resource limits, journal logging, and restarts.
3. Zero-Dependency Agent¶
The StackPilot agent (stackpilot_agent.pyz) is distributed as a single Python ZipApp utilizing only the Python 3 standard library (http.server, urllib, ssl, json, subprocess). No pip, no virtual environments, and no package manager access required on managed hosts.
4. Decoupled Agent-Hub Topology¶
Managed nodes operate autonomously. If the Central Hub goes offline, containers, health checks, self-heal timers, and systemd units continue running unaffected.
5. Deterministic Template Interpolation¶
Host setup, agent installation, and Quadlet conversions are driven by static templates with strict snapshot-tested verification, eliminating script drift.