Settings › Appearance
Drag theme files onto the theme library, pick them with the file picker or paste the JSON. VS Code, Sublime, TextMate and T3 Code themes are converted on the spot. Hover a card to preview it on the whole app.
New in v1.38Custom themes, from the editors you already love
Bring your VS Code, Sublime Text, TextMate or T3 Code theme — or pick one of the built-ins. The sidebar, tables, YAML editor and terminal all follow.
jet:~/payments$ kubectl get pods -n payments
NAME READY STATUS AGE
payments-api-7qjjhld4s-974t2 2/2 Running 3d
payments-worker-qsz8hdz2p-vkn4v 0/1 OOMKilled 3d
ledger-7mcnr47lw-8shxv 1/1 Running 5d
db-backup-28745160-9cwmp 0/1 Completed 41m
jet:~/payments$ kubectl rollout status deploy/payments-api
deployment "payments-api" successfully rolled out
jet:~/payments$ colortest
jet:~/payments$
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: payments-api
5 namespace: payments
6spec:
7 replicas: 6 # was 4
8 paused: false
9 strategy:
10 type: RollingUpdate
11 template:
12 spec:
13 containers:
14 - name: api
15 image: ghcr.io/acme/payments-api:v2.15.0
16 ports:
17 - containerPort: 8080
18 resources: { limits: { cpu: "1" } }
JETdarkJET Pilot contributors(MIT)
Drop a VS Code theme, a Sublime Text colour scheme, a TextMate theme or a T3 Code / JET Pilot theme. The same engine JET Pilot uses converts it right here in your browser.
Everything happens in your browser. Nothing is uploaded, nothing is stored.
What works
*-color-theme.json — workbench colours, tokenColors for the editor and terminal.ansi* for the terminal. JSONC and include are fine..sublime-color-scheme, with variables and color()..tmTheme property lists.Light and dark files of one theme? Drop both at once — they pair up into one theme, as in the app.
Every theme can have its own light and dark appearance, and you can pick a different theme for each mode.
Drag theme files onto the theme library, pick them with the file picker or paste the JSON. VS Code, Sublime, TextMate and T3 Code themes are converted on the spot. Hover a card to preview it on the whole app.
Search thousands of VS Code themes on open-vsx.org from inside JET Pilot and install one in a click — every colour theme in the extension comes along.
Only MIT-licensed extensions can be installed, so JET Pilot stays MIT.
Save a .json theme in JET Pilot’s themes folder. It’s watched: edit the file in any editor and the app updates as you save. Broken files show up with their error, not silently.
⌘⌥A/CtrlAltA
Change theme…
The command palette lists every theme. Arrow through them to preview live; Esc puts the old one back.
⌘⌥⇧A/CtrlAltShiftA
Change appearance
Switch between System, Light and Dark. Each mode keeps its own theme.
⌘K/CtrlK
Or just search
Type “theme” in the command palette. Shortcuts are listed in the ? cheat sheet.
A theme is a small JSON file. Give it a canvas and an accent and JET Pilot derives the rest of the palette from them — with contrast guarantees: text at 7:1, other foregrounds at 4.5:1 and buttons at 3:1.
colorsvariantsjetPilot: success and info colours, the 16 terminal colours, editor syntax colours and raw VS Code editor keysrgb(), hsl(), oklch()…Completion and validation, everywhere
Add the schema line and VS Code (or any JSON Schema-aware editor) completes role names, explains them on hover and flags mistakes:
"$schema": "https://www.jet-pilot.app/schemas/theme.json"
Inside the app, Settings › Appearance › New theme opens a JSON editor with the same schema, a live preview on the whole app and ⌘S / Ctrl+S to save.
{
"$schema": "https://www.jet-pilot.app/schemas/theme.json",
"name": "Nightfall",
"appearance": "dark",
"canvas": "#16161e",
"accent": "#7aa2f7"
}{
"$schema": "https://www.jet-pilot.app/schemas/theme.json",
"version": 1,
"id": "nightfall",
"name": "Nightfall",
"appearance": "dark",
"canvas": "#16161e",
"accent": "#7aa2f7",
"colors": {
"text": "#c0caf5",
"sidebar": "#1a1b26",
"messageAction": "#bb9af7",
"errorForeground": "#f7768e"
},
"jetPilot": {
"colors": { "success": "#9ece6a", "info": "#7dcfff" },
"terminal": {
"black": "#15161e",
"red": "#f7768e",
"green": "#9ece6a",
"yellow": "#e0af68",
"blue": "#7aa2f7",
"magenta": "#bb9af7",
"cyan": "#7dcfff",
"white": "#a9b1d6",
"brightBlack": "#414868",
"brightRed": "#f7768e",
"brightGreen": "#9ece6a",
"brightYellow": "#e0af68",
"brightBlue": "#7aa2f7",
"brightMagenta": "#bb9af7",
"brightCyan": "#7dcfff",
"brightWhite": "#c0caf5"
},
"syntax": {
"key": "#7aa2f7",
"string": "#9ece6a",
"number": "#ff9e64",
"constant": "#bb9af7",
"comment": "#565f89",
"punctuation": "#89ddff"
},
"editor": { "editor.lineHighlightBackground": "#1e2030" }
},
"variants": {
"light": {
"canvas": "#f6f6fb",
"accent": "#2e7de9",
"colors": { "text": "#343b58" },
"jetPilot": {
"syntax": {
"key": "#2e7de9",
"string": "#587539",
"number": "#b15c00",
"comment": "#848cb5"
}
}
}
}
}T3 Code themes import as they are
The format is T3 Code’s theme file (version 1, its 57 roles, the seeded short form and variants). Paste a T3 theme and you’re done.
And they go back, too
T3 Code ignores the jetPilot block. Export for T3 Code writes a strict T3 file: all 57 roles resolved, variants included.
More than a palette
VS Code themes bring their tokenColors to the YAML editor and terminal.ansi* to the terminal — the parts T3 Code leaves out.
Every key a theme can set, straight from the JSON schema. Roles marked T3 Code are kept for compatibility; JET Pilot paints the rest.
| Key | What it paints |
|---|---|
| colors.canvas | Main background behind content: tables, editor, terminal (--background). Seed of the derived palette. |
| colors.surface | Panels and cards: side panel, grouped settings (--surface-2 / --card). |
| colors.surfaceRaised | Raised surfaces; the placeholder text is checked against it. |
| colors.surfaceOverlay | Popovers, menus, dialogs, command palette and editor widgets (--surface-3 / --popover). |
| colors.border | Hairline borders (--border); --border-subtle and --border-strong are mixed from it. |
| colors.input | Input borders (--input). |
| colors.focus | Focus rings (--ring) and the editor's focus border. |
| colors.codeBackground | Inline code background. |
| colors.codeForeground | Inline code text. |
| Key | What it paints |
|---|---|
| colors.text | Primary text (--foreground). Kept at 7:1 contrast on the canvas. |
| colors.textMuted | Secondary text (T3 Code). JET Pilot's muted text is mutedForeground. |
| colors.muted | Muted backgrounds: skeletons, subtle fills (--muted). |
| colors.mutedForeground | Muted text: descriptions, captions, table meta (--muted-foreground). |
| colors.placeholder | Input placeholder text. |
| colors.secondaryLabel | Secondary labels (T3 Code). |
| colors.iconMuted | Muted icons (T3 Code). |
| Key | What it paints |
|---|---|
| colors.accent | Brand / accent colour: links (--link), text selection (--selection), editor selection. Seed of the derived palette. |
| colors.accentForeground | Text on a solid accent fill. |
| colors.accentSurface | Hover and selected rows, menu highlight (--accent) and the editor's selected suggestion. |
| colors.accentSurfaceForeground | Text on hovered / selected rows (--accent-foreground). |
| colors.messageAction | Primary buttons, switches, the active nav indicator (--primary). When it is not a vivid colour (3:1 on the canvas, apart from accentSurface), the accent / focus colour is used instead. |
| colors.messageActionForeground | Text on primary buttons (--primary-foreground). |
| colors.messageActionHover | Primary button hover (T3 Code). |
| colors.secondary | Secondary buttons and controls (--secondary). |
| colors.secondaryForeground | Text on secondary buttons (--secondary-foreground). |
| Key | What it paints |
|---|---|
| colors.error | Error signal colour (T3 Code). The editor's find highlights use warning. |
| colors.errorForeground | Readable error text; becomes --destructive (also checked on the canvas). |
| colors.errorSurface | Background of error alerts. |
| colors.warning | Warning signal colour; editor find-match highlight. |
| colors.warningForeground | Readable warning text; becomes --warning (also checked on the canvas). |
| colors.warningSurface | Background of warning alerts. |
| colors.update | Update / info signal colour (T3 Code). |
| colors.updateForeground | Text on update surfaces (T3 Code). |
| colors.updateSurface | Background of update notices (T3 Code). |
| Key | What it paints |
|---|---|
| colors.sidebar | App chrome: navigation, tab bar, toolbars (--surface-1 / --sidebar). |
| colors.sidebarForeground | Navigation text (--sidebar-foreground). |
| colors.sidebarMutedForeground | Muted navigation text. |
| colors.sidebarControlSurface | Controls in the sidebar (T3 Code). |
| colors.sidebarRowHover | Sidebar row on hover (T3 Code). |
| colors.sidebarRowActive | Active sidebar row (T3 Code). |
| colors.sidebarRowSelected | Selected sidebar row (T3 Code). |
| colors.sidebarBorder | Sidebar border (T3 Code). |
| Key | What it paints |
|---|---|
| colors.terminalBackground | Terminal background. |
| colors.terminalForeground | Terminal text. |
| colors.terminalCursor | Terminal and editor cursor. |
| colors.terminalSelection | Terminal selection. |
| colors.terminalScrollbar | Scrollbar thumbs (--scrollbar), also in the editor. |
| colors.terminalScrollbarHover | Scrollbar thumbs on hover (--scrollbar-hover). |
| Key | What it paints |
|---|---|
| colors.chrome | Window chrome background (T3 Code). JET Pilot uses sidebar for its chrome. |
| colors.toolbar | Toolbar background (T3 Code). |
| colors.toolbarForeground | Text on the toolbar (T3 Code). |
| colors.toolbarBorder | Toolbar border (T3 Code). |
| colors.toolbarControl | Toolbar button background (T3 Code). |
| colors.toolbarControlForeground | Toolbar button text (T3 Code). |
| colors.toolbarControlHover | Toolbar button background on hover (T3 Code). |
| colors.messageSurface | Message bubble background (T3 Code). |
| colors.messageForeground | Message bubble text (T3 Code). |
| Key | What it paints |
|---|---|
| jetPilot.colors.success | Success colour, text-grade on the canvas (--success): ready pods, healthy status. Derived as a green when missing. |
| jetPilot.colors.successForeground | Text on a solid success fill (--success-foreground). |
| jetPilot.colors.info | Info colour, text-grade on the canvas (--info). Derived as a blue when missing. |
| jetPilot.colors.infoForeground | Text on a solid info fill (--info-foreground). |
| Key | What it paints |
|---|---|
| jetPilot.syntax.key | YAML / JSON keys. |
| jetPilot.syntax.string | String values. |
| jetPilot.syntax.number | Numbers. |
| jetPilot.syntax.constant | Booleans, null and keywords. |
| jetPilot.syntax.comment | Comments (italic). |
| jetPilot.syntax.punctuation | Colons, dashes, brackets. |
| jetPilot.syntax.text | Plain text. |
| Key | What it paints |
|---|---|
| jetPilot.terminal.black | ANSI black (VS Code terminal.ansiBlack). |
| jetPilot.terminal.red | ANSI red (VS Code terminal.ansiRed). |
| jetPilot.terminal.green | ANSI green (VS Code terminal.ansiGreen). |
| jetPilot.terminal.yellow | ANSI yellow (VS Code terminal.ansiYellow). |
| jetPilot.terminal.blue | ANSI blue (VS Code terminal.ansiBlue). |
| jetPilot.terminal.magenta | ANSI magenta (VS Code terminal.ansiMagenta). |
| jetPilot.terminal.cyan | ANSI cyan (VS Code terminal.ansiCyan). |
| jetPilot.terminal.white | ANSI white (VS Code terminal.ansiWhite). |
| jetPilot.terminal.brightBlack | ANSI bright black (VS Code terminal.ansiBrightBlack). |
| jetPilot.terminal.brightRed | ANSI bright red (VS Code terminal.ansiBrightRed). |
| jetPilot.terminal.brightGreen | ANSI bright green (VS Code terminal.ansiBrightGreen). |
| jetPilot.terminal.brightYellow | ANSI bright yellow (VS Code terminal.ansiBrightYellow). |
| jetPilot.terminal.brightBlue | ANSI bright blue (VS Code terminal.ansiBrightBlue). |
| jetPilot.terminal.brightMagenta | ANSI bright magenta (VS Code terminal.ansiBrightMagenta). |
| jetPilot.terminal.brightCyan | ANSI bright cyan (VS Code terminal.ansiBrightCyan). |
| jetPilot.terminal.brightWhite | ANSI bright white (VS Code terminal.ansiBrightWhite). |
The built-in themes are converted from their upstream projects, all under the MIT licence. Palettes and parts of the theme engine — the palette derivation, the contrast solver and the VS Code mapping — are ported from T3 Code (MIT). Thank you.
| Theme | Upstream | Licence | Copyright |
|---|---|---|---|
| T3 Chat, Grove, Ocean, Ember, Iris | pingdotgg/t3code | MIT | Copyright (c) 2026 T3 Tools Inc. |
| Catppuccin (Latte, Mocha) | catppuccin/vscode | MIT | Copyright (c) 2021 Catppuccin |
| Tokyo Night (Night, Light) | tokyo-night/tokyo-night-vscode-theme | MIT | Copyright (c) 2018-present Enkia |
| Dracula | dracula/visual-studio-code | MIT | Copyright (c) 2016 Dracula Theme |
| Nord | nordtheme/visual-studio-code | MIT | Copyright (c) 2016-present Sven Greb |
| GitHub (Light Default, Dark Default) | primer/github-vscode-theme | MIT | Copyright (c) 2020 Primer |
| One Dark Pro | Binaryify/OneDark-Pro | MIT | Copyright (c) 2013-2022 Binaryify |
| Rosé Pine (Dawn, Main) | rose-pine/vscode | MIT | Copyright (c) 2021 Rosé Pine |
| Gruvbox (Light Medium, Dark Medium) | jdinhify/vscode-theme-gruvbox | MIT | Copyright © 2017 JD |
Full notices in THIRD_PARTY_THEMES.md. JET is JET Pilot’s own theme.