HHG · terminal theme · handover + live demo

THE GLASS STAGE

An epoq-trued terminal skin. The window is a glass stage #000000 — epoq3's true CLI black; green is the one live signal allowed to glow. No red anywhere — epoq legislates none. One system across Ghostty, git, and Claude Code.

Ghostty 1.3.1Claude Code dark-ansi git diff · status · decorateRed Hat Mono the epoq mono rev 2026-07-22

01

The stage, live

rendered in Red Hat Mono · exactly the terminal
op@hhg — the glass stage — 132×32
--- - -- -- -- - -- -- -- ///- - -\ //// \\\ /// --- ---- ---- --- \\\ // --- - --- - \\\ // // / ----- --------- \\\ \\ // / /- --- ----\ \\\ \\ | /// \\\ \ \\ | \\\ \ | ---------- -- | | | | | ------ --\\ | | | || | | \\\ | | | | || | | | | \\\ | | | | || | ||\ || \ || \\\| || | | || || ||| \ | |\\ | \ || | | | | | | ||\\ | | \\ | \\ || | | || || |\ | | \\ || \ \\ || \\ || | | | || \\ | |\ \\| \ \| \\-| || | | | || \|| \\ || \\|| | || | | | || ---- \\| \/ ---- || || | | | || | --- -- --- - | || | | | || | _______ ______ | || | | | || | _________ ______ _ || || | | | || | ____ __ __ |_ | || | | | | | | _ | '| |#' | | || | | | | | | |# | || | | || | | | || | \ /| \-/| | || | | | || | -/ -/- | || | | | || | ------- ------ | || | | | || | | || | | | || | | || | | | |||| . | || | | | | ||| . | || | | | | | | . || | | | | | | | || | || | | | | | \ ______ || | | | | | || \\ | | | | || | | \\ ----- // | | | | \ // // || | |||| \\\ // | // | | || -- | | \------// | /// || | | //--\\||| || / | | || | | |\\| | // | // | || | \\\ || // // / | | \/ \\ //-\\ // //\--// \\\---// \\ // //\| // // \ |// /// // \\ // /// \\------/ H H G C O R T E X op@hhg › ready jacob@hhg ~/hhg_cortex_v1 ⎇ main $ git diff obsessions.md diff --git a/obsessions.md b/obsessions.md @@ -1,4 +1,4 @@ taste is the whole product - generated at scale + authored, on the system culture over algorithm $
·

The mark

THE MUSE · the ruled-G 2ch drawing (epoq3 muse/m-head) · printed not drawn — she looks back
                                           --- -
                                  -- -- --      - -- -- --
                              ///-                        - -\
                           ////                               \\\
                         ///         --- ---- ---- ---          \\\
                        //      --- -                 --- -       \\\
                       //   // /      ----- ---------      \\\      \\
                     //    /    /- ---               ----\    \\\    \\
                     |       ///                          \\\    \    \\
                    |                                        \\\       \
                    |                 ---------- --        |  |         |
                   |  |          ------           --\\     |   |  |     ||
                   |  |                               \\\   |   |  |     |
                  ||  |       |        |        |       \\\ |   |  |     |
                  ||   |      ||\     || \     ||         \\\|  ||  |    |
                  ||   ||    ||| \    | |\\    | \          ||   |  |    |
                  |     |    | ||\\   | | \\   | \\          ||  |  |    ||
                 ||     |\   |  | \\ ||  \ \\ ||  \\         ||  |   |    |
                 ||      \\ |   |\ \\|    \  \|    \\-|      ||   |  |    |
                 ||       \||    \\ ||     \\||       |       ||  |  |    |
                 ||          ---- \\|       \/ ----   ||      ||  |   |   |
                 || |     ---   --           ---   -   |      ||   |  |   |
                 || |      _______            ______   |      ||   |  |   |
                 || |     _________          ______ _  ||     ||   |  |   |
                 || |    ____   __           __    |_   |      ||  |  |   |
                | | |    _  |  '|              |#' |    |      ||  |  |   |
                | | |       |#  |              ||  |    |      ||  |   |  |
                 || |        \ /|               \-/|    |      ||  |   |  |
                 || |         -/                 -/-    |      ||  |   |  |
                 || |     -------             ------    |      ||  |   |  |
                 || |                                   |      ||  |   |  |
                 || |                                   |      ||  |   |  |
                 ||||                .                  |      ||  |   |  |
                 | |||               .                  |      ||  |   | |
                 | | |               .                 ||     | |  |   | |
                 | | ||                                |      ||   |   | |
                 | |  \           ______              ||      |    |  |  |
                 | || \\                              |       |    |  | ||
                  | |  \\          -----             //    |            |
                  | |    \             //           //    ||            |
                  ||||    \\\        //     |      //     |       |    ||
                -- | |      \------//       |    ///     ||      |     |
              //--\\|||                     ||   /       |       |    || |
              |    |\\|                      |          //      |    //  |
              ||   | \\\                     ||        //      //    /   |
               |      \/                      \\   //-\\      //   //\--//
               \\\---//                        \\ // //\|    //   //
                                                \  |//     ///  //
                                                   \\     //  ///
                                                     \\------/
