Everything HuShield does
The complete feature system, with honest status. Anything that has never run against real hardware or a real deployment is not marked shipped — including some things that work fine in tests.
- Shipped verified working
- In progress built, not yet verified end to end
- Help wanted open for contributors
iOS
-
Call blocking and labelling
In progressA Call Directory extension blocks known-bad numbers outright and labels suspected ones, driven entirely by the locally-synced list.
-
Offline SMS filtering
In progressAn SMS Filter extension classifies incoming messages with no network access at all. Filtering must work in airplane mode.
-
In-app reporting and caller ID
ShippedReport spam or not-spam, look up a number, and contribute a community caller-ID name.
-
Shared App Group sync
ShippedOne framework handles App Attest enrolment, token refresh, and blocklist delta sync, shared across the app and both extensions via an App Group.
-
Real-time blocking (Live Caller ID Lookup)
Help wantedBlock on the live community score at the moment a call arrives, instead of waiting for the next blocklist sync. Uses Apple's privacy-preserving encrypted lookup, so the server never learns which number was queried.
-
Clearer first-run setup
Help wantedThe Status tab says "Not enrolled yet" without an obvious way to fix it — enrolment happens as a side effect of the first sync. It should be something you can just do.
-
Strict mode for unknown callers
Help wantedSilence callers who aren't in your contacts, but let numbers the community has vouched for ring through anyway — so you don't lose the pharmacy and the school along with the spam.
Backend
-
Community spam reporting
ShippedAny attested device can report a number as spam or not-spam. A device's identity is an Apple App Attest key and nothing else — no account, no phone number, no contact upload.
-
Trust-weighted, time-decaying scoring
ShippedEach report contributes trust_weight × category_multiplier × exponential_decay(age, 30-day half-life). Not-spam votes subtract. Crossing 2.0 labels a number; 5.0 blocks it. An admin override always wins.
-
Per-device reputation
ShippedA device's vote weight is a pure function of its reporting tenure, volume, and how often its votes disagreed with the eventual community outcome. This is what makes brigading expensive.
-
Efficient blocklist delta
ShippedKeyset pagination, neighbour-spoof widening, crowd-sourced caller ID, and removal tombstones so a number that stops being blockable is explicitly un-blocked on clients rather than silently vanishing from the feed.
-
Cold-start seeding from public data
ShippedImports FTC and FCC public complaint datasets via synthetic seed devices, so the blocklist is useful before the first real user arrives.
-
Device token lifecycle
Shippedattest → verify → assert-refresh, with strictly-increasing counter replay protection. Tokens refresh without re-attesting.
-
On-demand number lookup
ShippedLook up the current reputation of a single number without pulling the whole blocklist.
-
Silent push refresh
In progressServer-initiated APNs silent pushes nudge clients to resync so a newly-blocked number reaches devices without waiting for the next poll.
-
Only wake devices that need it
Help wantedSilent refresh pushes currently go to every device after every recompute, whether or not that device's blocklist changed. Targeting the ones actually affected saves everyone else's battery.
-
Verified real App Attest
ShippedApple App Attest verified end to end against production from a physical iPhone — confirmed by the Apple-issued attestation receipt stored server-side, with fabricated attestations correctly rejected.
Operations
-
Production hardening
ShippedReal App Attest validated on physical hardware, a shared challenge store for multi-instance deploys, and scheduled score recomputation.
-
Verified container image
ShippedBuilds for linux/amd64 and linux/arm64, with GOARCH derived from the build target so a cross-build cannot silently produce a binary for the wrong architecture. The compose stack passes the full smoke lifecycle.
-
Production smoke test
Shipped17 checks against the live deployment, run automatically after every deploy. Proves negatives too: a forged attestation must be rejected, so a server accidentally left in mock mode fails the gate.
-
iOS tests in CI
Help wanted134 iOS tests run only on a maintainer's laptop, so an iOS pull request can't be verified before a human builds it. Needs a macOS runner and a durable fix for Xcode/simulator-runtime mismatches.
-
Continuous integration
ShippedThere is no CI. The test gate lives in a local Makefile, which means a contributor cannot see their PR pass before a maintainer runs it by hand.
5 of these need a hand
Each one links to a real, claimable GitHub issue with context on where to start.
See how to contribute →