Atomic can create themes. Ask it to build one for your setup.
Themes
Themes are JSON files that define colors for the TUI.Table of Contents
Locations
Atomic loads themes from:- Built-in:
dark,light,catppuccin-frappe,catppuccin-latte,catppuccin-macchiato,catppuccin-mocha - Global:
~/.atomic/agent/themes/*.json(legacy~/.pi/agent/themes/*.json) - Project:
.atomic/themes/*.json(legacy.pi/themes/*.json, only after the project is trusted) - Packages:
themes/directories,atomic.themes, or legacypi.themesentries inpackage.json - Settings:
themesarray with files or directories - CLI:
--theme <path>(repeatable)
--no-themes.
Selecting a Theme
Select a theme via/settings or in settings.json:
"theme": "light-theme/dark-theme" for automatic mode. Atomic chooses the first theme when the terminal reports a light color scheme and the second theme for dark terminals, and it follows terminal color-scheme changes when supported.
On first run, Atomic detects your terminal background and defaults to dark or light.
Creating a Custom Theme
- Create a theme file:
- Define the theme with all required colors (see Color Tokens):
- Select the theme via
/settings.
Theme Format
nameis required, must be unique, and must not contain/.varsis optional. Define reusable colors here, then reference them incolorsorworkingIndicator.colorsmust define all 51 required tokens.workingIndicatoris optional and may override any subset of the six tones in the outward half of the ordinary∀ramp; Atomic derives omitted tones from selected background, accent, and text roles, then mirrors the palette back afterpeak. Explicit numeric values from 0 through 255 remain exact terminal palette indices. When a numeric index from 0 through 15 seeds an omitted tone, Atomic mixes from its built-in approximation of the common ANSI RGB value; the terminal still controls the actual appearance of the explicit index. Both explicit and derived tones update on theme hot reload.
$schema field enables editor auto-completion and validation.
Color Tokens
Every theme must define all 51 color tokens. There are no optional colors.Core UI (11 colors)
Backgrounds & Content (11 colors)
Markdown (10 colors)
Tool Diffs (3 colors)
Syntax Highlighting (9 colors)
Thinking Level Borders (6 colors)
Editor border colors indicating thinking level (visual hierarchy from subtle to prominent):Bash Mode (1 color)
HTML Export (optional)
Theexport section controls colors for /export HTML output. If omitted, colors are derived from userMessageBg.
Color Values
Four formats are supported:256-Color Palette
0-15: Basic ANSI colors (terminal-dependent)16-231: 6×6×6 RGB cube (16 + 36×R + 6×G + Bwhere R,G,B are 0-5)232-255: Grayscale ramp
Terminal Compatibility
Atomic uses 24-bit RGB colors. Most modern terminals support this (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). For older terminals with only 256-color support, Atomic falls back to the nearest approximation. Check truecolor support:Tips
Dark terminals: Use bright, saturated colors with higher contrast. Light terminals: Use darker, muted colors with lower contrast. Color harmony: Start with a base palette (Nord, Gruvbox, Tokyo Night), define it invars, and reference consistently.
Testing: Check your theme with different message types, tool states, markdown content, and long wrapped text.
VS Code: Set terminal.integrated.minimumContrastRatio to 1 for accurate colors.