The Open Social
Protocol.
Tribe Protocol is a decentralized social protocol built on Solana. Fully owned identity, portable social graph, and instant peer-to-peer gossip.
What is Tribe, exactly?
Tribe is a decentralized social protocol on Solana — like email, but for social. Anyone can run a node, build a client, or read the source. No company controls who can post or who can see what.
You own your identity
Your account is a Solana keypair — no email, no password, no central authority that can deactivate you. Your TID and all your content go wherever you go.
No single server
Content lives across a mesh of independent hubs that gossip with each other. If one goes down, the others still have the data. Run your own hub on a $5 VPS or a Raspberry Pi.
Fork the client
The protocol is open and permissionless. Build a different UI, a mobile app, a CLI, or a bot — they all speak the same signed-message format and talk to the same hubs.
Key concepts.
Six architectural building blocks that explain how the whole protocol fits together. Read these once and the design will click.
TID (Tribe ID)
A unique auto-incrementing 64-bit numeric identity registered on Solana. Each TID has a custody wallet (daily signatures) and a recovery wallet (reclaims custody keys if lost). Just keys you own.
App Keys
Scoped ed25519 signing keys delegated by your TID. Your main wallet stays secure offline; the app signs daily actions on your device. Keys can be rotated, revoked, or scoped with granular permissions.
Signed Messages
Every single action — posts, likes, follows, DM ciphertexts, poll votes — is a protobuf envelope signed with your device app key and hashed with BLAKE3. Hubs validate them cryptographically.
Social Graph
A custom PDA-per-relationship follow graph design on Solana. Highly efficient, O(1) checks, unlimited follows, and rent reclamation. The most scalable on-chain social graph.
Ephemeral Rollup
An optimistic sequencer that confirms follow/unfollow intents instantly (<50ms), then batches them into Solana L1 instructions every 10 seconds. Real-time feel with L1 finality.
.tribe Usernames
Human-readable, decentralized names bound to TIDs. Registered on-chain, transferrable, and directly embedded into the namespace with annual renewals to prevent squatting.
How a message travels.
From cryptographic signatures on a local device to the distributed peer network — four steps, zero central servers.
User signs a message
The app builds a MessageData payload (type, TID, timestamp, body). The ed25519 app key signs the BLAKE3 hash locally on device. This produces a TribeMessage envelope.
Hub validates and stores
The hub fetches the TID's app key record from Solana, verifies the ed25519 signature, checks the BLAKE3 hash, and writes the envelope to Postgres.
Hub gossips to peers
Every 5 seconds each hub broadcasts 'have' frames (hashes of recent messages). Peer hubs reply with 'want' for any they're missing. Full envelopes flow back.
Clients get real-time updates
Apps subscribe to the hub WebSocket (/v1/ws). New validated messages are pushed immediately — no polling, no central broker.
Architecture.
Five decoupled layers. Each is a separate open-source repository with its own setup. Swap any layer — the contracts between them are cryptographically signed envelopes and public endpoints.
Applications
tribeapp.wtf · tribe-app · tribe-ios · tribe-instaWeb clients (Next.js) and native SwiftUI iOS apps — a Twitter-shaped one (tribe-ios) and an Instagram-shaped one (tribe-insta). All build signed envelopes locally; the hub never receives plaintext intent.
Shared Swift Core
tribe-core-swiftByte-for-byte protocol code consumed by both iOS apps — BLAKE3, NaCl box DM crypto, ed25519 envelope signing, BIP39, Solana HD derivation, and the backup file format.
TypeScript SDK
tribe-sdkSingle entry-point client covering identity, social graph, tweets, DMs, channels, bookmarks, polls, events, tasks, crowdfunds, tips, search, karma, and notifications. Published as @tribe-protocol/sdk.
Decentralized Hub
tribe-hubFastify + Postgres node that stores validated signed envelopes, indexes Solana events via WebSocket subscription + startup backfill, and syncs with peers over a pull-based gossip protocol.
Ephemeral Rollup Sequencer
tribe-er-serverAccepts follow/unfollow intents signed by custody wallets, confirms instantly (optimistic), batches follow_delegated / unfollow_delegated instructions, and settles to L1 every 10 seconds.
Solana Programs (12)
tribe-protocolAnchor programs for identity (TID, app keys, usernames), social graph with ER delegation, hub discovery, tips, crowdfunds, tasks, channel ownership, karma, polls, and events.
The on-chain layer.
Every program is modular and independently deployed. Identity registries, PDA-per-relationship social graph, tip receipts, and trustless karma verification — each has its own Anchor program workspace.
tid-registryMints TIDs, tracks custody + recovery addresses
app-key-registryRegisters, revokes, and rotates app signing keys
username-registryHuman-readable .tribe usernames bound to TIDs
social-graphPDA-per-relationship follow graph + ER delegation
hub-registryOn-chain hub discovery — URL, gossip key, heartbeat
tip-registryOn-chain tip receipts with SOL transfer in one ix
crowdfund-registryCampaign escrow — pledge, claim, or refund
task-registryLocal tasks with optional reward escrow
channel-registryFirst-registration ownership of channel slugs
karma-registryTrustless karma from on-chain tip + task proofs
poll-registryOne-vote-per-TID polls with 8-slot tally
event-registryEvents with one-RSVP-per-TID and lat/lng
Run a Node in Seconds.
Join the distributed network and host your own piece of the protocol. The Homebrew formula installs the hub + ER sequencer, sets up Postgres, and auto-generates a unique hub ID so two laptops never collide.
# Tap and install the hub + ER stack
brew tap chaalpritam/tribe
brew install --HEAD tribe
# Boot Docker services and gossip in
tribe start
# Check peers and sync coverage
tribe peers
tribe sync
# Optional: install the demo UI
brew install --HEAD tribe-app && tribe-appStart building in minutes.
One TypeScript client for the whole protocol — identity, social graph, tweets, encrypted DMs, channels, bookmarks, polls, events, tasks, crowdfunds, tips, stories, search, and karma.
import { TribeClient } from '@tribe-protocol/sdk';
const tribe = TribeClient.forDevnet(provider);
// Register a TID on Solana
const { tid } = await tribe.identity.tid.register(recovery);
// Publish a signed post
await tribe.tweets.publish(tid, "gm from the mesh", appKey);
// Follow someone (instant via Ephemeral Rollup)
await tribe.social.follow(tid, targetTid);Every piece on GitHub.
The protocol programs, the TypeScript SDK, the storage hub, the ER rollup, and all frontends live in public repositories. Read the source, run a hub, fork the app, or contribute.
TribeEcoMono-repo containing every submodule, the tribe CLI, and Homebrew formulas.
tribe-protocol12 Solana programs (Anchor): TID, app keys, usernames, social graph, hubs, tips, polls, events, and more.
tribe-sdkTypeScript SDK for the whole protocol — @tribe-protocol/sdk.
tribe-hubDecentralized hub: Fastify + Postgres + Solana indexer + gossip.
tribe-er-serverEphemeral Rollup sequencer for instant follow/unfollow with 10s L1 settlement.
tribe-iosNative SwiftUI iOS client (Twitter-shaped). BLAKE3 + ed25519 signing, NaCl-box DMs.
tribe-instaNative SwiftUI iOS client (Instagram-shaped) — same hub, same envelopes, photo-first surface.
tribe-core-swiftShared Swift package consumed by tribe-ios and tribe-insta — protocol crypto and envelope code.
tribeapp.wtfPrimary web client — Next.js + Solana wallet adapter.
tribe-appDemo Next.js app shipped via `brew install tribe-app` — points at any hub.
homebrew-tapHomebrew formulas — `brew install tribe` (hub + ER) and `brew install tribe-app` (demo UI).