Skip to main content

Skins & Themes

Skins control the visual presentation of the Fabric CLI: banner colors, spinner faces and verbs, response-box labels, branding text, and the tool activity prefix.

Conversational style and visual style are separate concepts:

  • Personality changes the agent's tone and wording.
  • Skin changes the CLI's appearance.

Change skins

/skin                # show the current skin and list available skins
/skin mono # switch to a built-in skin
/skin mytheme # switch to a custom skin from ~/.fabric/skins/mytheme.yaml

Or set the default skin in ~/.fabric/config.yaml:

display:
skin: default

Built-in skins

SkinDescriptionAgent brandingVisual character
defaultFabric — primary violet and kawaiiFabricViolet borders, lavender accents, the Fabric mark, and kawaii faces in spinners.
monoMonochrome — clean grayscaleFabricAll grays — no color. Borders are #555555, text is #c9d1d9. Ideal for minimal terminal setups or screen recordings.
slateCool blue — developer-focusedFabricRoyal blue borders (#4169e1), soft blue text. Calm and professional. No custom spinner — uses default faces.
daylightLight theme for bright terminals with dark text and cool blue accentsFabricDesigned for white or bright terminals. Dark slate text with blue borders, pale status surfaces, and a light completion menu that stays readable in light terminal profiles.
warm-lightmodeWarm brown/gold text for light terminal backgroundsFabricWarm parchment tones for light terminals. Dark brown text with saddle-brown accents, cream-colored status surfaces. An earthy alternative to the cooler daylight theme.
charizardVolcanic theme — burnt orange and emberCharizard AgentWarm burnt orange to ember gradient. Fire-themed spinners ("banking into the draft", "measuring burn"). Dragon-silhouette ASCII art banner.

Complete list of configurable keys

Colors (colors:)

Controls all color values throughout the CLI. Values are hex color strings.

KeyDescriptionDefault (default skin)
banner_borderPanel border around the startup banner#4628CC (Fabric violet)
banner_titleTitle text color in the banner#9481E6 (lavender)
banner_accentSection headers in the banner (Available Tools, etc.)#7C66E1
banner_dimMuted text in the banner (separators, secondary labels)#667085
banner_textBody text in the banner (tool names, skill names)#F0EDFB
ui_accentGeneral UI accent color (highlights, active elements)#7C66E1
ui_labelUI labels and tags#9481E6
ui_okSuccess indicators (checkmarks, completion)#0F9545 (green)
ui_errorError indicators (failures, blocked)#EA2A37 (red)
ui_warnWarning indicators (caution, approval prompts)#E09818 (amber)
promptInteractive prompt text color#F0EDFB
input_ruleHorizontal rule above the input area#4628CC
response_borderBorder around the agent's response box (ANSI escape)#4628CC
session_labelSession label color#9481E6
session_borderSession ID dim border color#667085
status_bar_bgBackground color for the TUI status / usage bar#19294D
voice_status_bgBackground color for the voice-mode status badge#19294D
selection_bgBackground color for the TUI mouse-selection highlighter. Falls back to completion_menu_current_bg when unset.#25156B
completion_menu_bgBackground color for the completion menu list#19294D
completion_menu_current_bgBackground color for the active completion row#25156B
completion_menu_meta_bgBackground color for the completion meta column#19294D
completion_menu_meta_current_bgBackground color for the active completion meta column#25156B

Spinner (spinner:)

Controls the animated spinner shown while waiting for API responses.

KeyTypeDescriptionExample
waiting_faceslist of stringsFaces cycled while waiting for API response["(·)", "(··)", "(···)"]
thinking_faceslist of stringsFaces cycled during model reasoning["(⌁)", "(<>)", "(◇)"]
thinking_verbslist of stringsVerbs shown in spinner messages["thinking", "planning", "checking"]
wingslist of [left, right] pairsDecorative brackets around the spinner[["⟪", "⟫"], ["[", "]"]]

When spinner values are empty (like in default and mono), hardcoded defaults from display.py are used.

Branding (branding:)

Text strings used throughout the CLI interface.

KeyDescriptionDefault
agent_nameName shown in banner title and status displayFabric
welcomeWelcome message shown at CLI startupFabric. Type a message or /help for commands.
goodbyeMessage shown on exitFabric session closed.
response_labelLabel on the response box headerFabric
prompt_symbolSymbol before the user input prompt (bare token, renderers add a trailing space)
help_headerHeader text for the /help command outputFabric commands

Other top-level keys

KeyTypeDescriptionDefault
tool_prefixstringCharacter prefixed to tool output lines in the CLI
tool_emojisdictPer-tool emoji overrides for spinners and progress ({tool_name: emoji}){}
banner_logostringRich-markup ASCII art logo (replaces the default Fabric wordmark)Fabric wordmark
banner_herostringRich-markup hero art (replaces the default Fabric mark)Fabric mark

Custom skins

Create YAML files under ~/.fabric/skins/. User skins inherit missing values from the built-in default skin, so you only need to specify the keys you want to change.

Full custom skin YAML template

# ~/.fabric/skins/mytheme.yaml
# Complete skin template — all keys shown. Delete any you don't need;
# missing values automatically inherit from the 'default' skin.

name: mytheme
description: My custom theme

colors:
banner_border: "#4628CC"
banner_title: "#9481E6"
banner_accent: "#7C66E1"
banner_dim: "#667085"
banner_text: "#F0EDFB"
ui_accent: "#7C66E1"
ui_label: "#9481E6"
ui_ok: "#0F9545"
ui_error: "#EA2A37"
ui_warn: "#E09818"
prompt: "#F0EDFB"
input_rule: "#4628CC"
response_border: "#4628CC"
session_label: "#9481E6"
session_border: "#667085"
status_bar_bg: "#19294D"
voice_status_bg: "#19294D"
selection_bg: "#25156B"
completion_menu_bg: "#19294D"
completion_menu_current_bg: "#25156B"
completion_menu_meta_bg: "#19294D"
completion_menu_meta_current_bg: "#25156B"

spinner:
waiting_faces:
- "(·)"
- "(··)"
- "(···)"
thinking_faces:
- "(⌁)"
- "(<>)"
- "(◇)"
thinking_verbs:
- "processing"
- "analyzing"
- "computing"
- "evaluating"
wings:
- ["⟪", "⟫"]
- ["[", "]"]

branding:
agent_name: "My Agent"
welcome: "Welcome to My Agent! Type your message or /help for commands."
goodbye: "See you later! ⚡"
response_label: " ⚡ My Agent "
prompt_symbol: "⚡"
help_header: "(⚡) Available Commands"

tool_prefix: "┊"

# Per-tool emoji overrides (optional)
tool_emojis:
terminal: ">_"
web_search: "🔮"
read_file: "📄"

# Custom ASCII art banners (optional, Rich markup supported)
# banner_logo: |
# [bold #FFD700] MY AGENT [/]
# banner_hero: |
# [#FFD700] Custom art here [/]

Minimal custom skin example

Since everything inherits from default, a minimal skin only needs to change what's different:

name: cyberpunk
description: Neon terminal theme

colors:
banner_border: "#FF00FF"
banner_title: "#00FFFF"
banner_accent: "#FF1493"

spinner:
thinking_verbs: ["jacking in", "decrypting", "uploading"]
wings:
- ["⟨⚡", "⚡⟩"]

branding:
agent_name: "Cyber Agent"
response_label: " ⚡ Cyber "

tool_prefix: "▏"

Fabric Mod — Visual Skin Editor

Fabric Mod is a community-built web UI for creating and managing skins visually. Instead of writing YAML by hand, you get a point-and-click editor with live preview.

Fabric Mod skin editor

What it does:

  • Lists all built-in and custom skins
  • Opens any skin into a visual editor with all Fabric skin fields (colors, spinner, branding, tool prefix, tool emojis)
  • Generates banner_logo text art from a text prompt
  • Converts uploaded images (PNG, JPG, GIF, WEBP) into banner_hero ASCII art with multiple render styles (braille, ASCII ramp, blocks, dots)
  • Saves directly to ~/.fabric/skins/
  • Activates a skin by updating ~/.fabric/config.yaml
  • Shows the generated YAML and a live preview

Install

Option 1 — Pinokio (1-click):

Find it on pinokio.computer and install with one click.

Option 2 — npx (quickest from terminal):

npx -y fabric-mod

Option 3 — Manual:

git clone https://github.com/cocktailpeanut/fabric-mod.git
cd fabric-mod/app
npm install
npm start

Usage

  1. Start the app (via Pinokio or terminal).
  2. Open Skin Studio.
  3. Choose a built-in or custom skin to edit.
  4. Generate a logo from text and/or upload an image for hero art. Pick a render style and width.
  5. Edit colors, spinner, branding, and other fields.
  6. Click Save to write the skin YAML to ~/.fabric/skins/.
  7. Click Activate to set it as the current skin (updates display.skin in config.yaml).

Fabric Mod respects the FABRIC_HOME environment variable, so it works with profiles too.

Operational notes

  • Built-in skins load from fabric_cli/skin_engine.py.
  • Unknown skins automatically fall back to default.
  • /skin updates the active CLI theme immediately for the current session.
  • User skins in ~/.fabric/skins/ take precedence over built-in skins with the same name.
  • Skin changes via /skin are session-only. To make a skin your permanent default, set it in config.yaml.
  • The banner_logo and banner_hero fields support Rich console markup (e.g., [bold #FF0000]text[/]) for colored ASCII art.