Skip to main content
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 legacy pi.themes entries in package.json
  • Settings: themes array with files or directories
  • CLI: --theme <path> (repeatable)
Disable discovery with --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:
Use "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:
To follow terminal appearance, use the lightTheme/darkTheme form:
The CLI value is the initial theme for that run only. Choosing another theme later in /settings applies it immediately and saves it normally; an unknown theme name reports the ordinary theme error.

Creating a Custom Theme

  1. Create a theme file:
  1. Define the theme with all required colors (see Color Tokens):
  1. Select the theme via /settings.
Atomic automatically reloads the active custom theme when you edit its file, so you can see changes immediately. Theme files are strict. Atomic accepts only the documented top-level fields and color tokens; custom keys under 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 in vars, 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.

Examples

See the built-in themes: