Technical Transparency

How it works.
What we store.
What we don't.

Harbor Privacy is built on open source software. This page explains exactly how your DNS queries are handled, what data we keep, and links to the code running your service so you can verify it yourself.

What's actually running your DNS.

Every component is open source and auditable. No proprietary black boxes.

AdGuard Home
DNS filtering engine — blocks ads, trackers, and malware domains
github →
Unbound
Recursive DNS resolver — your queries never touch Google or Cloudflare
nlnetlabs.nl →
DNS over HTTPS (DoH)
Encrypted transport — your ISP cannot see your DNS queries
learn more →
Oracle Cloud Infrastructure
Hosted in US-East region — your data never leaves the United States
oracle.com →
Harbor Dashboard & Webhook
Customer portal and Stripe integration — open source, auditable
github →

What happens when you visit a website.

When your device looks up a domain, here is the exact path your query takes:

# 1. Your device sends an encrypted DNS query over HTTPS Your iPhone → doh.harborprivacy.com/dns-query/YOUR_CLIENT_ID # 2. AdGuard Home checks the domain against block lists AdGuard Home → check against Hagezi Pro blocklist → if blocked: return NXDOMAIN (domain does not exist) → if allowed: forward to Unbound # 3. Unbound resolves the domain directly Unbound → query authoritative DNS servers directly → no Google (8.8.8.8), no Cloudflare (1.1.1.1) → result returned to your device # 4. Statistics updated (aggregate only) total_queries++ and blocked_queries++ # The actual domain name is NOT logged

What we store. What we don't.

This is every field written to disk when you sign up. Nothing else is stored.

Field What it is Stored
name Your name from Stripe checkout YES
email Your email address for login and billing YES
client_id Your unique identifier used in your DoH address YES
stripe_customer_id Stripe's ID for your billing account YES
plan Which plan you're on (remote, light, install) YES
status Whether your account is active or cancelled YES
total_queries Aggregate count of DNS queries today YES — count only
blocked_queries Aggregate count of blocked queries today YES — count only
DNS query content The actual domains you looked up NEVER
browsing history Websites you visited NEVER
IP address Your home or device IP NEVER
device information What devices you use NEVER

Why we can't see what you looked up.

AdGuard Home is configured with query logging disabled at the system level. This is not a policy — it is a technical configuration. The log files do not exist on disk.

The only DNS-related numbers stored are aggregate totals: how many queries were made and how many were blocked. These are counters, not records. They reset daily and contain no domain names.

This means if you asked us "what websites did this customer visit?" we genuinely could not answer that question even if we wanted to.

Verify it yourself.

The webhook server that handles your signup, the customer dashboard you log into, and the automation that manages your AdGuard client are all publicly available on GitHub. You can read every line of code that processes your data.

tbrzr/Harbor-privacy-backend

Webhook server, customer dashboard, AdGuard automation, iOS profile generation

View on GitHub →

The AdGuard Home and Unbound configuration running on our server uses default open source builds with no modifications to the core DNS handling code.

What happens when you cancel.

When your subscription is cancelled — whether by you or automatically — the following happens within one hour:

# Automated wipe process 1. AdGuard client deleted → your client_id stops resolving DNS 2. iOS profile invalidated → DoH address no longer functions 3. Customer record marked inactive 4. Dashboard login access revoked 5. Cancellation email sent with removal instructions

Your name and email are retained for billing records as required by Stripe's terms. All DNS configuration and access credentials are permanently deleted.

To request full deletion of your account including billing records, use the contact form.

Ask anything.

If you have questions about how your data is handled that aren't answered here, reach out directly. No support ticket system, no chatbot.

Contact Form →

Or text: 781-974-6196