Security
How your data is protected, what you control, and where your data goes.
Stay anonymous. An account needs one thing: an email address. We never ask for your name, phone number, date of birth, home address or an ID document, and an email alias works as well as your real address.
Create read-only keys. Our code does not trade or move funds. You set key permissions at the exchange; we do not check pasted key permissions. Leave trading, transfer and withdrawal off.
Choose what you connect. Enter holdings manually, or add a public wallet address. Wallets never need your seed phrase or private key.
Choose when AI runs. Hermes sends your full holdings and liabilities list to an AI provider with every message. Automatic briefs and analysis need the separate “Automatic AI analysis” switch in Settings, off by default. Imports and AI buttons send what you upload or ask when used.
What we know about you
We believe your wealth is nobody’s business but yours, so the only personal detail we ask for is your email address. We need it to sign you in, to reset a password and to send what you ask us to send.
- We never ask for your name, phone number, date of birth, home address, passport or any other ID document. There is no identity check.
- Optional, and only for the tools that use it: your tax residence and nationality (the tax engine needs them), and the holdings, notes and stays you choose to add. Skip any of them and the rest of the product still works.
- Sign in with Google is a choice, not a requirement. If you use it, Google shares the name and picture on your Google account with our sign-in provider. Sign up with an email address to avoid that.
- Card payments go through Stripe. Stripe asks for the card holder’s name and a billing address, because card networks and sales tax require them. Stripe keeps them. Our database stores only an anonymous Stripe customer reference and your plan.
Your financial connections
The connection guide shows which permissions to choose. Exchange and broker connections read balances and positions; wallet connections use public addresses. Open the details for credential storage, broker sign-in and the fixed IP you can use to restrict your keys.
Read-only access and credential storageKey permissions, broker sign-in, encrypted credentials, fixed IP and expiry rules.
Sovereign HNI only reads through your connections. We ask for the minimum permission scope that lets us see balances and positions, and we explicitly do not ask for withdrawal, transfer, or trading permissions: each exchange's guide in the connect form names the read-only setting to choose and the powers to leave off. The same guides are public: read-only API key guides. Nothing in our code places an order, transfers or withdraws. A key's permissions are set by you, on the exchange, and today we do not check them when you paste a key — so create it read-only, as the guide shows. A read-only key cannot move funds, even if our infrastructure were compromised. Brokers you connect through SnapTrade are connected with read access only.
API keys and bank access tokens are stored encrypted (Fernet) in the database. They are only decrypted in memory during a sync run and are never written to logs. Wallet connections use public addresses only — we never ask for a seed phrase or private key. Interactive Brokers is connected through its read-only Flex Web Service: the token can only return the report you configured, never trade or transfer. Brokers connected through SnapTrade are signed in on the broker's own page; your password and 2FA never reach us. Every exchange and broker sync leaves our infrastructure from a single fixed IP address (5.75.170.180), so you can restrict your API keys to it. Bybit, OKX and KuCoin say a read-only key restricted to an IP never expires, and Binance stops deleting unused keys once they are restricted; each connection's guide shows that provider's own rule.
Where your data goes
Some providers run the service. Others receive data only when you use a feature or connect an account. Open a group for the providers, what they receive and when. The full provider and trigger details in our privacy policy give the complete per-trigger explanation.
Running the serviceHosting, sign-in, error reports and limited product analytics.
- Supabase — Postgres database and authentication (all account and portfolio data at rest, encrypted; Frankfurt)
- Render — backend FastAPI hosting (Frankfurt)
- Vercel — frontend hosting and edge CDN
- Sentry — error monitoring on both sides (crash reports, stack traces, page URL, browser type; a 10% sample of performance timings). We do not attach holdings or balances to error events and do not enable session replay
- PostHog (EU Cloud) — product analytics on the funnel only: which onboarding or demo step was shown, which persona was picked, whether a signup succeeded. Our own code checks every event in your browser and drops anything not on a short fixed list — our labels, the page path without its query string, and your browser, OS and device type — so no amounts, holdings, names, emails, referrer or campaign tags, and we never identify you to it. Nothing is stored on your device: PostHog counts visitors cookielessly, with a one-day id it computes on its servers from your IP address and user agent and then deletes them from the event. Session replay, heatmaps, click, error and performance capture and surveys are off, and PostHog cannot switch them on from its side
AI featuresAnthropic, DeepInfra and OpenAI receive data when their features are used.
- Anthropic — the AI behind Hermes, the Monitor desk and the Second Brain. Hermes chat sends your full holdings and liabilities list with every message; the Monitor brief and the “From your Second Brain” feed are opt-in — off until you switch on “Automatic AI analysis”, and only then do they run when you open the Monitor tab (net worth, asset mix, top holdings, liabilities, tax residence, nationality, watchlist, goal / task / note titles); AI-written daily and weekly digests and the grading of the desk's forecasts sit behind the same switch; wealth import, presence import and the Second Brain AI buttons send what you upload or ask when you use them. Not used to train models under Anthropic's commercial API terms.
- DeepInfra — model inference in the United States: runs DeepSeek's open-weight model as the first model behind Hermes chat, the what-if bar and the Second Brain Ask bar, only when you send a message (Hermes chat sends your full holdings and liabilities list); harder messages and attached PDFs or images go to Anthropic's Claude. Under DeepInfra's data-privacy terms, messages are held only in memory and never stored on disk, request content is not logged, and nothing is used for training; DeepSeek, the company, receives nothing.
- OpenAI — Whisper speech-to-text: the audio clip, only when you use the microphone or send a Telegram voice message (and only when the feature is enabled)
Email and TelegramOnly when you opt in to digests, link Telegram or create a trip-inbox address.
- Resend — email digests, only if you opt in: your digest address and each digest — your net-worth movement, the holdings that moved it most, and up to three news headlines with the reason each touches your money (a holding you hold, your tax residence or another country of yours), with or without Automatic AI analysis; and, only if you create a trip-inbox address, the booking emails sent to it
- Telegram — only if you link the bot: your chat id and the messages you exchange with Hermes, plus opt-in digests with the same content as the email ones
Accounts, wallets and AI apps you connectOnly for the accounts, public wallet addresses, agents or apps you connect.
- Interactive Brokers — its Flex Web Service, only if you connect an IBKR account: your Flex token and query id, returning positions and cash
- SnapTrade — hosted broker sign-in, only for brokers you connect through it: it holds the broker session and sees which broker you use under an opaque id (never your email); we receive positions, balances and account names
- Plaid, Salt Edge, Lean — bank linking (US / EU / MENA), only for banks you connect; mempool.space, Shyft, Zerion, Alchemy, Hyperliquid, public chain RPC endpoints (or Infura / Helius when configured) and DeFi protocol APIs (Jupiter, Kamino and the like) — balances for wallet addresses you add
- Your own AI agent — only if you create an MCP access token: whatever it requests, within the scope you granted
- An AI app you connect (ChatGPT, Claude or another MCP client) — only after you approve it on our sign-in page: whatever it requests, read-only unless you allowed changes; its access tokens work only on the MCP endpoint, expire within an hour and end when you disconnect the app
Prices, news and weatherMarket tickers, Monitor countries and topics, without an account identifier.
- CoinGecko and Yahoo Finance — price data (ticker symbols only, batched across all users, no account identifier)
- Google — Google News RSS search queries for your Monitor countries and Second-Brain-derived topics (no account identifier); YouTube players on the Monitor's Live TV
- X API — our server reads public posts from a fixed list of public X accounts for Monitor Signals. People signed in to their own Sovereign account can see them; anonymous demo sessions cannot. Requests to X carry no Sovereign account identifier or portfolio data. Post avatars load from X's CDN in your browser, so X may receive your IP address and browser data when an avatar loads.
- Open-Meteo — weather for the capitals of your Monitor countries (no account identifier)
Stripe, at launch — when paid tiers launch, Stripe will process payments. Card details will never touch our servers.
How your data is protected
Connections are encrypted in transit. Stored application data is encrypted on Supabase in Frankfurt, and our own nightly copy is encrypted before it is stored at Hetzner in Finland. Sign-in is checked on every backend request, and access to your portfolio records is restricted to your account.
Encryption, sign-in and data isolationStorage, supported sign-in methods, session verification and database rules.
Encryption in transit
Every connection to sovereignhni.com is forced over HTTPS with HSTS (max-age=63072000), which means browsers refuse to ever talk to the domain over plain HTTP. Backend API calls between the frontend and the FastAPI server use the same TLS-protected channel.
Encryption at rest
Application data lives in a Postgres database hosted on Supabase (Frankfurt, EU), which encrypts storage at rest by default. Supabase's own backups are encrypted on the same infrastructure. We keep one copy of our own: every night a server we run at Hetzner (Germany) copies the database, restores it into a throwaway database to prove the copy is complete, and encrypts it with age (X25519) before it is stored in a Hetzner Storage Box in Finland. The decryption key is not on that server and Hetzner never holds it. Each copy is deleted after 14 days. Apart from that copy, the providers listed on this page receive data to perform a task, not to store your portfolio.
Authentication
Authentication is handled by Supabase Auth. We support email + password (minimum 8 characters) and Google sign-in. Apple sign-in is not yet available. Sessions are short-lived JWTs verified on every backend request — both HS256 (legacy projects) and ES256 via JWKS (current projects) are supported. Tokens are never logged or stored server-side beyond their natural verification.
Data isolation
Your portfolio records are keyed by user_id. The backend validates the JWT on every request and only ever queries rows belonging to the authenticated user, and the database enforces row-level security policies on top. There is no shared workspace, no admin panel that can read user data, and no internal team-wide access.
Browser security headersThe browser protections the frontend sets and the hosting layer enforces.
The frontend sets the following headers on every response:
X-Content-Type-Options: nosniffReferrer-Policy: strict-origin-when-cross-originX-Frame-Options: DENY(the dashboard cannot be embedded in an iframe by another site)Permissions-Policydenying camera, geolocation, and FLoC; microphone access is limited to this site for voice questions
Strict-Transport-Security (2-year max-age) is enforced at the hosting layer — Vercel sends the header on every HTTPS response by platform default — rather than being set by the application itself.
What we deliberately do not do
- We do not sell user data. Ever. To anyone. For any reason.
- We do not use your data to train AI models — ours or anyone else's.
- We do not run marketing or advertising trackers on the dashboard.
- We do not ask for withdrawal credentials or for keys with trading, transfer or withdrawal permission, and nothing in our code places an order or moves funds.
- We do not have a backdoor that lets staff read your data.
- We do not send your portfolio to any provider not listed above.
Report a vulnerability
If you believe you've found a security issue, please email admin@sovereignhni.com with a description and reproduction steps. We will respond within 72 hours and work with you on a coordinated disclosure timeline.