Opbox ships one base theme, “Opbox Onyx”, defined as a set of CSS custom properties that are the single source of truth for the product’s appearance. On top of that base, each person can adjust individual colour and shape tokens to taste. A user theme is not a second stylesheet to maintain: it is the base theme plus a sparse map of the tokens you have changed, applied at runtime, so the default stays authoritative and your overrides are just a regenerable view layered on top.
What it does
A per-user theme over a shared base. Everyone starts from the same “Opbox Onyx” base. Your personal theme records only the tokens you actually changed, as a small set of overrides; everything you leave alone keeps the stylesheet default. Because the overrides are sparse, a token you have never touched always tracks the base theme, and clearing an override returns that token cleanly to the default with no stale value left behind.
An editable token set. The editor exposes the handful of tokens that shape the workspace’s look: the accent colours (accent, accent deep, accent soft), the surface colours (paper, soft surface, canvas), the text colours (ink and ink sub), the border colour, and the card corner radius. You set each one to the value you want; anything left blank falls back to the stylesheet default for that token.
Live preview. Every edit applies to the running page immediately, written straight onto the document root, so you see the change as you type rather than after a reload. Nothing is committed until you choose to keep it, so you can experiment freely and back out by resetting.
Saved with you, not the browser. Your theme is stored as a per-user preference through the kernel, not in a single browser’s local storage, so it follows you across devices and browsers. The preference is actor-scoped: you read and write your own theme, and only your own, under the Member tier.
Distinct from workspace configuration. Per-user appearance is deliberately separate from workspace-wide settings. The per-user preference store holds non-secret UI preferences like your theme; the workspace configuration store (Owner-tier, secret-capable) holds firm-level settings such as the AI budget and other box-level configuration. Keeping the two apart means a personal colour choice never reaches into workspace policy, and workspace settings are never editable by a Member changing their own look.
How you use it
Open the appearance settings. Go to Settings and the Personal section. The Appearance area shows the base theme and the per-token editor beneath it.
Adjust a token. Type a value into any token field (a colour for accent or ink, a length for the card radius) and the page updates live as you go. Leave a field empty to keep the stylesheet default for that token.
Save or reset. When the look is right, Save to persist your overrides; the editor confirms the theme is saved. Reset discards your in-progress edits and restores the overrides you last saved, reverting the live preview at the same time. Your saved theme is restored automatically the next time you sign in, on any device.
The kernel verbs behind it
Everything above runs through the kernel’s one front door: each call is permission-checked and audited before it executes. The theme editor reads and writes a per-user preference; the workspace configuration store is the adjacent, Owner-tier door for firm-wide settings.
pref.get- read your own UI preference for a key, including your saved theme (actor-scoped self-read, Member tier).pref.set- upsert your own UI preference, persisting your sparse theme overrides (actor-scoped self-write).pref.list- list your UI preferences, optionally filtered by key prefix.config.get- read a workspace configuration value (Owner-tier, the firm-wide settings store).config.set- set a workspace configuration value, distinct from per-user appearance.
See the full set in the pref verb reference and the config verb reference.