Config files
Most Brisal files are app-owned: you manage them via the UI. Only two are hand-editable: theme palettes (CSS) and workspace keybindings (TOML). The UI is the supported path; files are the backing store.
Theme palettes
A palette is a CSS file defining color tokens as custom properties, with :root for light and .dark for dark variants. Brisal ships three built-ins (mistral, brise, tramontane), and workspaces can add custom .css files. See Appearance & theming for selection behavior.
File shape
Define tokens under :root (light) and .dark (dark):
:root {
--background: #fdf6f1;
--foreground: #1f120a;
--primary: #ea580c;
}
.dark {
--background: #120a07;
--foreground: #f7ece2;
--primary: #ff8205;
}
Surface & text tokens
| Token | Usage |
|---|---|
--background / --foreground | App backdrop and default text |
--card / --card-foreground | Cards/raised panels and their text |
--popover / --popover-foreground | Menus, dropdowns, popovers |
--primary / --primary-foreground | Main accent and text on it |
--secondary / --secondary-foreground | Secondary buttons |
--muted / --muted-foreground | Subtle backgrounds, de-emphasized text |
--accent / --accent-foreground | Hover/selected highlights and their text |
--destructive | Dangerous actions |
--warning / --warning-foreground | Non-fatal warnings |
--border | Dividers |
--input | Form-field borders |
--ring | Focus rings |
--radius | Corner rounding |
Sidebar tokens
The sidebar is themed separately from the main content.
| Token | Usage |
|---|---|
--sidebar / --sidebar-foreground | Sidebar surface and text |
--sidebar-primary / --sidebar-primary-foreground | Sidebar accent and text |
--sidebar-accent / --sidebar-accent-foreground | Hover/selected sidebar rows |
--sidebar-border | Sidebar dividers |
--sidebar-ring | Sidebar focus ring |
Backdrop tokens
Brisal renders a soft “aurora flame” gradient and faint hex-grid behind content.
| Token | Usage |
|---|---|
--background-gradient-from / --background-gradient-to | Page gradient ends |
--header-bg | Header bar fill |
--flame-1 / --flame-2 / --flame-3 | Aurora backdrop colors |
--aurora-opacity | Aurora visibility (0-1) |
--hex-opacity | Hex-grid visibility (0-1) |
Chart tokens
| Token | Usage |
|---|---|
--chart-1 … --chart-5 | Data visualization series colors |
Adding your own palette
Place a .css file in a themes folder:
| Location | Scope |
|---|---|
system/themes/<name>.css | All workspaces |
workspaces/<id>/themes/<name>.css | Single workspace |
The palette name is the filename stem (ember.css → ember). Workspace files override system files of the same name. Built-ins always appear.
Naming: lowercase a-z, digits, hyphens only (my-theme.css ✓). Uppercase, spaces, or non-.css extensions are skipped.
Graceful degradation: Missing/unreadable palettes fall back to mistral. Invalid font sizes (outside 12-20) are clamped. Files without :root/.dark blocks are treated as absent.
Keybindings
Each workspace can have a keybindings.toml overriding default keyboard shortcuts. Use Settings → Hotkeys to edit.
| Location | Scope |
|---|---|
workspaces/<id>/keybindings.toml | Single workspace |
system/keybindings.toml | Machine-wide defaults |
The file is a sparse override (workspace → system → built-in). Only list differences from defaults.
leader = "ctrl+a"
sequence_timeout = 3000
[bindings."ctrl+a g s"]
action = "goto"
args = { scope = "sessions" }
[bindings."ctrl+b b"]
action = "none"
[bindings."ctrl+shift+k"]
action = "subagents.kill-all"
| Field | Description |
|---|---|
leader | Leader chord (default: ctrl+b) |
sequence_timeout | Pending sequence timeout in ms (default: 5000) |
cancel_keys | Chords that abort sequences/exit modes. Replaces defaults (esc, ctrl+c, ctrl+g, ctrl+d) |
[bindings."<sequence>"] | Maps sequence to { action, args }. Set action = "none" to unbind |
Action IDs and defaults are in Keyboard shortcuts. The subagents.kill-all action is bound to ctrl+b k by default — see Delegation → Killing subagents.
App-owned files
Not for hand-editing:
- Providers, models, agents: TOML files per workspace (agents:
.toml+.mdsystem prompt) - Corrupted entries are skipped and logged; one bad file won’t break the workspace
known_hosts.toml(data root): SSH host keys. Delete a line to re-pin a changed host (see Cloning over SSH → Re-pinning)
What to read next
- Appearance & theming — theming axes, palette selection, file locations
- Layout — surfaces colored by the tokens above