Popular color schemes for coding agents.
Browse themes · Install with your agent · Install manually
Agent Paint turns 30 popular terminal palettes into native themes for Paseo, Pi, Superset, ChatGPT, and Codex CLI. Preview a theme, then let your coding agent install it from this README.
- Paseo: one static plugin using the official
plugin.addTheme()API. - Pi: one complete native TUI theme JSON per color scheme.
- Superset: one importable UI + terminal theme JSON per color scheme, plus an all-themes bundle.
- ChatGPT: one portable
codex-theme-v1:desktop appearance string per color scheme. - Codex CLI: one custom
.tmThemesyntax theme per color scheme. - Website: a static gallery rendered from the same generated output users download.
No CSS injection, CDP, telemetry, runtime network access, install hooks, or runtime dependencies.
Unofficial: This project is not affiliated with Paseo, Pi, Superset, OpenAI, ChatGPT, Codex, Ghostty, iTerm2 Color Schemes, or upstream theme authors. These are semantic adaptations, not pixel-identical ports.
Give your coding agent this README URL and replace the bracketed values:
Read https://github.com/jzlosman/agent-paint/blob/main/README.md.
Install the [THEME NAME] theme for [PASEO, PI, SUPERSET, CHATGPT, OR CODEX CLI].
Use only the generated artifact for that target. Inspect it first, preserve my
settings, and back up any file you would replace. If the app requires a UI step,
do everything safe and reversible first, then tell me exactly what to click or
paste. Ask before enabling plugins or changing the active theme.
An agent should:
- Confirm the requested theme and target exist.
- Inspect the generated file or Paseo plugin before installing it.
- Back up any destination file it would replace.
- Install only the requested target.
- Stop for user confirmation when a target requires an in-app import or theme selection.
- Ask before enabling plugins or selecting a new active theme.
- Report the changed paths and how to undo the change.
Choose Paseo, Pi, Superset, ChatGPT, or Codex CLI in the gallery to see the actual colors generated for that target. Select a theme to download its native file or copy a target-specific agent prompt.
Requires Paseo 0.6.1 or newer.
git clone https://github.com/jzlosman/agent-paint.git
cd agent-paint
paseo plugin install "$PWD"
paseo plugin lsIf paseo is not on your PATH on macOS:
/Applications/Paseo.app/Contents/Resources/bin/paseo plugin install "$PWD"Then open Settings → Plugins, enable plugins if needed, and choose a generated theme under Settings → Appearance.
Remove it with:
paseo plugin remove paseo-theme-packPaseo falls back to its default theme if the plugin disappears.
Download one file from dist/pi/ into Pi's global theme directory:
theme_dir="$HOME/.pi/agent/themes"
destination="$theme_dir/nord.json"
backup="$destination.before-theme-pack"
temporary="$(mktemp)"
mkdir -p "$theme_dir"
curl -fsSL \
https://raw.githubusercontent.com/jzlosman/agent-paint/main/dist/pi/nord.json \
-o "$temporary"
python3 -m json.tool "$temporary" >/dev/null
if test -e "$destination" && ! test -e "$backup"; then
cp -p "$destination" "$backup"
fi
mv "$temporary" "$destination"Run /reload if Pi is already open, then select the theme through /settings.
To undo the installation, restore the backup when one exists; otherwise remove the downloaded theme:
destination="$HOME/.pi/agent/themes/nord.json"
backup="$destination.before-theme-pack"
if test -e "$backup"; then
mv "$backup" "$destination"
else
rm -f "$destination"
fiEach generated Pi file defines every required TUI token, including message surfaces, tool states, Markdown, syntax highlighting, thinking levels, Bash mode, and HTML export colors.
Download one theme from dist/superset/ or download all-themes.json.
Import through the CLI:
superset settings theme import /absolute/path/to/nord.json
superset settings theme set theme-pack-nordOr open Settings → Appearance → Theme, click Import Theme, select the downloaded JSON, and choose the imported theme from the grid.
To undo the installation, switch away from the custom theme before removing it:
superset settings theme set system
superset settings theme remove theme-pack-nordSuperset accepts a single theme, an array, or { "themes": [...] }. The generated files include both application UI and terminal ANSI colors.
Each file in dist/chatgpt/ contains one portable codex-theme-v1: appearance string for the ChatGPT desktop app, using OpenAI's Appearance import workflow. The import maps the app surface, foreground, accent, diff, and skill colors; it keeps the built-in Codex syntax theme for portability.
Before importing, open Settings → Appearance, select the current light or dark base theme, click Copy theme, and save that string as a backup. Then:
- Open the generated
.txtfile for your theme and copy the complete line. - In Settings → Appearance, choose the matching light or dark base theme.
- Click Import, paste the string, and confirm the preview.
An agent can fetch and validate the generated string, but it should stop and ask you to complete the in-app import. It must not edit ChatGPT application storage directly.
To undo the change, select a built-in appearance or import the backup string you saved first.
Codex CLI officially loads custom TextMate themes from $CODEX_HOME/themes (~/.codex/themes by default):
codex_home="${CODEX_HOME:-$HOME/.codex}"
theme_dir="$codex_home/themes"
destination="$theme_dir/agent-paint-nord.tmTheme"
mkdir -p "$theme_dir"
curl -fsSL \
https://raw.githubusercontent.com/jzlosman/agent-paint/main/dist/codex-cli/agent-paint-nord.tmTheme \
-o "$destination"Run /theme in Codex CLI and select agent-paint-nord. The picker previews the result and persists the equivalent valid TOML setting tui.theme = "agent-paint-nord" in $CODEX_HOME/config.toml when you confirm it. An agent may install the file, but it should ask before changing that setting.
Codex CLI themes syntax highlighting only. Your terminal emulator still owns the surrounding terminal background and ANSI palette.
To undo the change, use /theme to select your previous theme, then remove the custom file:
rm -f "${CODEX_HOME:-$HOME/.codex}/themes/agent-paint-nord.tmTheme"| Family | Included variants |
|---|---|
| Catppuccin | Latte, Frappé, Macchiato, Mocha |
| Dracula | Dracula, Alucard |
| GitHub | Light, Dark, Dark Dimmed |
| Atom One | Dark, Light |
| Tokyo Night | Night, Storm, Day |
| Nord | Nord |
| Gruvbox | Dark, Light |
| Solarized | Dark, Light |
| Rosé Pine | Main, Moon, Dawn |
| Ayu | Dark, Mirage, Light |
| Night Owl | Night Owl, Light Owl |
| Everforest | Dark, Light |
| Kanagawa | Wave |
Editor themes often use low-contrast comment colors and nearly identical surface colors. Those roles do not safely map to functional UI text and controls. The first version of this pack made that mistake: Nord's secondary text was only 1.69:1 against its background.
The canonical records now preserve:
- background and foreground;
- cursor and cursor text;
- selection background and foreground;
- ANSI colors 0–15;
- an explicit representative accent;
- pinned UI overrides only where a hand-tuned mapping is known to work.
Target adapters then derive readable semantic roles. Generated application themes require at least 7:1 primary-text contrast and 4.5:1 functional secondary-text contrast. Raised surfaces, controls, and borders receive distinct tonal steps.
Most terminal palettes are normalized from Ghostty's bundled representation of iTerm2 Color Schemes. Every record also retains its canonical upstream editor/palette source.
themes/themes.json terminal-first source records
scripts/theme-pack.mjs validation and target adapters
scripts/generate.mjs deterministic file generator
index.ts generated Paseo plugin
dist/pi/ generated Pi themes
dist/superset/ generated Superset themes
dist/chatgpt/ generated ChatGPT appearance strings
dist/codex-cli/ generated Codex CLI TextMate themes
site/ generated catalog + static gallery
docs/theme-grid.svg generated social/README preview
Node.js 22 or newer is sufficient. There are no package dependencies.
npm run generate
npm test
npm run checkTo contribute a palette:
- Add or update its terminal record in
themes/themes.json. - Pin canonical source repositories to full commit SHAs.
- Record source files, terminal source, and licenses.
- Add UI overrides only when the generic adapter cannot preserve the theme's identity.
- Generate and inspect all five target outputs.
- Test narrow and wide application states and include screenshots.
Commercial themes, unclear licenses, logos, wallpaper, fonts, and icons are out of scope.
Adapter code and original documentation are MIT licensed. Theme names and palettes retain their upstream terms. See THIRD_PARTY_NOTICES.md.