Jolt Download

Chat that runs on your grid.

Your community shouldn't live at the mercy of one company's growth targets. Jolt has the servers, channels and roles you already know, with no ads, no paywalled basics and no landlord. Use ours or run your own. One account works on every instance.

Download Jolt

Windows · Linux · macOS soon

Other platforms Run an instance

Fig. 1 Independent instances, one conversation. Messages travel to wherever a server lives.

Every platform gets worse once it needs to please investors. Jolt can't.

It's a familiar story. A chat app wins over communities by being great, then slowly starts working for someone else: ads in your sidebar, features moved behind a subscription, rules you never agreed to. Jolt is open source and anyone can run it, so there's no single company that can do that to you.

How Jolt compares with others
Question Others Jolt
Who runs the servers? One company, for everyone Whoever you choose, including you
Ads and promotions Sponsored content in the app None, and nothing to sell
Bigger uploads, better quality Behind a monthly subscription Set by each instance, not a paywall
The source code Closed Open, every part of it
If the rules change Everyone lives with it Each instance makes its own
Your conversations Stored on their servers Stored on the server your community picked

Familiar where it counts. Different where it matters.

The Jolt desktop app showing a server called Northwind Studio, its channels, a conversation in #general with a member from another instance and an invite card, and the member list grouped by role.
  1. Servers from anywhere. The rail holds servers from every instance you've joined, side by side.
  2. Channels, categories, unread. Organise conversation the way your community already does.
  3. Neighbours, not strangers. People from other instances show up with their home address.
  4. Invites that travel. Paste a link from any instance and it becomes a card you can join from.
  5. Roles & presence. Colour-coded roles, real permissions, and who's around right now.

Your home instance vouches for you. That's it.

  1. Step 1 / 3

    Sign in at home

    Your account lives on one instance. It signs a short-lived certificate for this device.

  2. Step 2 / 3

    Show it anywhere

    Another instance checks the certificate against your home's public key. No new account needed.

  3. Step 3 / 3

    Talk where the server lives

    Messages stay on the instance that hosts the server. Nothing is copied around the network.

Six promises, in writing.

  1. Your server, your rules.

    Every instance is run by the people who use it, with its own moderation and policies.

  2. No ads. No tracking.

    Nothing to sell, so nothing to watch. Conversations are not a product.

  3. One account, every instance.

    Join servers anywhere with the address you already have.

  4. Built for everyone.

    Full keyboard control, screen reader support, high contrast and scalable text from day one.

  5. Open all the way down.

    Server, protocol, SDK and apps. Read it, audit it, fork it.

  6. Small enough to own.

    One process and one database file. A spare computer will do.

An instance in three lines.

  1. Point a domain at a machine with Docker.

  2. Set your domain.

    echo JOLT_DOMAIN=chat.example.org > .env
  3. Start it. HTTPS is handled for you.

    docker compose up -d
Specification
Runtime Node.js 22+, or the Docker image
Database SQLite by default · Postgres when you grow
TLS Automatic, via the bundled Caddy config
Sign-ups Open · invite code · closed
Federation Open · allowlist · off, with a blocklist
Also serves This website, desktop downloads and updates
Licence AGPL-3.0

The app is a thin layer. Build your own.

Sign-in, federation, the live store, optimistic messages and read markers all live in @getjolt/sdk. The desktop app is just one client. A web app, a bot or something nobody has thought of yet can use exactly the same foundations.

Listing 1 client.ts
1import { JoltSession } from '@getjolt/sdk';
2
3const session = new JoltSession({ storage });
4await session.login('joltapp.org', 'alice', password);
5
6session.store.subscribe(render);   // live, normalised state
7await session.joinInvite(invite);  // federates if it needs to
8await session.sendMessage(channel, 'hello **world**');

Take it home.

Free. Open source. Updates itself quietly in the background.