This page explains, plainly, how your data is stored, how broker sync works, and what we do and don't do with it.
Meridian runs on a Raspberry Pi 5 that we operate — not a cloud provider. Your account, portfolio holdings, watchlist, and alerts live in a SQLite database on that Pi's own disk. There is no separate analytics database, no data warehouse, and no copy of your data anywhere else.
When you connect a broker, Meridian pulls your positions (ticker, shares, average cost, account type) from your broker on a schedule you trigger — either manually via "Sync" or automatically after a new connection. Each sync overwrites the stored positions for that account; nothing is appended or duplicated. Meridian never places trades, moves funds, or writes anything back to your brokerage — it only reads positions.
Broker connections go through Plaid, a SOC 2 Type II certified brokerage-data aggregator used by Venmo, Coinbase, and thousands of other fintechs, using OAuth:
You can revoke access at any time from your broker's connected-apps settings or through Plaid, and access is cut off immediately.
We do not sell, rent, or share your portfolio data, watchlist, or account activity with advertisers, data brokers, or any third party. There is no ad network integrated into Meridian. The only data we hold outside your self-hosted instance is Pro-tier waitlist emails, used solely to notify you when Pro launches.
Meridian is a Flask application served by Waitress, running as a systemd service on a Raspberry Pi 5. The Pi is reachable over the public internet only through a Cloudflare Tunnel — there are no inbound ports opened on the home network. The SQLite database runs in WAL mode for durability. There is no managed cloud infrastructure, no third-party hosting, and no external database — the whole stack lives on that one machine.