main · 513 commits · updated il y a 23 j

Modern webchat app for IRC.

Orbit gives IRC the interface you'd expect from a chat app today: reactions, replies, typing, read-markers, history and push, all in the browser. Point it at your own server and rebrand it from one config.json, with no rebuild.

#orbit+TPnrtCH6 users
14:02 *** now talking in #orbit 14:02 --- topic: a self-hostable IRCv3 web client 14:03 <reverse> pushed the chathistory dedup, reconnect catches up clean now 14:03 <orbit> [orbit] reverse pushed 1 commit to main +0/-0/±7 14:05 <nova> does it do read-markers and reactions? 14:05 <reverse> yep, 25 caps. read-marker, multiline, redaction, web push 14:06 <kell> and i just point it at my own ircd? 14:06 <reverse> one config.json. no rebuild. 14:07 *** kell has joined #orbit
[14:07] [reverse(+i)] [2:#orbit(+TPnrtCH)]

// why orbit

Built on IRC, run on your own server.

Full IRCv325 capabilities negotiated: reactions, typing, read-markers, multiline, server-side history, account registration and Web Push, not just the basics.
One file re-points itconfig.json is read at runtime: server, channels, branding, themes and feature flags. One build serves any community.
A real PWAInstalls to the home screen, keeps an offline shell, and reaches you with the tab closed. Mobile-first, not a desktop app squeezed onto a phone.
Host it yourselfA static dist/ behind any web server. The project even runs its own git server with push-to-deploy.
Make it yoursSix themes including a retro yomIRC skin, full mIRC formatting, and a plugin API with real extension points and SRI.
Free softwareAGPL-3.0. React, TypeScript, Vite and zustand, tested and linted. Read every line.

// features

What's included.

Real-time

Reactions, replies, typing, read-markers, multiline and chat-history replay, carried over standard IRCv3 caps rather than faked client-side.

Composer

Bold/italic/colour, an emoji picker, @nick and :emoji: tab-completion, slash commands, per-channel drafts and image upload.

Accounts & SASL

SASL login and in-app account registration, with an optional Turnstile gate when you need one against bots.

Web Push

VAPID / RFC-8291 notifications that reach you with the tab closed or the app shut.

Plugins

A documented Orbit API with composer, topbar, sidebar and settings slots plus per-message actions. Each runs in its own error boundary and can be pinned with SRI.

10 languages, 6 themes

A fully translated UI in ten languages, browser-detected and switchable; light, dark, Orbit and retro yomIRC skins.

// get started

Self-host it in five commands.

Clone, install, point public/config.json at your IRC server and build a static dist/. The full walkthrough is in the docs.

shellcopy
$ git clone https://git.devtronic.pro/orbit/orbit.git
$ cd orbit
$ npm install
$ npm run dev      # http://localhost:5173
$ npm run build    # dist/  (serve behind /app/)

// changelog

Latest changes.

Pulled straight from the repository. Every push to main updates this list.

513commits
mainversion
4contributors
AGPL-3.0licence
a51c50dfix yomirc hover-toolbar clipping (compact toolbar); channel switch always jumps to the newest messageJean · il y a 23 j
dc6ced4fix hover toolbar clipping at the top of the message listJean · il y a 23 j
5a9bb3dlobby: config-gate intent buttons, drop gaming, route intents to #accueil, set channel suggestionsJean · il y a 23 j
ffaca4cmonospace UI across all themes, connect-screen language switcher, es dating labelJean · il y a 23 j
c54fa07i18n: translate the 9 keys missing from the 8 non-fr/en locales; default tchatou to FrenchJean · il y a 23 j
997ea67profile metadata: fetch via GET, handle 766, mute benign METADATA FAILJean · il y a 24 j
2086fe4account profiles via draft/metadata-2 (avatar/bio/pronouns/timezone/url)Jean · il y a 24 j
aed817aCBAN window: the join button switches the active view to the suggested channelJean · il y a 28 j
431432fShow a window when a JOIN is refused by a network CBAN (926)Jean · il y a 28 j
2eab043Point games plugin at GamesServ (live service nick; GameServ is reserved)Jean · 21/07/2026
5d90c54Externalize theme-init so the app CSP needs no inline-script hashJean · 21/07/2026
f9a1ac0Don't re-negotiate caps or SASL on a post-registration CAP NEWJean · 21/07/2026
9b2b66fsurface +draft/reply and +draft/channel-context on service noticesJean · 21/07/2026
d567627show +draft/channel-context on service noticesJean · 21/07/2026
b31aceayomirc: show sender channel-status prefix in message linesJean · 18/07/2026

// community

Get involved.

Source & issues

Developed in the open. Issues and patches welcome.

git.devtronic.pro/orbit/orbit

Clone it

Or pull from the project's own git server over HTTPS:

git clone https://git.devtronic.pro/orbit/orbit.git

Chat in #orbit

A live channel, running on Orbit itself, with a bot that posts every commit.

Open #orbit in Orbit