Configuration System
Three-level configuration cascade with hot-reload support.
Config Cascade
Project Config → overrides → User Config → overrides → Defaults
(.agentsboard.yml) (~/.agentsboard/) (built-in)
AppConfig
public struct AppConfig {
var theme: String
var fontFamily: String
var fontSize: CGFloat
var notifications: Bool
var scrollback: Int
var layout: LayoutMode
var menuBarMode: Bool
var notificationSounds: Bool
var terminalNewlineMode: NewlineMode
}
Layout Modes
public enum LayoutMode {
case single // One session, full screen
case list // Vertical list of sessions
case twoColumn // Two sessions side by side
case threeColumn // Three column layout
case fleet // Grid overview of all sessions
}
Project Configuration
Per-project YAML configuration:
# .agentsboard.yml
name: MyApp
sessions:
- name: Backend
command: claude --project backend
workdir: ./backend
autoStart: true
restart: onFailure
env:
CLAUDE_MODEL: opus
- name: Frontend
command: aider
workdir: ./frontend
autoStart: false
restart: never
Hot Reload
The ConfigManager watches configuration files for changes using file system events:
let config = ConfigManager(yamlParser: yamlParser)
config.onConfigChange = { newConfig in
// React to config changes without restart
applyTheme(newConfig.theme)
}
config.startWatching()