-
v0.0.1 Pre-release
released this
2026-08-16 03:50:37 +02:00 | 320 commits to main since this releaseFirst prerelease of the controller: the control plane for a fleet of Shieldlist agents. Much of it will move; the protocol is versioned and additive from here on.
What it does. Assembles each machine's configuration from a shared tree of parsers, rules, policies, presets and exemptions plus one declaration per machine (level, state, who may lift, who reports, fleet switches, per-rule overrides), validates it with the agent's own loader, and pushes it to enrolled agents the moment it is loaded — over a long-lived, agent-initiated connection, with polling as the fallback. Records every sanction the agents decide, redistributes them across the fleet according to each machine's switches, and carries the operator's lifts back to the machines within seconds.
Operator's faces. A JSON API on its own listener with scoped tokens; a console served by the same binary — fleet, machine settings and overrides, bans with lift and exempt from any row, rules, address lookup, exemptions and published sources, audit, people and tokens, configuration; local accounts with a password and an optional one-time code; and
shieldas a client of the API (-controller URL -token T) with the same verbs on the whole fleet. Every write through the API or the console is a write to the configuration files, reloaded whole or reverted with the loader's errors as the answer.Published exemption sources. Googlebot, Google's special crawlers, Bingbot, Applebot and Cloudflare, fetched on command or on a schedule when named in controller.yaml, materialised as generated files under exemptions.d, refused when a list looks like nothing a crawler publishes.
Transport. HTTP with protobuf bodies (proto/shieldlist/v1/agent.proto), TLS self-signed by default with the fingerprint carried by the join token and pinned by the agent, or the operator's certificate, or plain HTTP behind a proxy that terminates TLS. Both sides exchange versions on every request; a refusal names both and says which side is behind. Requires an agent that speaks the protocol — the next agent release; agents 0.0.3 and older cannot enrol.
Not yet. Log ingestion and the event store, controller-placed rules and fleet replay, controller-side abuse reporting, owner scoping, packages. State is SQLite; the schema is versioned and migrated in place.
Assets: static binaries for linux amd64, arm64, armv7 and riscv64, the systemd unit, SHA256SUMS. Docs: docs/SPEC.md, docs/CONFIG.md ("The controller"), packaging/README.md.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)