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
| Skin | Description | Agent branding | Visual character |
|---|---|---|---|
default | Fabric — primary violet and kawaii | Fabric | Violet borders, lavender accents, the Fabric mark, and kawaii faces in spinners. |
mono | Monochrome — clean grayscale | Fabric | All grays — no color. Borders are #555555, text is #c9d1d9. Ideal for minimal terminal setups or screen recordings. |
slate | Cool blue — developer-focused | Fabric | Royal blue borders (#4169e1), soft blue text. Calm and professional. No custom spinner — uses default faces. |
daylight | Light theme for bright terminals with dark text and cool blue accents | Fabric | Designed 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-lightmode | Warm brown/gold text for light terminal backgrounds | Fabric | Warm parchment tones for light terminals. Dark brown text with saddle-brown accents, cream-colored status surfaces. An earthy alternative to the cooler daylight theme. |
charizard | Volcanic theme — burnt orange and ember | Charizard Agent | Warm 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.
| Key | Description | Default (default skin) |
|---|---|---|
banner_border | Panel border around the startup banner | #4628CC (Fabric violet) |
banner_title | Title text color in the banner | #9481E6 (lavender) |
banner_accent | Section headers in the banner (Available Tools, etc.) | #7C66E1 |
banner_dim | Muted text in the banner (separators, secondary labels) | #667085 |
banner_text | Body text in the banner (tool names, skill names) | #F0EDFB |
ui_accent | General UI accent color (highlights, active elements) | #7C66E1 |
ui_label | UI labels and tags | #9481E6 |
ui_ok | Success indicators (checkmarks, completion) | #0F9545 (green) |
ui_error | Error indicators (failures, blocked) | #EA2A37 (red) |
ui_warn | Warning indicators (caution, approval prompts) | #E09818 (amber) |
prompt | Interactive prompt text color | #F0EDFB |
input_rule | Horizontal rule above the input area | #4628CC |
response_border | Border around the agent's response box (ANSI escape) | #4628CC |
session_label | Session label color | #9481E6 |
session_border | Session ID dim border color | #667085 |
status_bar_bg | Background color for the TUI status / usage bar | #19294D |
voice_status_bg | Background color for the voice-mode status badge | #19294D |
selection_bg | Background color for the TUI mouse-selection highlighter. Falls back to completion_menu_current_bg when unset. | #25156B |
completion_menu_bg | Background color for the completion menu list | #19294D |
completion_menu_current_bg | Background color for the active completion row | #25156B |
completion_menu_meta_bg | Background color for the completion meta column | #19294D |
completion_menu_meta_current_bg | Background color for the active completion meta column | #25156B |
Spinner (spinner:)
Controls the animated spinner shown while waiting for API responses.
| Key | Type | Description | Example |
|---|---|---|---|
waiting_faces | list of strings | Faces cycled while waiting for API response | ["(·)", "(··)", "(···)"] |
thinking_faces | list of strings | Faces cycled during model reasoning | ["(⌁)", "(<>)", "(◇)"] |
thinking_verbs | list of strings | Verbs shown in spinner messages | ["thinking", "planning", "checking"] |
wings | list of [left, right] pairs | Decorative 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.
| Key | Description | Default |
|---|---|---|
agent_name | Name shown in banner title and status display | Fabric |
welcome | Welcome message shown at CLI startup | Fabric. Type a message or /help for commands. |
goodbye | Message shown on exit | Fabric session closed. |
response_label | Label on the response box header | Fabric |
prompt_symbol | Symbol before the user input prompt (bare token, renderers add a trailing space) | ❯ |
help_header | Header text for the /help command output | Fabric commands |
Other top-level keys
| Key | Type | Description | Default |
|---|---|---|---|
tool_prefix | string | Character prefixed to tool output lines in the CLI | ┊ |
tool_emojis | dict | Per-tool emoji overrides for spinners and progress ({tool_name: emoji}) | {} |
banner_logo | string | Rich-markup ASCII art logo (replaces the default Fabric wordmark) | Fabric wordmark |
banner_hero | string | Rich-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.

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_logotext art from a text prompt - Converts uploaded images (PNG, JPG, GIF, WEBP) into
banner_heroASCII 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
- Start the app (via Pinokio or terminal).
- Open Skin Studio.
- Choose a built-in or custom skin to edit.
- Generate a logo from text and/or upload an image for hero art. Pick a render style and width.
- Edit colors, spinner, branding, and other fields.
- Click Save to write the skin YAML to
~/.fabric/skins/. - Click Activate to set it as the current skin (updates
display.skininconfig.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. /skinupdates 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
/skinare session-only. To make a skin your permanent default, set it inconfig.yaml. - The
banner_logoandbanner_herofields support Rich console markup (e.g.,[bold #FF0000]text[/]) for colored ASCII art.