Security

We take this very seriously.

Mastrmine pilots ASICs worth thousands of euros each. Here's how we protect your miners, your data, and your access — straight talk.

Architecture in 30 seconds

Mastrmine has three isolated layers:

  • The bridge runs on your LAN. It talks to ASICs (port 4028) and collects hashrate, temperature, power. No inbound ports — it only initiates outbound HTTPS connections to the cloud.
  • The cloud (Supabase in Frankfurt) receives aggregated snapshots and exposes them via authenticated API + Postgres RLS. The cloud never sees your miners' local IPs.
  • The mobile app authenticates via Supabase Auth (JWT) and only accesses data filtered by RLS policies — i.e. only your organization's data.

What we store (and what we don't)

✅ We store

  • Email + bcrypt password hash (Supabase Auth)
  • Miner snapshots: hashrate, temp, power, pool state
  • Configuration: PMAX thresholds, thermal targets, alerts
  • Audit log of viewer actions (target temp, pause)
  • Payment status (no card details)

❌ We never store

  • Plaintext passwords (ever — bcrypt only)
  • The BTC wallet your miners send rewards to
  • Your pool credentials (user/worker/password)
  • Local IPs of your miners (the bridge masks them)
  • Card details (Lemon Squeezy handles those in V1.5)

Hosting — GDPR-first

All data is hosted at Supabase in their eu-central-1 region in Frankfurt. No transfer outside the EU for storage.

Supabase is SOC 2 Type II compliant, GDPR-ready, and uses AWS Frankfurt as underlying infra. Daily backups stay in the EU.

Transactional emails go through Resend (GDPR-compliant, signed DPA). USDT payments are on-chain on Tron — no intermediary stores your banking info.

Multi-tenant isolation

One operator's organization is never visible to another operator. This guarantee is enforced at the Postgres layer via Row Level Security (RLS) — every query is automatically filtered by the user's JWT. It's not a forgettable application check; it's enforced by the database.

When an operator invites a viewer, the viewer only sees miners of the organization they're a member of — and only the groups/owners the operator granted access to. Viewer actions (target temp change, pause) are tracked in an immutable audit log consultable by the operator.

Bridge — secrets and open core

The bridge is open-core: code is public on GitHub. You can inspect it, build it yourself, or fork it. Official binaries are compiled via GitHub Actions and shipped with verifiable SHA-256 checksums.

On pairing, the bridge negotiates a unique secret with the cloud (high-entropy bridge_secret). It's stored in plaintext in %ProgramData%\Mastrmine\Bridge\bridge.json on Windows or /etc/mastrmine/bridge.json on Linux — access restricted to SYSTEM/root.

All bridge ↔ cloud communication uses TLS 1.3. The secret is never transmitted in plaintext after the initial pairing.

Data retention

  • Miner snapshots: 7 days (Free), 30 days (Home), 1 year (Pro), unlimited (Studio/Operator/Corporate).
  • Viewer audit log: 1 year minimum, deleted on request.
  • Inactive accounts: warning at 6 months, deletion at 12 months.
  • Account deletion: within 30 days on simple email request (info@mastrmine.app).

Found a vulnerability?

We welcome responsible security reports. Email info@mastrmine.app with "Security disclosure" as subject. We commit to:

  • Acknowledge within 24 business hours
  • Patch critical issues within 7 days
  • Credit you publicly (unless you prefer otherwise)
  • Not pursue researchers acting in good faith

Official bug bounty program planned post public launch (Q4 2026).