Atomic can create themes. Ask it to build one for your setup.
Themes
Themes are JSON files that define colors for the TUI.On this page and its reference
This page covers selecting a theme and authoring your first one. The theme file format, every color token, and the accepted color values live in the Theme reference.Table of Contents
Locations
Atomic loads themes from:- Built-in:
system,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. --theme <path> loads a theme file; --use-theme <name> (see Initial Theme) selects an already-loaded theme for this run without saving it.
Selecting a Theme
Select a theme via/settings or in settings.json:
"theme": "system" to derive colors from your terminal’s foreground, background, and ANSI palette. It follows terminal appearance changes where supported. If the terminal does not report colors, it uses ANSI palette colors and faint secondary text. Atomic’s existing dark, light, and Catppuccin palettes remain available.
Use "theme": "light-theme/dark-theme" for automatic mode. The reported background decides which theme is selected, followed by the terminal’s appearance notification, COLORFGBG, then dark. Atomic follows terminal appearance changes when supported.
On first run, Atomic detects your terminal background and defaults to dark or light.
Main chat, attached workflow-stage chat, and the workflow graph canvas use the terminal’s default background, including terminal transparency. Graph node interiors share that background; headers, footers, focused title tabs, and tool cards retain their theme colors.
Truncated workflow-node labels keep the focused tab’s fill, text color, and weight through the ellipsis. The surrounding border and node body retain their own styling.
Initial Theme
Start an interactive run with a theme without changing the saved setting:lightTheme/darkTheme form:
/settings applies it immediately and saves it normally; an unknown theme name reports the ordinary theme error.
Creating a Custom Theme
- Create a theme file:
- Define the theme with all required colors (see Color Tokens):
- Select the theme via
/settings.
colors, workingIndicator, or export and extra top-level metadata make the theme invalid. Define reusable custom colors under vars. The theme JSON schema lists every accepted property, the required colors, and the accepted value types. Atomic reports invalid theme files during startup and /reload.
Theme Format
Moved to Theme reference.Color Tokens
Moved to Theme reference.Core UI (11 colors)
Moved to Theme reference.Backgrounds & Content (11 required, 3 optional)
Moved to Theme reference.Markdown (10 colors)
Moved to Theme reference.Tool Diffs (3 colors)
Moved to Theme reference.Syntax Highlighting (9 colors)
Moved to Theme reference.Thinking Level Borders (6 colors)
Moved to Theme reference.Bash Mode (1 color)
Moved to Theme reference.HTML Export (optional)
Moved to Theme reference.Color Values
Moved to Theme reference.256-Color Palette
Moved to Theme reference.Terminal Compatibility
Moved to Theme reference.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.