Report where trust already lives.
Use the web app, Thunderbird add-on, or MV3 browser extension to send a suspicious message to an operator you know.
Self-hostable reporting infrastructure
Karst gives people a trusted place to report suspicious messages. It protects the evidence, explains the verdict, connects related reports, and sends reviewed indicators to systems the operator controls.
What changes
Karst serves reporters and analysts without asking either group to trade away the context they need.
Use the web app, Thunderbird add-on, or MV3 browser extension to send a suspicious message to an operator you know.
See the authentication failures and detection signals behind a result instead of a context-free red warning.
Analysts connect repeated reports into incidents and campaigns, then publish reviewed indicators through signed outputs.
From inbox to action
Each service owns one part of the job, with durable queueing and narrow access between stages.
Three shipped clients produce the same bounded report format and status lifecycle.
The RFC822 object moves to Garage; the pipeline receives identifiers and hashes.
Email authentication, URLs, attachments, and privacy-filtered text feed classification.
The console keeps evidence access, overrides, approvals, appeals, and audit history together.
Signed webhooks and local blocklists carry useful indicators without exporting the reporter.
A visible trust boundary
Karst stores encrypted RFC822 evidence in a dedicated object vault. Workers exchange a report ID, evidence pointer, hashes, and bounded structured signals—not the message body itself.
Implementation status
Architecture documents describe the full destination. This split reflects the code that is implemented and locally verified today.
A working local stack covers collection, privacy filtering, rules-based classification, campaign analysis, analyst review, retention, and selected outputs.
These capabilities remain design intent or require target-operator evidence. They are not presented as available product features.
Single-tenant by design
Every operator runs an isolated Karst instance. There is no shared SaaS control plane and no cross-tenant database boundary. Docker Compose is the current deployment path, with the services and observability needed to operate the stack together.
The Email Inspector analyses one message in memory without filing a report, storing evidence, or dispatching intelligence.