H H G   C O R T E X
02

The palette

epoq inks · the only hues on the stage
signal-live#2CFF05the live readout · cursor · additions · the pulse
signal-go#8E00FFthe no-red flag · error · deletions · removed-word
hum#6F75D7the locator · hunk headers · warning
dusk#5F5295seen / faded · selection · prompt border
grey-51#515151dim · meta · comments · untracked
MOTION graphite → grey-51 → dusk → hum · epoq tokens only
03

Export — reproduce it anywhere

four layers · copy each into place, reload
1 · The fontRed Hat Mono — the epoq mono
Google Fonts. macOS via Homebrew cask; any OS from fonts.google.com.
brew install --cask font-red-hat-mono   # macOS · Google Fonts
2 · Ghostty skin~/.config/ghostty/config
The stage, cursor, selection, the NO-RED palette, the frame. Reload with ⌘⇧,
# HHG · THE GLASS STAGE — Ghostty skin (epoq-trued)
font-family        = "Red Hat Mono"
font-family        = "IBM Plex Mono"
font-size          = 13
font-thicken       = true
adjust-cell-height = 12%
adjust-cursor-thickness = 2

# the stage — --glass-stage #000000 (epoq3's true CLI black)
background          = 000000
foreground          = E8E8ED
background-opacity  = 0.94
background-blur     = 26

# the cursor — --signal-live #2CFF05
cursor-style        = block
cursor-style-blink  = true
cursor-color        = 2CFF05
cursor-text         = 000000

# selection — --dusk
selection-background = 2E2A45
selection-foreground = F4F5F7

# palette — NO RED · the red+magenta slots retune to epoq purples (--signal-attn / --signal-go)
palette = 0=#2A2A31
palette = 1=#3600DA
palette = 2=#59C24E
palette = 3=#C9A227
palette = 4=#6F75D7
palette = 5=#3600DA
palette = 6=#5AA69E
palette = 7=#C9CBD1
palette = 8=#515151
palette = 9=#8E00FF
palette = 10=#2CFF05
palette = 11=#E6C34A
palette = 12=#9098E0
palette = 13=#8E00FF
palette = 14=#7FC7BF
palette = 15=#F4F5F7

