A native nsite:// browser for the Nostr web.
Named after Titan, the largest moon of Saturn — shrouded in a dense amber atmosphere, hiding an entire world beneath.
Titan is a desktop browser that resolves nsite:// URLs using Nostr relay infrastructure and renders static websites stored on Blossom servers. It implements NIP-5A (nsite v2) and the NSIT name protocol — a Bitcoin-native name registration system for permanent, decentralized domain ownership.
nsite://titan
|
v
Nostr name index (kind 35129 → pubkey)
|
v
Nostr relays (kind 10002 relay list → kind 35128 site manifest)
|
v
Blossom servers (SHA256 hash → file blob)
|
v
Rendered in native webview
Type a name, get a website. No DNS. No ICANN. No certificates. No hosting providers.
Nostr gives everyone a cryptographic identity — a public key. But public keys look like this:
npub1qe3e2054qkxsyt0yzem0xxv5gdpgmstahaqma3ja6pv2n9auqelqh2q4jf
Nobody can remember that. Nobody can type it. Nobody is putting that on a business card.
The traditional web solved this problem with domain names — but domain names are controlled by ICANN, can be seized by governments, expire if you miss a payment, and cost money every year. Current nsite gateways just move the npub into a subdomain (npub1qe3e....gateway.com), which doesn't solve readability and reintroduces DNS as a single point of failure.
Titan replaces all of that. Register a name once on Bitcoin for ~$0.10. It's yours forever. No renewals. No registrar. No one can take it from you.
nsite://westernbtc
That's it. Simple enough to say out loud, short enough for a billboard, permanent as the blockchain.
Names are first-come, first-served, and permanent. There are only 36 possible single-character names. Only ~1,300 two-character names. Words like bitcoin, wallet, news, shop — each can only be claimed once, ever. There is no expiration, no appeals process, no second chance.
Two names registered for testing (titan and bitcoin). Everything else is unclaimed. Fair launch.
The NSIT name protocol is an open, Bitcoin-native name system using OP_RETURN transactions. Names are permanent, first-in-chain-wins, and transferable. Any client can implement it — Titan is the reference implementation.
OP_RETURN payload (80 bytes max):
NSIT 01 00 0a westernbtc <32-byte pubkey>
^^^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^
magic ver act len name x-only Schnorr key
- Register: First valid
NSITOP_RETURN for a name claims it forever - Transfer: Spend the ownership UTXO with a new pubkey in the OP_RETURN
- Ownership: UTXO-based — whoever can spend the ownership output controls the name
- Names:
a-z,0-9, hyphens. 1-41 characters. Lowercase only.
See docs/whitepaper.md for the full protocol specification and docs/architecture.md for the system architecture.
titan/
crates/
titan-types/ Core types — names, URLs, errors
titan-bitcoin/ OP_RETURN codec, block scanner, UTXO indexer
titan-resolver/ Nostr relay queries, Blossom fetching, cache
titan-app/ Tauri desktop shell — two-webview architecture
Browser (multi-webview, tabbed):
- Chrome webview: tab strip (in titlebar), address bar, back/forward/refresh, side panels (bookmarks, console, settings)
- Per-tab content webviews: nsite content via
nsite-content://protocol with URL-encoded site identity on_navigation: interceptsnsite://links, keyboard shortcuts viatitan-cmd://on_page_load: syncs content URL back to address bar, injects console forwarding- Native webview history per tab for back/forward
Stack:
- Language: Rust
- Desktop: Tauri 2 (system webview, multi-webview, overlay titlebar)
- Name index: Nostr events (kind 35129/1129/15129) via race-then-linger search
- Site manifests: NIP-5A v2 (kind 15128/35128) with v1 fallback
- Content storage: Blossom servers (SHA256-verified blobs)
- Name ownership: Bitcoin UTXO-based (OP_RETURN registration + transfer)
- Signer: Built-in NIP-07 (
window.nostr) backed by the OS keychain — no external extensions needed - Updater: Tauri plugin-updater with minisign verification — in-app auto-update
Related (in westernbtc-monorepo):
apps/titan-nsite/—nsite://titanhomepage (search, register, transfer, browse, guide)services/nsit-indexer/— k8s service: watches Bitcoin blocks → publishes name index as Nostr events
Phases 1–10 complete. Phase 11 (developer tools) shipped in v0.1.7 — three-tab dev console (Logs, Network, Application), ring-buffered network log with copy-as-cURL, localStorage/sessionStorage/cookies viewer, drag-to-resize side panel, and level/source filters on the Rust log stream. Auto-lock and encrypted file fallback remain on the signer side. See docs/roadmap.md.
nsite://titan is live — registered on Bitcoin mainnet, published as nsite v2, loads as the browser's default homepage. Name lookups via Nostr relays with race-then-linger search. No Bitcoin Core required.
Press ⌘⌥K on macOS or Ctrl+Shift+K elsewhere to open the dev console. Three tabs:
- Logs — Rust tracing events + content-page
console.*calls + a JavaScript REPL that evaluates against the active tab. Level + source filters keep the signal-to-noise ratio sane. - Network — every
nsite-content://,titan-nostr://,fetch(),XMLHttpRequest, andWebSocketrequest. Click a row for headers and request body, then "Copy as cURL" to reproduce it from a terminal. - Application — live view of
localStorage,sessionStorage, and cookies for the active tab. Delete individual keys or clear each kind entirely.
Drag the left edge of the dev console panel to resize it. The width persists across sessions.
Installing an unsigned macOS build? Gatekeeper blocks the DMG on first open. Clear the quarantine attribute from the downloaded DMG before mounting it:
xattr -d com.apple.quarantine ~/Downloads/Titan_<version>_aarch64.dmgThen double-click the DMG and drag Titan to Applications normally. Every release page on GitHub shows the exact command with the version filled in.
# Prerequisites: Rust toolchain, system webview libraries
cargo build
cargo test
# Run the browser
cargo tauri devNix users: direnv allow first
- Architecture — system design, resolution flow, event kinds
- Whitepaper — protocol design and security model
- NSIT Name Protocol — wire format, UTXO ownership, Nostr index
- Titan Bookmarks — private cross-device bookmark sync (kind 10129)
- Roadmap — build phases and status
MIT