How it works
shieldie-guard is a single-binary security agent a server operator installs on their own machine. It bans brute-forcers and scanners locally, fail2ban-style. This service is the optional layer above it: installations that opt in report the addresses they banned, and pull back a list of addresses the whole network agrees on.
Three layers, no shortcuts
- 1. Reports
- Every participating server sends its bans (address, jail, attempt count, its own ban length). Each server holds an install key; the service stores only the key's hash. Private, loopback, CGNAT and documentation ranges are refused, and a server can never report its own address.
- 2. Classifier (deterministic)
- An address enters the shared feed only when at least 3 independent, warmed-up servers in at least 2 distinct source networks (/16 or /32) have banned it. One person running many servers in one hosting account counts as one voice, so nobody can push a victim's address into the feed alone. Confidence (0–100) grows with independent witnesses, attack kinds and freshness, and decays as reports age. Addresses nobody has seen for 7 days leave the feed.
- 3. AI analyst
- Only addresses that passed the classifier are shown to a small Claude model, which sees numbers and jail names — never any text an attacker or reporter wrote — and chooses how long the network should keep blocking: 6 h, 24 h, 7 d or 30 d. It can lengthen a rule-based block, never shorten it. Spend is capped per hour; over the cap, rule-based timing stands.
Using the feed
Anyone may pull it, no key needed:
curl https://api.shieldie.cloud/v1/feed
curl "https://api.shieldie.cloud/v1/feed?since=2026-09-20T10:00:00Z"
Each entry carries ip, until (RFC 3339), confidence and state (shared or expired). Pass the returned cursor back as since to get only changes. A shieldie-guard installation does this for you and always keeps its own admin_ips allowlist above the feed, so the network can never lock an operator out.
Reporting
curl -X POST https://api.shieldie.cloud/v1/enroll -H 'content-type: application/json' -d '{"agent":"my-tool 1.0"}'
curl -X POST https://api.shieldie.cloud/v1/report -H "authorization: Bearer sgc_…" -H 'content-type: application/json' \
-d '{"bans":[{"ip":"198.51.100.7","jail":"sshd","attempts":12,"ttl_secs":3600}]}'
Enrolment is limited per source network per day. Reporters that send mostly invalid data are quarantined: their reports are kept but stop counting.
What is not here
No accounts, no logins, no buttons. Nothing on this site identifies a reporting server. The service never connects to participants; they pull.