A federated social network where you own your data and your server.
In Splintr, each user account is called a node. A node is your identity on the network — it holds your profile, your posts, your friend connections, and your privacy settings.
A Splintr server can be set up in two ways. A single-node server is a personal site where one person owns the whole domain. A cluster is a server that hosts multiple nodes — several people each with their own account, like splintr.net/alice and splintr.net/dan. Under the hood, both run the same software and speak the same federation protocol.
Most social networks are centralized — one company runs the servers, stores your data, and decides the rules. Splintr is different. Anyone can run their own server, and servers talk to each other so nodes on different servers can connect as friends, see each other's posts, and interact — all without needing accounts on every server.
Think of it like email: you can send a message from Gmail to Outlook because they speak the same protocol. Splintr servers work the same way. Your node lives on your home server, and federation handles the rest.
Every Splintr server publishes a discovery endpoint at /.well-known/splintr. This is a small JSON file containing the server's public key and basic metadata. When one server needs to talk to another for the first time, it fetches this endpoint to learn how to verify that server's identity.
Public keys are cached for 24 hours to reduce network traffic. This follows a trust-on-first-use (TOFU) model — once a server has seen another server's key, it remembers it. For stronger assurance, a server administrator can publish their public key in a DNS TXT record. When present, receiving servers will cross-check the handshake key against the DNS-published key and reject any mismatch, catching impersonation attempts that TOFU alone would miss.
Adding a friend across servers involves a multi-step handshake between the two servers that ensures both users consent and that identities are genuine.
You are logged into your home server (say, alpha.example) and you visit a node's profile on beta.example. Your server generates a single-use federation token that proves you are who you say you are.
Your browser is redirected to the remote server with a signed handoff token. The remote server contacts your home server to verify the token is valid and hasn't been used before. This prevents replay attacks — each token works exactly once.
Once your identity is verified, you can view the remote user's public profile and send a friend request. The request is signed with your home server's private key so the remote server can confirm it's authentic.
When the other user accepts, their server notifies yours (again, with a signed request). Both servers now record the friendship between your nodes, and posts shared between friends will flow across the federation link.
All communication between servers happens over HTTPS, and every request is cryptographically signed using RSA keys. Beyond transport security, Splintr protects data at rest and verifies content authenticity.
When a server receives a request claiming to be from another server, it checks the RSA signature against that server's public key. A forged request from an impersonator would fail verification. Servers can optionally publish their public key in a DNS TXT record (_splintr.domain.com), which lets any server verify their identity independently — even without prior contact.
Every signed request includes a timestamp. Requests older than 5 minutes are rejected. Federation handoff tokens are single-use and invalidated immediately after verification.
Servers only share content that the node's owner has marked as visible to the requesting party. Friends-only posts are only sent when a verified friendship exists between the two nodes. A remote server cannot access private content just by asking. You can also restrict visibility to specific friend groups or hand-picked users.
Every post is signed with the author's Ed25519 key at the moment it is created. The signature travels with the post across federation, so any server holding a copy can verify that the content is exactly what the author wrote and has not been altered in transit or storage.
Sensitive profile fields such as email addresses are encrypted in the database with per-user keys. Private messages use hybrid encryption — each message body is encrypted with a random session key, and the session key is encrypted individually for each participant using their public key.
Servers that communicate frequently can negotiate ephemeral key exchanges, so that even if a server's long-term key were compromised in the future, past conversations could not be decrypted. This is negotiated automatically when both servers support it and falls back gracefully when they do not.
Splintr is not trying to be everything. It focuses on direct connections between people you know, not on algorithmic feeds, advertising, or viral content. There is no central authority that can shut down your node or change the rules. If you disagree with how a particular server is run, you can move to another one or start your own.
Want to run your own server? See the Download page for setup instructions.