Le-Space

Data and software you own.

The Local-First Peer-to-Peer Stack

No servers. No accounts. No passwords. Your data lives on your device, collaboration happens directly between devices — relay infrastructure starts on demand and stops when you're done. Data archiving on decentralized storage.

The Local-First Stack

Every layer works without a central service — and every layer is an open-source building block you can use on its own.

Projects

Demos and prototypes, not slideware — each project is a building block of the stack with demo, source, and packages.

Relay Button screenshot

Relay Button

beta
Infrastructure

Deploy libp2p relay infrastructure on demand — the toolchain at the core of the local-first stack.

  • One click, one relay: deploys a libp2p/OrbitDB relay (signaling, bootstrap, IPFS pinning) — run it for a meeting, a project or years, then stop it.
  • Full automation: build qcow2 RootFS images, publish to IPFS, manage VM lifecycle & retention via CLI and GitHub Actions.
  • Embeddable UI: React & Svelte components — the actual "Relay Button" — for any app.
  • Bootstrap discovery: relays register themselves; apps discover them automatically.
  • New — remote browser replication: CI spins up a real browser on a fresh VM in another network and verifies true cross-network P2P replication end-to-end — replacing services like testingbot.com for local-first P2P apps.
  • Runs on Aleph Cloud: decentralized compute, VMs without a cloud account; further providers — decentralized and centralized — planned.

Simple Todo — simple-todoSimple Todo — collab01Simple Todo — passkey01Simple Todo — acl01 simple-todo

Simple Todo

tutorial
IdentityDataSync

Tutorial for local-first P2P PWAs: WebAuthn/Passkey identity, OrbitDB data, browser-to-browser sync. No server, no accounts, no passwords.

▶ simple-todo — chapter "main" — every visitor automatically joins the same shared todo list; just open the URL.

▶ collab01 — chapter "collab01" — create your own lists and share them with chosen peers via their OrbitDB address.

▶ passkey01 — chapter "passkey01" — sign in with a passkey instead of a throwaway key. Your WebAuthn DID signs every entry and is shown as its author.

▶ acl01 — chapter "acl01" — private, owner-only lists with per-DID write permissions. Grant or revoke access at runtime, without the list address changing.

Universal Connectivity screenshot

Universal Connectivity

stable
Sync

Our fork of the official libp2p project with the Relay Button built in: the cross-language showcase — chat between Go, Rust, TypeScript and Nim peers in the browser — extended so anyone can deploy their own relay on demand.

UCAN Store screenshot

UCAN Store

in development
IdentityArchive

Browser-based storage with WebAuthn/Passkey DIDs and UCAN delegations — upload to Filecoin (planned) without accounts or passwords.

→ Storacha upload-service fork — UCAN 1.0 upgrade planned

OrbitDB WebAuthn DID screenshot

OrbitDB WebAuthn DID

beta
Identity

Passkey-based identity for OrbitDB — no extensions, just your browser and a biometric sensor. Every oplog entry has to be signed, so the real question is where the signing key lives:

  • Plain keystore (OrbitDB default): the Ed25519 key sits unencrypted in the browser's IndexedDB. Anything that runs script on your origin can copy your identity and write as you — permanently.
  • WebAuthn-encrypted keystore: same key, AES-GCM-encrypted at rest, rehydrated into memory only after a WebAuthn unlock (PRF, largeBlob or hmac-secret). One prompt per session, writes stay fast; safe at rest, in memory while the tab is open. The pragmatic default — demo.
  • Hardware-backed keys (varsig): no OrbitDB keystore at all. The key is generated inside the authenticator — Secure Enclave, TPM, security key — and never leaves it. One passkey prompt per write, and nothing in the browser left to steal — demo.
  • Why varsig: an authenticator never hands you a plain signature over your payload — it signs its own authenticatorData + clientDataJSON-hash structure. The algorithm varies on top of that: Apple, Android and Windows platform authenticators sign with ES256 (P-256), while EdDSA/Ed25519 (COSE -8) is in the spec and works on a handful of security keys — so a passkey DID cannot assume either curve. Varsig is the self-describing envelope carrying structure and algorithm together, so the assertion verifies as an OrbitDB oplog signature and, via toUcantoSigner(), as a UCAN delegation signature. Without it a hardware key cannot be the signer of either, whichever curve it happens to use.

libp2p WebRTC over QR screenshot

libp2p WebRTC over QR

prototype
Sync

Two browsers connect directly as libp2p peers — no relay, no signaling server. One phone scans the WebRTC handshake off the other screen.

  • Signaling as a QR code: offer and answer travel out-of-band as signed, deflate-compressed payloads instead of through a circuit relay. A text field is the copy/paste fallback.
  • Signed, not just scanned: the SDP carries the DTLS fingerprint, so signing it with the libp2p key binds the WebRTC session to the peer id — the same idea certhash uses in WebRTC-Direct. That is what makes it safe to skip the usual encryption handshake.
  • Tampering fails closed: a modified payload is rejected before any dial happens, and a browser refuses its own offer instead of self-dialing.
  • Works without infrastructure: useful where there is no relay to reach — the same room, the same LAN, an air-gapped network.

→ New — released on npm as @le-space/libp2p-webrtc-qr

OrbitDB Relay

beta
InfrastructureData

Relay and pinning service keeping OrbitDB databases available while peers are offline.

p2pass

prototype
IdentitySync

Peer-to-peer distribution of passkey credentials — recover your identity when a device is lost.

Akash Deploy PWA

prototype
Infrastructure

Relay-Button-style deployments on Akash Network — a second decentralized compute target.

→ Consolidation with Relay Button planned

Orbit Blog

beta
DataSync

Decentralized blogging that replicates between browsers — publish without a hosting provider.

OrbitDB ⇄ Storacha Bridge

beta
Archive

Backup and restore local-first data to Filecoin/Storacha with full hash and identity preservation.

FAQ

Common questions about local-first, encryption, metadata and infrastructure — answered honestly, including what isn't finished yet.