# the frame
window-padding-x       = 16
window-padding-y       = 14
window-padding-balance = true
window-padding-color   = background
macos-titlebar-style   = transparent
macos-option-as-alt    = true
window-theme           = dark
bold-is-bright         = false
unfocused-split-opacity = 0.55
mouse-hide-while-typing = true
3 · git — no-red diffs~/.gitconfig · runs once
Deletions purple, additions green, hunks hum-blue, meta dim. Kills red in diff + status + log.
git config --global color.ui auto
git config --global color.diff.meta       "#515151"
git config --global color.diff.frag       "#6F75D7 bold"
git config --global color.diff.func       "#5F5295"
git config --global color.diff.commit     "#6F75D7"
git config --global color.diff.old        "#8E00FF"   # deletions — the no-red signal (--signal-go)
git config --global color.diff.new        "#59C24E"   # additions
git config --global color.diff.whitespace "reverse #8E00FF"
git config --global color.status.added     "#59C24E"
git config --global color.status.changed   "#6F75D7"
git config --global color.status.untracked "#515151"
git config --global color.status.deleted   "#8E00FF"
git config --global color.status.branch    "#2CFF05"
git config --global color.decorate.branch       "#2CFF05"
git config --global color.decorate.remoteBranch "#6F75D7"
git config --global color.decorate.HEAD         "#8E00FF"
git config --global color.decorate.tag          "#5F5295"
4 · Claude Code~/.claude/settings.json + themes/epoq.json
dark-ansi defers to the terminal palette (standard). The epoq theme pins the pulse green + forces non-red diffs.
// ~/.claude/settings.json — the standard: follow the terminal palette
"theme": "dark-ansi"

// ~/.claude/themes/epoq.json — OPTIONAL: pin exact epoq inks
//   (then set  "theme": "custom:epoq"  in settings.json)
{
  "name": "epoq",
  "base": "dark-ansi",
  "overrides": {
    "claude":          "#2CFF05",   // the thinking pulse (--signal-live)
    "success":         "#2CFF05",
    "error":           "#8E00FF",   // the no-red flag (--signal-go)
    "warning":         "#6F75D7",
    "promptBorder":    "#5F5295",
    "diffAdded":       "#12301A",
    "diffAddedWord":   "#1F5A2E",
    "diffRemoved":     "#1A0330",   // no red — a dark --signal-go tint
    "diffRemovedWord": "#5C1A9E"
  }
}
5 · The HUB banner~/.config/ghostty/hub-banner.sh → sourced from ~/.zshrc
The printed mark — authored block-lettering, costs nothing to print. Optional.
# append to ~/.zshrc — print the HUB on new Ghostty shells
case "$TERM" in
  xterm-ghostty) [ -r "$HOME/.config/ghostty/hub-banner.sh" ] \
     && . "$HOME/.config/ghostty/hub-banner.sh" ;;
esac
# hub-banner.sh + palette-specimen.sh ship in playground/jacob/ghostty-skin/
04

Put the demo on a website

executable · DONE-WHEN = a live URL
  1. ~2 minGive it a home. This page is self-contained (one index.html, only external is the Google font). It already lives at playground/jacob/ghostty-skin/index.html.
    done-when: the file opens standalone in a browser and renders (it does).
  2. ~5 minOwn repo, own deploy. Per the repo-per-project rule: gh repo create lepetittruffier/glass-stage --private --source=. --push, then a Vercel project pointed at it (root = this folder).
    done-when: Vercel build succeeds on push to main.
  3. ~2 minShip it. Confirm the deploy, hit the URL, verify the terminal + palette render in Red Hat Mono on a cold load.
    done-when: glass-stage.vercel.app is LIVE — the real condition, not "worked on".
  4. optionalFold into epoq3 / the hub. If it should live as an epoq3 section (007+), the swatches + terminal become a page-scoped block linking the live weblink instead of the inlined font.
    done-when: a section renders on epoq3.vercel.app.
05

What this session built

the arc, so the next session re-orients from here
06

The group

the live web estate · rendered on the stage · one system, every property
07

Glassci

