Rust-native · No Chromium · Built for the open network

One address bar.
Every network.

p2p-studio speaks I2P, Hyperdrive, IPFS, AT Protocol, and the clearnet — from a single address bar, in a single binary, on a Servo rendering engine that shares no code with Chromium or Firefox.

6
URL schemes natively
0
Chromium lines of code
Rust
all the way down
n3xhf7qzd2gkemv4…wxyz.b32.i2p/blog hyper://a3f9b1d8e7c04…2/public/index.html ipfs://bafybei…4jfkdm/whitepaper.pdf at://did:plc:xzy4…/app.bsky.feed.post/1 https://alexwykoff.com
*.b32.i2p hyper:// ipfs:// at:// magnet: https://
Crate map — 16 crates, 1 binary
renderer
servo winit webdriver
router
protocol-router proxy-gateway
protocols
dc-i2p-router dc-hyperdrive dc-ipfs aurora-locus
gateways
hyper-gateway magnet-gateway concord-gateway fileverse-gateway
Why this exists

When Apple moved computing from the mainframe to the desktop, the device did not just shrink. The relationship changed. Computing became personal. Yours.

Browsers were designed for a read-only web. A century of institutional knowledge, pressed flat into pages, served on request. We are two generations past that moment. The era of read-write-own is here. You are not just consuming the network; you are part of it. Your identity, your data, your compute.

The cloud was supposed to improve on this. Instead it built a second mainframe era with better marketing. Your data lives on someone else's machine. Your identity is issued by a corporation. Your compute is rented by the minute.

p2p-studio is built for the next era. It looks like a browser in parts, because the address bar is still the right metaphor for navigating a network. But it is something new: a structure and a tool. The artist's gallery, and also the studio, the brushes, the paint, and the canvas.

The rendering engine

Servo — not a Chromium fork, not a Gecko wrapper.

Every browser you've used for the past decade — Chrome, Edge, Brave, Opera, Vivaldi, Arc — runs Blink. Firefox runs Gecko. p2p-studio runs Servo: Mozilla's experimental Rust-native layout engine, architected for parallel CSS/layout evaluation and memory safety by construction.

Servo is not a product. It's a research engine. p2p-studio is one of the earliest production integrations — windowed via winit, headless for CI, with a full WebDriver API on top.

Rust throughout Parallel layout No Blink, no V8 winit windowed mode WebDriver API Headless CI
renderer feature flags
engine Servo (servo-renderer feature)
windowed WinitServoRenderer
headless ServoRenderer + tokio
webdriver CommandBus + DebugEventBus
fallback NoopRenderer (no-op)
chromium lines 0
Protocol support

Not a proxy. Native routing for every P2P scheme.

The protocol-router crate resolves every URL at navigation time — no extensions, no manual proxy settings. Each protocol dispatches to its own purpose-built gateway running as a local service inside the browser process.

*.b32.i2p / *.i2p

Invisible Internet Protocol

Onion-routing over I2P tunnels. Every .i2p domain routes through a full in-process I2P router — not a proxy to an external i2pd instance.

SSU2 + NTCP2 transports
SAM protocol session management
Hidden mode (no IP in RouterInfo)
LeaseSet republishing, path migration
hyper://

Hyperdrive / Hypercore

P2P file system from the Dat ecosystem. Drives are HAMT-indexed, replicated over I2P for anonymity, and served locally through a built-in Axum HTTP gateway.

HAMT-backed file store
Swarm-based peer discovery
I2P-native replication (dc-hyperdrive)
PUT/GET via hyper-gateway
ipfs://

IPFS

Content-addressed files over IPFS, with an I2P SAM transport layer so your IPFS activity never exposes your IP to peers in the swarm.

SAM transport for anonymity
I2P B32 address → full dest key
Modified base64 alphabet (-, ~)
dc-ipfs node + gateway
at:// (AT Protocol)

Bluesky / AT Protocol

Browse and interact with the AT Protocol social graph natively. The embedded Aurora Locus PDS means your identity and data live in the browser, not on a third-party server.

