Inspiration

What it does

Address Atlas

The private crypto portfolio tracker that sees what others miss—wallets, exchanges, tokens, staking, and rewards across 20 networks, with zero custody and no seed phrases.

Inspiration

A crypto portfolio rarely lives in one place.

One person may hold Bitcoin in a public wallet, tokens across several EVM networks, SOL and SPL assets on Solana, delegated positions and rewards in the Cosmos ecosystem, and balances on multiple exchanges. Existing portfolio tools often miss part of that picture—especially staking rewards, less prominent networks, or exchange holdings—or require users to centralize sensitive financial data.

I wanted to build a better answer to a simple question:

Can someone see their complete crypto portfolio without giving up custody, sharing a seed phrase, or creating a central database of their financial life?

That question became Address Atlas: a native macOS application that turns public wallet addresses and read-only exchange connections into one private, understandable portfolio.

What it does

Address Atlas gives users a unified view of:

  • Public wallet balances across 20 active blockchain networks
  • Native assets, ERC-20, SPL and TRC-20 tokens
  • Cosmos delegated stake and unclaimed rewards
  • XRP Ledger issued currencies
  • Read-only balances from Binance, Coinbase Advanced Trade and Kraken
  • Custom tokens and manually recorded holdings
  • Current USD valuations and historical portfolio snapshots

The supported networks span Bitcoin, Ethereum and 11 additional EVM environments, Solana, TRON, XRP Ledger, Cosmos Hub, Osmosis, Celestia and Stride.

Users never enter a seed phrase, private key or signing credential. Exchange connections require balance-only API permissions—never trading or withdrawal access.

The product also includes automatic refresh, visible partial-scan warnings, encrypted recovery kits, privacy-safe sharing, full portfolio export and optional cross-device encrypted sync.

How I built it

Address Atlas has two deliberately separated layers.

A local-first native macOS application

The product itself is built with Swift and SwiftUI. Blockchain and exchange requests run directly from the Mac using native Swift networking clients.

The scanners communicate with public RPC and REST services for Bitcoin, EVM, Solana, TRON, XRP Ledger and Cosmos-based networks. Results from very different protocols are normalized into one portfolio model with exact asset quantities, pricing metadata, staking positions and warnings.

Every supported network has a compiled-in identity. A response must prove that it came from the expected chain and, where necessary, from a coherent snapshot before Address Atlas accepts it. This prevents a responsive but incorrectly configured endpoint from silently reporting data from the wrong network.

Portfolio data, exchange credentials, settings and history are stored inside an AES-256-GCM encrypted SQLite vault. The vault key is protected by macOS Keychain, and recovery requires both a dedicated recovery file and a high-entropy code that is never uploaded.

An encrypted sync-only service

Optional sync is built with Next.js, TypeScript, PostgreSQL, WebAuthn passkeys, Docker and Caddy.

The Mac encrypts the complete vault before uploading it. The service stores only an opaque encrypted snapshot and cannot access wallet addresses, balances, labels, exchange credentials or portfolio history. Passkeys provide authentication without introducing reusable passwords.

The public server surface is intentionally narrow: authentication, encrypted vault transfer, configuration, health, session revocation and account deletion.

Engineering with OpenAI Codex

I used OpenAI Codex as an engineering collaborator, not as a user-facing AI feature.

Codex helped with adversarial code review, security threat modeling, concurrency analysis, recovery design, edge-case discovery and regression testing. It was especially valuable for challenging assumptions: what happens if an RPC returns internally inconsistent data, a session expires during decryption, the app crashes between file operations, or an emergency stop races with an already-authorized deployment?

That collaboration helped turn a working prototype into a much more resilient product.

Challenges I faced

Normalizing fundamentally different blockchains

There is no universal “get portfolio” API. An EVM balance, a Solana token account, a Cosmos delegation, an XRP trustline and a TRON contract response all have different identity, pagination, precision and snapshot rules.

The challenge was not merely fetching data—it was proving that unlike data could be combined without double-counting, silently losing precision or mixing different points in time.

Preserving useful results without hiding failures

Public providers rate-limit, paginate, disagree and occasionally return malformed responses. Treating every optional failure as a complete scan failure makes the app frustrating; ignoring failures makes the result misleading.

Address Atlas keeps independently verified balances while attaching visible warnings for anything incomplete, such as a failed price, token page, staking query or rewards request. Users see both the useful result and its limitations.

Making privacy recoverable

Encrypting a file is relatively easy. Building an encrypted product that survives crashes, missing Keychain records, damaged databases, interrupted syncs and multiple processes is much harder.

I implemented crash-durable file publication, cross-process vault locking, explicit damaged-vault quarantine and rollback, atomic Keychain replacement, recovery proofs and privacy-safe diagnostics. Recovery never creates an unrelated replacement key over an existing encrypted vault.

Preventing concurrency bugs

Scans, exports, sync, account deletion and app termination can overlap. Some of the hardest defects involved stale asynchronous work publishing after a newer operation had already started.

The final design uses explicit operation generations, cancellation ownership, shared capacity budgets, consistent database lock ordering and final-boundary session validation.

Reaching a real product-quality bar

The project now has more than 1,100 automated native and server tests, including real PostgreSQL integration tests, strict Swift concurrency checking, Thread Sanitizer runs, encrypted backup and restore drills, fresh-database recovery and universal macOS bundle validation.

The most important challenge was learning that quality does not come from one large feature. It comes from closing hundreds of small gaps between “works in a demo” and “can be trusted with real data.”

What I learned

The biggest lesson was that privacy is an architectural property, not a settings toggle.

A product cannot claim to be private merely because its database is encrypted. Network boundaries, exports, diagnostics, recovery files, authentication, logs and failure messages all have to preserve the same promise.

I also learned that read-only financial software still needs rigorous security. Even without custody, incorrect balances, leaked portfolio metadata or an unsafe recovery flow can cause real harm.

Finally, I learned that honest failure states create more trust than artificial certainty. Showing that a reward query failed while preserving verified wallet balances is better than either hiding the problem or discarding everything.

What I am proud of

Address Atlas combines unusually broad portfolio visibility with a deliberately narrow trust model:

  • 20 active networks
  • Wallets, tokens, exchanges, staking and rewards
  • Zero custody and no seed phrases
  • A native, encrypted macOS experience
  • Optional sync where the server never receives plaintext portfolio data
  • Recovery and operational controls designed for real failure scenarios

It is not another dashboard that asks users to surrender more data. It is a private map of assets they already control.

What is next

The next milestone is public Developer ID signing and notarized macOS distribution. After that, I plan to expand read-only exchange and staking coverage, enrich historical analysis and continue improving accessibility and provider resilience—without weakening the local-first, zero-custody architecture that defines Address Atlas.

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for address-atlas

Built With

Share this project:

Updates