the material · glass with nothing to refract but characters · drag the lens
op@hub — glassci — the lens on the record

        
drag me
                                           --- -
                                  -- -- --      - -- -- --
                              ///-                        - -\
                           ////                               \\\
                         ///         --- ---- ---- ---          \\\
                        //      --- -                 --- -       \\\
                       //   // /      ----- ---------      \\\      \\
                     //    /    /- ---               ----\    \\\    \\
                     |       ///                          \\\    \    \\
                    |                                        \\\       \
                    |                 ---------- --        |  |         |
                   |  |          ------           --\\     |   |  |     ||
                   |  |                               \\\   |   |  |     |
                  ||  |       |        |        |       \\\ |   |  |     |
                  ||   |      ||\     || \     ||         \\\|  ||  |    |
                  ||   ||    ||| \    | |\\    | \          ||   |  |    |
                  |     |    | ||\\   | | \\   | \\          ||  |  |    ||
                 ||     |\   |  | \\ ||  \ \\ ||  \\         ||  |   |    |
                 ||      \\ |   |\ \\|    \  \|    \\-|      ||   |  |    |
                 ||       \||    \\ ||     \\||       |       ||  |  |    |
                 ||          ---- \\|       \/ ----   ||      ||  |   |   |
                 || |     ---   --           ---   -   |      ||   |  |   |
                 || |      _______            ______   |      ||   |  |   |
                 || |     _________          ______ _  ||     ||   |  |   |
                 || |    ____   __           __    |_   |      ||  |  |   |
                | | |    _  |  '|              |#' |    |      ||  |  |   |
                | | |       |#  |              ||  |    |      ||  |   |  |
                 || |        \ /|               \-/|    |      ||  |   |  |
                 || |         -/                 -/-    |      ||  |   |  |
                 || |     -------             ------    |      ||  |   |  |
                 || |                                   |      ||  |   |  |
                 || |                                   |      ||  |   |  |
                 ||||                .                  |      ||  |   |  |
                 | |||               .                  |      ||  |   | |
                 | | |               .                 ||     | |  |   | |
                 | | ||                                |      ||   |   | |
                 | |  \           ______              ||      |    |  |  |
                 | || \\                              |       |    |  | ||
                  | |  \\          -----             //    |            |
                  | |    \             //           //    ||            |
                  ||||    \\\        //     |      //     |       |    ||
                -- | |      \------//       |    ///     ||      |     |
              //--\\|||                     ||   /       |       |    || |
              |    |\\|                      |          //      |    //  |
              ||   | \\\                     ||        //      //    /   |
               |      \/                      \\   //-\\      //   //\--//
               \\\---//                        \\ // //\|    //   //
                                                \  |//     ///  //
                                                   \\     //  ///
                                                     \\------/
HHG CORTEX
tier corners dispersion #8E00FF · #3600DA red in the fringe none dependencies 0
law 01Characters, not photographs A photo hides distortion. A monospace grid measures it. The bend is legible because the thing behind the glass is a ruler.
law 02Lit from inside Apple's glass is lit by its environment. This one is lit by its contents — the characters are the phosphor, and the light leaves the tile.
law 03Black glass The pane is dark. The specular rim is the only white on it.
law 04The prism obeys the palette Ordinary aberration splits into red, green, blue. This one splits into inks you name — the default pair is go against attn, both violet. No red, no green. Epoq legislates none, down to the physics.
The studies wall → the material in four cuts · six verbs the glass performs on a record · the hub and the rack on paper at size · the register matrix
Take itglassci/glassci.css + glassci.js — MIT, zero dependencies
Two files. No WebGL, no canvas, no build step. Every ink reads through var(), so it inherits an epoq page and still works anywhere else.
<link rel="stylesheet" href="glassci/glassci.css">
<script src="glassci/glassci.js"></script>

<div class="glassci" data-glassci
     data-glassci-radius="0.26"
     data-glassci-depth="18"
     data-glassci-strength="24"
     data-glassci-dispersion="3">
  <pre class="glassci-lit">the record, drawn in characters</pre>
</div>