2.3 KiB
2.3 KiB
Section: Configuration Order: 100
config.json reference
Orbit is configured at runtime by config.json. It is fetched on startup, deep-merged over the
built-in defaults, then the app renders — so you can re-point or rebrand without rebuilding.
- Source of truth:
public/config.json(copied into the build). - Served at:
/app/config.json. - Edit live: the service worker serves it network-first, so editing the deployed file takes effect on the next reload — no rebuild.
Merge rules: objects merge key-by-key; arrays and scalars replace wholesale.
Options
| Key | Type | What it does |
|---|---|---|
server.url |
string | WebSocket URL of the IRCv3 server. |
startup.channels |
string[] | Channels auto-joined (first = active). A ?channel= URL param overrides. |
branding.name |
string | App/network name shown in the UI + CTCP VERSION. |
branding.icon |
string | Logo / favicon URL. |
branding.url |
string | Homepage (used in CTCP VERSION/SOURCE). |
branding.tagline / taglineEm / subtitle |
string | Connect-screen copy. |
branding.projectUrl |
string | "Powered by Orbit" link in Settings. |
turnstile.enabled / sitekey |
bool / string | Cloudflare Turnstile on registration. |
report.target |
string | Channel that user reports are sent to. |
defaults.theme |
string | light · dark · yomirc · yomirc-dark. |
defaults.compact / sound / hideJoinQuit / clock24 |
bool | Preset new-user prefs. |
defaults.lang |
string | Pin a default UI language (e.g. en, fr, de). Overrides browser detection for users who haven't picked one. Omit to auto-detect. |
features.push / imageUpload / register |
bool | Turn whole features on/off. |
defaults.*only seed a user's preferences the first time — once someone changes a setting, it's stored in their browser and the config no longer overrides it.
Example
{
"server": { "url": "wss://irc.example.org/ws/" },
"startup": { "channels": ["#lobby", "#help"] },
"branding": { "name": "ExampleChat", "tagline": "Chat with", "taglineEm": "everyone." },
"turnstile":{ "enabled": false, "sitekey": "" },
"defaults": { "theme": "dark", "compact": true },
"features": { "register": false }
}