Remote Controller is a durable remote command execution platform with three components:
agent (Go daemon on managed hosts)control-plane (Go gRPC server + PostgreSQL state)console (Wails + Svelte 5 desktop shell)The control path is agent-initiated so hosts behind NAT/firewalls can still be managed.
flowchart LR
Operator["Operator (Desktop Console)"] -->|"Bearer token"| Control["Control Plane (gRPC API + Dispatcher)"]
DB[("PostgreSQL")]
Control <--> DB
Agent1["Agent A"] -->|"mTLS gRPC ControlStream"| Control
Agent2["Agent B"] -->|"mTLS gRPC ControlStream"| Control
Control -->|"RunJob / CancelJob"| Agent1
Control -->|"RunJob / CancelJob"| Agent2
Agent1 -->|"Output + Status"| Control
Agent2 -->|"Output + Status"| Control
AgentChannel.ControlStream)./healthz, /readyz, /metrics).OUTPUT_RETENTION, default 168h)./proto protobuf contracts (buf based generation)/gen/proto generated gRPC/protobuf Go code/agent daemon implementation/control-plane API, stream server, dispatch, persistence/console Wails/Svelte frontend skeleton/deploy docker compose stack/builder profile-driven custom build tool/scripts development helpers/docs architecture/API/runbook/threat modelmake proto
make lint
make test
make dev-up
curl http://localhost:8080/healthz
curl http://localhost:8080/readyz
curl http://localhost:8080/metrics
make dev-down
make builder-init
# edit builder/profile.json (or start from builder/profile.example.json)
make builder-build-all
Builder outputs:
build/<profile>/bin/remote-controller-agentbuild/<profile>/bin/control-planebuild/<profile>/artifacts/agent/*build/<profile>/artifacts/remote-host/*Windows build profiles (build.goos=windows) emit .exe binaries automatically.
Control API methods require a bearer token.
dev-tokenauthorization: Bearer dev-tokenOIDC mode:
OIDC_ISSUER_URL=<issuer URL>OIDC_AUDIENCE=<client id/audience>authorization metadata.The control plane is secure-by-default:
CA_CERT_FILE, SERVER_CERT_FILE, and SERVER_KEY_FILE are required.CONTROL_PLANE_ALLOW_INSECURE_DEV=true or --allow-insecure-dev.RequireAndVerifyClientCert).AGENT_STALE_AFTER (default 30s)AGENT_OFFLINE_AFTER (default 2m, must exceed stale threshold)control-plane/internal/store integration tests require Postgres.
TEST_DATABASE_URL (or DATABASE_URL) to enable migration/idempotency integration tests.