Skip to content

Configuration

Everything lives in one TOML file:

~/Library/Application Support/novalis/config.toml

The Settings window (⌘,) is generated from the same schema that validates the file; every toggle you see maps to a key you can set by hand. Writes are atomic and lock-protected; edit the file externally and the app picks it up.

[appearance]
font_family = "JetBrains Mono"
font_size = 13.5
theme = "novalis"
unfocused_pane_dim = 0.15 # 0 = off
cursor_animation_ms = 100 # 0 = teleport like it's 1978
[terminal]
scroll_animation_ms = 150 # eased scroll-to; 0 = instant
scrollbar = true # fading scrollback thumb
bell_visual = true # border pulse on BEL
shift_enter_newline = true # newline in TUIs instead of submit
copy_on_select = false
[teams]
spawn_layout = "split" # where teammates land: split | tab | workspace

The workspace rail’s ringing behaviour is a key in [appearance]:

[appearance]
workspace_activity_mode = "reorder" # or "dot" (badge, fixed order) | "off" (total silence)

It moves a card only on high-signal events — a command that actually ran, an agent finishing a turn, a bell. Focus, clicks, and raw output never count.

  • A persisted key beats any new default. Your file wins over whatever a new build ships; settings never silently reset.
  • Kill switches everywhere. Every animation and every experimental subsystem has a config or environment off-switch.
  • Secrets never touch the file. Provider keys live in the OS keychain.

Config can push and pull through a Novalis Drive endpoint you control; same file, every machine. Payloads are obfuscated with a token-derived keystream so a shared server can’t casually read them — treat that as privacy, not cryptography. A real end-to-end scheme is on the road to 1.0; secrets live in the keychain and never sync at all.