Concord: how PosterChan does community chat on Nostr
- What it is
- Encrypted from end to end
- It works with Armada
- The server does the work, not your phone
- Voice and video on our own server
- Discover
- Everywhere you are
- Fast, and light on the phone
- Coming soon
- Try it

People keep asking me for “Discord, but on Nostr”. That’s Concord. It’s the Communities tab in PosterChan, and I use it every day to run our own community. This post covers what it is, how it works under the hood, and what’s live on poster.place right now.
What it is
Concord is encrypted community chat built on the CORD protocol, the same protocol Armada uses. You get the things you’d expect from a community app:
- Communities with channels, plus threads, forum channels for topic-style posts, and Mentions and Threads views that collect everything aimed at you across the whole community, with a
from:@member/#channelsearch. - Roles (Roles v2): custom roles, private channels and sections that only certain roles can read, timeouts, role mentions and nicknames.
- Invites and Discover. Invite links, direct invites, and a Discover page where public communities are listed. Each listing opens a preview first, so you can see what a community is before you join.
- Public and private channels in the same community, clearly marked.
- Messages the way you want them: reactions, mentions, replies, custom emoji, GIFs, several attachments at once straight from your Files, Save to Files, disappearing messages and webxdc mini apps right in the room.
- Git built in. Connect a repository and its issues and pull requests show up in the community, and they open in PosterChan’s own Git view.

Encrypted from end to end
Every message is encrypted on your device before it leaves, and only members hold the keys. Relays store envelopes they can’t read.
Keys are handled the way they should be. When an owner bans someone, the community keys are rotated as part of the ban, so the banned person can’t read anything said after that, and can’t rejoin through an old invite link. Private channels have keys of their own: take a role off a private channel and that channel’s key is rotated straight away, and the new key only goes to the people who still have access. And if someone leaves and you’d like a fresh start, “Rotate community keys” is one press in the community settings.
It works with Armada
Concord isn’t a PosterChan-only island. It speaks CORD, so it works with Armada, the reference client. Join an Armada community from PosterChan or a PosterChan community from Armada, and you’re in the same room, the same channels and the same calls. When the spec moves, we follow it. Roles v2 is the latest example.
The server does the work, not your phone
This is the part I care about most. In PosterChan, your client only talks to this node.
A community lives on several relays. Instead of having your phone dial every one of them, the node keeps a mirror of the communities its members are in and serves them from there. Anything it doesn’t mirror goes through the node’s tunnel, which leaves via Tor or a proxy. Your IP address never touches a stranger’s relay, your phone isn’t holding a dozen sockets open, and a busy community doesn’t drain your battery.
The node also keeps the volume down on everybody else’s servers. Upstream connections are capped, refusals back off, and a message that doesn’t go through is retried through the node and then marked Not sent with a Retry button. It never silently falls back to going direct.
If you’d rather do it yourself, turn on “Use my own relays”. Then Concord talks to the community’s relays directly, the normal Armada way, with no mirror and no tunnel. It’s your choice, per account.

Voice and video on our own server
Press the call button in any channel and you’re in a voice or video call, with screen sharing too. Calls run on our own LiveKit server, and they’re encrypted per sender: the server forwards frames it can’t read.
Getting into a call goes through a blind broker. Your client proves it holds the room’s key, and the broker hands back a short-lived ticket for that one room. It never learns who you are. If a community lists its own call servers, PosterChan uses those, so people calling from Armada and from PosterChan end up in the same call.

Discover
Discover lists public communities from the relays Armada uses, plus listings made in PosterChan. Every card shows the community’s own name and description. Tap one to see its banner, channels and rules (when it has them) first, then decide whether to join.

Everywhere you are
Concord works the same in the web app, the desktop app for Windows, Mac and Linux, PosterChanOS and the Android APK. It’s one client, so your communities and your starred channels follow your account.
Fast, and light on the phone
A lot of the recent work has been on speed. Communities is no longer part of the app’s cold start: it loads when you open it, which cut the boot download from 8.0 MB to 6.8 MB. The encryption reader loads on demand too. On a phone, the chat isn’t built behind the channel list anymore, switching channels doesn’t trigger extra redraws, Discover scrolls without freezing, and older history arriving above you doesn’t throw you back in time. When Communities is in the background, it goes quiet.
Coming soon
These are in progress and not live yet:
- Communities with lots of channels that cost the rest of the app nothing.
- Making key changes fully hands-off, so invite links and members’ devices catch up on their own the moment someone is banned.
Try it
Open Communities at poster.place, or in the desktop app or the APK. Create a community, or find one in Discover. Concord is open source, like the rest of PosterChan. If something doesn’t work the way you expect, tell me.
#posterchan #nostr #concord
Write a comment