First public release of HuShield: a community-driven, privacy-first spam call and text filter for iOS.
What works
Backend (Go + MySQL) — production-ready and tested at 86.7% coverage.
- App Attest challenge / verify / assert, with strictly-increasing counter replay protection
- Trust-weighted, time-decaying scoring (30-day half-life) resolving to
suspected(>= 2.0) andblocked(>= 5.0) tiers; admin overrides always win - Blocklist delta with keyset pagination, neighbor-spoof widening, crowd-sourced caller ID, and
action:"unblock"tombstones so removals are not silently dropped by clients - On-demand single-number reputation lookup
- APNs silent push to nudge clients to resync
- Cold-start seeding from FTC/FCC public complaint data
- Five migrations,
go:embeded and applied automatically at startup
iOS client (native Swift) — builds and tests green on simulator.
SpamFilterKit: API client, App Attest enrollment/refresh, blocklist delta sync, keychain-backed token store- Call Directory extension for blocking and labeling calls
- SMS Filter extension for fully offline message classification
- SwiftUI app: Report / Lookup / Status / Setup
- 100 unit tests plus view-model, integration, and XCUITest suites
Privacy
The only identity anywhere in this system is an Apple App Attest key_id. No accounts, no phone numbers tied to reporters, no contact upload, no analytics identifiers. This is the product, not a setting.
What is NOT yet verified
Being explicit, because these matter:
- Real App Attest has never verified a genuine device attestation.
ATTEST_MODE=applehas only been exercised against injected test material. See #8. - The extensions have never run on physical hardware. Simulator only.
- The Dockerfile has never been built. See #1. Production deploys use the systemd pattern instead.
ATTEST_MODE=mockaccepts any attestation and must never be used outside development.
Contributing
Genuinely wanted — there are 10 open issues, most labeled good-first-issue, drawn from real gaps rather than filler. Start with CONTRIBUTING.md.
Licensed Apache-2.0. The HuShield name is reserved — see TRADEMARK.md.