Connecting...
WebSocket
DID

Sovereign computing,
between domains you
already own.

Northstar is a protocol for personal computing on the open web. Every user is a DID, every node is a server they own, every beam lives on the author's node. Channels, rooms, and live streams federate between nodes through signed events and gossip. No platforms in the middle.

Implementation
TypeScript · Node.js
Transport
HTTP · JSON-RPC
Identity
did:key · Ed25519
License
AGPL-3.0
Primitives

Five ideas. Everything else composes from them.

The whole protocol fits in your head. If you've worked with event sourcing, you'll recognize most of it. The surface area is small enough to learn in an afternoon.

01 · IDENTITY

You are a DID

Decentralized identifier from an Ed25519 keypair — did:key:z6Mk…. Self-certifying: the public key is embedded in the DID. Portable across nodes. Private key never leaves your client.

const client = await NorthstarClient.connect(
  "wss://your-node.example"
)

console.log(client.did)  // did:key:z6Mk…
02 · SPACES

Three space types

channel for public broadcast. dm for private groups. stream for live broadcast. Each space has owner, members, append-only event log.

const channel = await client.space.create({
  type: "channel",
  name: "My Channel",
  uniqueId: "my-channel",
})
03 · BEAMS

Content at the source

Beams are content-addressed at beam/{authorHash}/{id} and stored on the author's node. Spaces store refs, not copies. SDK signs automatically.

await client.space.beam(channel.id, {
  title: "On sovereign substrates",
  body: "Email is older than platforms…",
})
// Stored on your node, ref gossiped
04 · GOSSIP

Events via DAG broadcast

Owner node assigns sequence and signs. Broadcasts via tier-based DAG tree. Events reach all member nodes within seconds, no central relay.

await client.subscribe(channel.id)

client.on("event", (event) => {
  // signed, sequenced, deduped
  console.log(event.body)
})
05 · PAYMENTS

P2P transfer via GNU Taler

Privacy-preserving payments using RSA blind signatures. Payer anonymous, payee known. Push and pull payments. No blockchain fees.

await client.wallet.create()
await client.wallet.send({
  recipientHash: "bob_hash",
  amount: "5.00",
})
In code

Build whole applications
on a small surface.

A Reddit-equivalent on Northstar is hundreds of lines of application code, not a multi-year platform engineering project, because the substrate handles identity, authentication, signed history, federation, and gossip.

The SDK handles authentication, signing, and cross-node routing. Connect to your node, join a space, and beam. The content lives on your node; the channel stores a reference.

import { NorthstarClient } from "@northstar/client"

// Connect and authenticate (automatic)
const client = await NorthstarClient.connect(
  "wss://your-node.example"
)

// Join a remote space
await client.space.join(
  "northstar://other-node.example/channel/z6MkfA/protocols"
)

// Beam into space · SDK handles signing
await client.space.beam("channel/z6MkfA/protocols", {
  title: "On sovereign substrates",
  body: "Email is older than most platforms…",
})

// Space owner verifies, assigns sequence,
// gossips to 5 random member nodes.
In context

How Northstar fits among adjacent protocols.

Each of these solves a real problem. Northstar's bet is that programmable per-entity policy plus a coordination substrate generalizes further than any single application protocol.

Protocol Federation unit Transport Policy model Native value
Northstarv0.5 · 2026 per-DID (you) HTTP space rules + gossip GNU Taler (native)
AT ProtocolBluesky per-account (PDS) HTTP / WebSocket external labelers
ActivityPubMastodon per-instance HTTP instance admins
MatrixElement per-homeserver HTTP / WebSocket room admins
Nostrrelays per-keypair WebSocket relay-level Lightning (out of band)
Where we are

Honest status.

The protocol is implemented and running. Everything listed below works today, tested against real infrastructure.

Live

  • did:key identity & Ed25519 signing
  • HTTP node-to-node protocol
  • DAG broadcast with tier-based gossip
  • Spaces (channels, DMs), ref-based beams
  • Livestream relay trees
  • TypeScript SDK (@northstar/client)
  • GNU Taler P2P payments

Future

  • E2EE for DMs (MLS)
  • Reputation system
  • Content moderation framework
  • Federation discovery

Ready to build on substrate
instead of platforms?

Read the spec. Browse the source. Run a node. The protocol is open, the implementation is real, the deadline is shipping.