Skip to content

scidsg/hushline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5,502 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hush Line

Hush Line is an open source whistleblower platform for secure, anonymous, one-way disclosures to journalists, lawyers, and other trusted recipients.

Hosted service: https://tips.hushline.app
Start here: https://hushline.app/library/docs/getting-started/start-here/

Accessibility Performance Run Linter and Tests GDPR Compliance CCPA Compliance Database Migration Compatibility Tests E2EE and Privacy Regressions Workflow Security Checks Python Dependency Audit W3C Validators Public Record Link Check Docs Screenshots

Why Hush Line

Hush Line is built for safety-critical reporting workflows where trust, anonymity, and usability all matter. The project design priorities are:

  • Usability of the software
  • Authenticity of the receiver
  • Plausible deniability of the whistleblower
  • Availability of the system
  • Anonymity of the whistleblower
  • Confidentiality and integrity of disclosures

Core Capabilities

Area What Hush Line Provides
Anonymous submissions No submitter account required for sending disclosures
Encryption End-to-end encryption workflow with recipient PGP keys, plus server-side fallback path
Receiver trust Verified account workflow and trusted directory UX
Account security Password authentication with optional TOTP 2FA
Privacy access Tor onion support and privacy-preserving defaults
Communication workflow Message status management, one-way replies, and optional email forwarding modes
Org customization Branding controls, onboarding guidance, and configurable profile fields
Operational controls Strong CI checks, migration compatibility testing, and workflow security validation

Quickstart (Local)

1) Clone and start

git clone https://github.com/scidsg/hushline.git
cd hushline
docker compose up

Open http://localhost:8080.

2) Common commands

Command Purpose
make lint Run formatting/lint/type checks
make test Run full test suite with coverage output
make fix Apply formatting/lint autofixes
make run-full Run Stripe-enabled development stack
docker compose down -v --remove-orphans Reset local Docker state

Security and Privacy

Report security issues through GitHub Security Advisories when possible, or via: https://tips.hushline.app/to/hushline-security.

Agentic Coding Policy

Hush Line uses a risk-based model for agentic software development. Canonical policy: docs/AGENTIC-CODE-POLICY.md.

Quick summary:

  • Human-first is required for high-risk surfaces: funding work, databases/migrations, auth, payments, CI/CD, production infrastructure, and security/privacy boundary changes.
  • AI-first is allowed for low-risk work such as scoped docs/process edits and isolated low-risk implementation tasks with clear rollback.
  • If scope expands into high-risk areas (for example DB/auth/env/security), ownership immediately escalates to human-first.
  • Ownership mode is tracked (human-first vs ai-first) with a quarterly operating target of roughly 70/30.
  • Approved coding model policy is defined in AGENTS.md. As of 2026-02-13, the minimum approved coding model is gpt-5.3-codex high.

Policy discussion thread: https://github.com/orgs/scidsg/discussions/1313

Contributor Checklist

Before opening a PR:

  1. Read and follow AGENTS.md (repository policy and safety-critical rules).
  2. Check open Dependabot updates first, then handle applicable dependency/security updates.
  3. Keep diffs minimal and behavior-preserving unless a behavior change is explicitly intended.
  4. Add or update tests for every behavior change.
  5. Run required checks locally:
    • make lint
    • make test
  6. If behavior-critical paths changed, run CI-style coverage validation:
docker compose run --rm app poetry run pytest --cov hushline --cov-report term-missing -q --skip-local-only
  1. Run dependency vulnerability audits:
make audit-python
make audit-node-runtime

When frontend/runtime dependencies change, also run:

make audit-node-full

If local audit commands are blocked by network/tooling availability, document that in the PR and wait for a passing Dependency Security Audit workflow before merge.

  1. Ensure commits are cryptographically signed and verifiable on GitHub.

Documentation Map

Latest Screenshots

Guest directory screenshot Onboarding screenshot

More screenshots: https://github.com/scidsg/hushline-website/tree/main/src/assets/img/screenshots

In the Media

Contributing and Conduct

Contributors are expected to follow the Code of Conduct:
https://github.com/scidsg/business-resources/blob/main/Policies%20%26%20Procedures/Code%20of%20Conduct.md

License

See LICENSE.