Full PDS — account, repo, blob, auth
DID resolution + handle validation
XRPC handlers (9 endpoints)
Federation, OAuth, relay support
magnet:

BitTorrent Magnets

Magnet links resolve through the built-in magnet-gateway — no separate torrent client required. Coming soon: WebTorrent over WebRTC.

magnet-gateway (local Axum service)
Routed through protocol-router
WebTorrent (roadmap)
https://

Clearnet (optional)

Standard TLS clearnet is supported but not required. Set allow_clearnet = false in config to disable it entirely and route everything through I2P and P2P protocols only.

allow_clearnet = true | false
Blocked: Blocked("reason") RouteTarget
PAC file proxy server built-in
Proxy mode (port 8118)
dc-i2p-router

The first browser with an I2P router, not an I2P plugin.

Other browsers treat I2P as an external dependency — configure i2pd, point the proxy, hope it's running. p2p-studio forks Emissary (the Rust I2P implementation) directly into dc-i2p-router, audited and integrated as a first-class subsystem with 983 unit tests.

SSU2

SSU2 transport + connection migration

Full SSU2 wire protocol with PATH_CHALLENGE / PATH_RESPONSE address migration. Handles network interface changes without dropping sessions.

NTCP2

NTCP2 encrypted transport

TCP-based I2P transport with Noise XX handshake and ChaCha20-Poly1305 framing. Both transports run concurrently.

SAM

SAM v3 session management

The browser's upper layers (IPFS, Hyperdrive, PDS) talk to the embedded router via SAM, the same API used by external i2pd — so protocol integrations are portable.

HIDDEN

Hidden router mode

Omits direct IP addresses from RouterInfo. Publishes only SSU2 introducer addresses, so the router participates in the network without advertising its location.

AUDIT

Security-audited fork

15 findings documented and resolved: timing-safe comparisons via subtle::ConstantTimeEq, Zeroize on secret material, zero raw == on cryptographic data.

Tunnel model (simplified)
browser SAM v3 dc-i2p-router
hop 1 → encrypted I2P net
hop 2 → encrypted I2P net
hop N → destination .b32.i2p
Hidden mode: RouterInfo omits direct IP. Only SSU2 introducer addresses published — peers can reach you, nobody knows where you are.

Force-republish, lease set management, and wait_for_integration() ensure I2P is ready before any outbound connection attempt — no silent "tunnel not built yet" failures.

aurora-locus + dc-atproto-pds

Your AT Protocol identity lives in the browser, not on someone else's server.

Most AT Protocol clients rely on Bluesky's PLC directory and hosted PDS. p2p-studio ships a full Personal Data Server — Aurora Locus — with 30+ modules covering everything from DID resolution to OAuth 2.0 DPoP to cross-PDS federation. Your posts, follows, and blobs go into a local key-value store you control.

Aurora Locus — PDS modules
account actor_store auth oauth + dpop blob_store repo (CAR v1) federation identity sequencer rate_limit metrics mailer admin validation cache read_after_write
Embedded XRPC handlers
POSTcom.atproto.repo.createRecord
PUTcom.atproto.repo.putRecord
DELcom.atproto.repo.deleteRecord
GETcom.atproto.repo.getRecord
GETcom.atproto.repo.listRecords
POSTcom.atproto.sync.getRecord
POSTcom.atproto.blob.uploadBlob
Data layer — dc-atproto-types
CID encoding CIDv1 SHA-256 base32/base58btc
serialization DAG-CBOR (deterministic)
tree structure MST (Merkle Search Tree)
export format CAR v1 (varint-framed)
signing ed25519-dalek + zeroize
key storage redb (embedded, no TCP/RDBMS)
DID resolution Cached + stale-TTL fallback
handle validation Reserved + regex guard
federation Cross-PDS auth, relay, discovery
i2p transport serve_over_i2p() — PDS on darknet

The PDS can serve over I2P — your Bluesky-compatible social presence is reachable as a .b32.i2p address, no domain registrar required.

Hyperdrive + IPFS

P2P file protocols that use I2P as the transport layer.

IPFS and Hyperdrive are powerful for content addressing and P2P file sharing — but they both expose your IP to peers. p2p-studio routes both over I2P, so your reads and writes stay anonymous.

hyper://

Hyperdrive

dat / hypercore ecosystem

A P2P file system built on Hypercore append-only logs. Each drive has a 32-byte ed25519 keypair. Files are stored in a HAMT for efficient sparse access, and blocks are replicated to peers over I2P SAM sessions.

HAMT-indexed file blocks with HAMT_MAGIC header
Swarm peer tracking via dc-hyperdrive/swarm
I2P SAM replication: replicate_from_peer()
hyper-gateway: local Axum server on :11975
Drive creation via POST /hyper, file access via GET/PUT
ipfs://

IPFS

content-addressed, I2P-routed

Content-addressed IPFS over an I2P SAM transport. Peers exchange blocks using I2P destination keys instead of IP addresses — so the swarm sees your I2P identity, never your network location.

I2P SAM session replaces TCP for all peer connections
B32 ↔ full destination key resolution (no DHT leak)
I2P-modified base64 alphabet (-, ~ substitution)
dc-ipfs node + gateway crate
SAM session create-before-connect ordering enforced
Privacy by configuration

One config file. Privacy as a hard constraint, not a browser extension.

p2p-studio exposes privacy controls as first-class config values, not buried settings menus. All are reflected in the protocol router at navigation time — not as a best-effort filter.

clearnet

Clearnet on/off switch

Setting allow_clearnet = false makes the protocol router return Blocked("reason") for any https:// or http:// URL. No clearnet traffic leaves the process.

allow_clearnet = false
proxy

Built-in HTTP proxy + PAC file

A proxy gateway runs on :8118 and a PAC file server on :8119, routing clearnet-configured requests through I2P automatically. Works with any OS proxy setting.

proxy_port = 8118
pac_port = 8119
VPN

VPN subnet mode

A configurable VPN subnet (default 10.8.0.0/24) lets p2p-studio act as a system-level I2P gateway for other applications on the device. Documented for iOS, Linux, and macOS.

vpn_subnet = "10.8.0.0/24"
identity

Key vault + address book

A built-in KeyVault stores per-site cryptographic keys, and an AddressBook maps human-readable names to I2P B32 destination keys — so friend.i2p stays meaningful across sessions.

pds_handle = "alice.p2p"
hidden

Hidden router mode

The embedded I2P router can run in hidden mode — publishing only introducer addresses to the network, never a direct IP. The router participates fully while remaining location-anonymous.

HiddenModeConfig {
  enabled: true,
  transit_max: 32
}
identity

Self-hosted PDS identity

Your AT Protocol DID, signing key, and repo are stored in an embedded redb database inside the browser. No third-party PDS required to participate in the AT Protocol social graph.

pds_enabled = true
Full architecture

Every request goes through one router. Every protocol is a first-class citizen.

p2p-studio — protocol routing table
user input
address bar URL startup --url flag page link click
renderer
Servo (servo-renderer) WinitServoRenderer (windowed) WebDriver API
dispatches to protocol-router
router
resolve_magic_host() RouteTarget enum
*.i2p
I2PProxy → dc-i2p-router
hyper://
HyperGateway → :11975
ipfs://
IpfsGateway → :8080
magnet:
MagnetGateway → :11976
https://
Direct (or Blocked)
subsystems
dc-i2p-router (SAM, SSU2, NTCP2) aurora-locus PDS dc-hyperdrive swarm dc-ipfs node
storage
KeyVault (keys) AddressBook (.i2p names) redb (PDS records) HAMT drives
Early access

A browser for networks that exist
outside the clearnet.

p2p-studio is in active development. Early access is open to developers, researchers, and privacy advocates who want to help shape the first Rust-native multi-protocol browser.

No spam. No Chromium. No tracking.
Linux macOS Windows iOS (VPN proxy mode)