kaged v0.2
BRAND.GUIDE
kaged
shadow ops for your [stack]
your agents, [caged]
every project gets a [shadow]
the operator's [daemon]
unfucked [by design]
[LIVE] [CAGED] [BOUND] [PAUSED] [IDLE]

Brand grew teeth

The coming-soon page broke v0.1 on purpose. Rather than pretend that didn't happen, v0.2 names which rules were broken and re-codes them as sanctioned — while protecting the surfaces (code, logs, terminal) where edge becomes friction.

// CHANGELOG
Magenta danger only personality + danger
Cyan rare informational live, telemetry, streaming
Surface taxonomy implicit five-tier system
Status badges ad-hoc 10 formal bracket-locks
Code surfaces implied clean explicitly sacred — tier 5
CRT mode opt-in toggle, ambient layer

Five tiers of edge

Different surfaces tolerate different amounts of personality. Marketing can shout; code must whisper. Where any surface lands on the ladder is decided once, here, not improvised per-component.

TIER 01
Marketing
EDGE: FULL
Break the guide on purpose. Audience is opting in to be entertained for a few seconds.
  • coming-soon
  • landing pages
  • 404 / 500
  • manifesto
TIER 02
Boot & Empty
EDGE: MEDIUM
Personality moments live here. Boot sequences land brand. Empty states get to be funny.
  • boot sequence
  • empty states
  • splash / loading
  • achievement toasts
TIER 03
Chrome
EDGE: LIGHT
Brand-flavored frame around the work. Badges, hover glows, kanji at small sizes.
  • top bar
  • nav rail
  • breadcrumbs
  • status indicators
TIER 04
Workbench
EDGE: MINIMAL
Where operators actually work. Brand colors carry information; no decoration.
  • project views
  • agent lists
  • settings
  • forms
TIER 05
Code
EDGE: ZERO
Sacred. Syntax highlighting in brand palette is allowed; everything else is forbidden.
  • DSL editor
  • logs / output
  • terminal / PTY
  • JSON / YAML

Three accents, one boss

Amber leads (70%+ of accent budget). Magenta and cyan are sanctioned but never compete with amber for emphasis on the same screen.

amber#FFB000
amber.bright#FFCC33
amber.dim#806000
amber.faint#2A2010
magenta#FF2E63
magenta.bright#FF6088
magenta.dim#802040
magenta.faint#2A0E18
cyan#00E0FF
cyan.bright#66F0FF
cyan.dim#007088
cyan.faint#001A20
bg.base#0A0A0B
bg.elevated#111114
bg.inset#08080A
text.primary#E8E6E1

The bracket-lock system

Every meaningful object state gets a formal badge. Don't invent new types — extend this list with intent, then use.

[LIVE]
Active, running, the happy path.
[CAGED]
Sandboxed subagent — scoped FS & net.
[BOUND]
Streaming data, real-time bound.
[PAUSED]
Debug checkpoint, awaiting operator.
[IDLE]
Defined but not running.
[QUEUED]
Scheduled, not yet started.
[BLOCKED]
Waiting on dependency or permission.
[CRASHED]
Errored, needs operator attention.
[DRAFT]
Saved but not committed.
[STALE]
Out of date with source.

v0.1 strict → v0.2 sanctioned edge

Same agent list. Left is the v0.1 reading: brand colors are constrained, statuses are text. Right is v0.2: bracket-locked badges, sanctioned magenta for caged, cyan for streaming, ambient pulse for live states.

v0.1 / STRICTtier 4 — pre-edge
primary.agent claude-sonnet-4.6
active 42ms
scraper bandcamp+soundcloud
sandboxed 128ms
deployer k3s+helm
streaming
writer blog-posts
idle
v0.2 / SANCTIONED EDGE[CURRENT]
primary.agent claude-sonnet-4.6
[LIVE] 42ms
scraper bandcamp+soundcloud
[CAGED] 128ms
deployer k3s+helm
[BOUND]
writer blog-posts
[IDLE]

Tier 5 — the workbench rule

Where operators read code, the brand becomes invisible. Syntax highlighting carries information; everything else (animation, texture, decoration) is forbidden. Remove the brand entirely and code surfaces should still be perfectly usable.

// project.kaged.yml [DRAFT]
L 1-24 · UTF-8
# music site — release scraper + auto-deploy
project: music-site
primary:
  model: claude-sonnet-4.6
  system_prompt: ./prompts/primary.md

subagents:
  - name: scraper
    model: claude-haiku
    cage:
      fs: ro:/data
      net: ["*.bandcamp.com", "*.soundcloud.com"]
    timeout: 300
    retry: true

  - name: deployer
    model: claude-sonnet-4.6
    cage:
      fs: rw:/projects/music-site
      net: ["k3s.local:6443"]
    dry_run: false
    prev_run: null

interconnect:
  scraper -> deployer: on_event(found_release)
// DO

Brand-palette syntax highlighting. Amber for keywords, cyan for numbers, magenta for booleans, primary text for strings, dim for comments.

// DO

Use --bg-inset as the code background. Code feels punched into the surface, not raised.

// DON'T

Animate anything — not the gutter, not the line numbers, not "currently-running" line highlights. Static.

// DON'T

Apply scanlines, grids, noise, or any decorative texture to code surfaces. Even faint ones break monospace clarity.

Three rungs. Pick the lowest.

Hover the cards to see micro motion. Ambient runs always. Theatrical is reserved for tier 1-2 surfaces and respects prefers-reduced-motion.

RUNG 1
Micro
< 200ms · hover · focus
tiers 3 & 4 · default
RUNG 2
Ambient
2-3s loop · live signals
tiers 2-4 · one per pane
RUNG 3
Theatrical
GLITCH
brief bursts · personality
tiers 1-2 only · opt-out aware

Sanctioned places to be loud

Specific surfaces where the brand has license to break the workbench rules. Enumerated so they don't sprawl.

// BOOT SEQUENCE
First-launch boot
≤1.5s, ASCII-styled, types in like a terminal. Lands the brand before showing the dashboard.
> kaged daemon · v0.3.1
> loading dsl runtime........... [OK]
> spawning primary agents....... [OK]
> sandboxes ready............... [OK]
> system nominal.
// ACHIEVEMENT TOAST
Milestone hit
Slide in from bottom-right. Magenta border, kanji prefix. Use for genuine milestones — first DSL deployed, first cage run, 100 sessions, etc.
ACHIEVEMENT UNLOCKED
first cage deployed · scraper:bandcamp
// EMPTY STATE
Zero-state copy
Funny, on-brand, never apologetic. The kanji takes a backseat (low opacity) to telegraph absence.
no agents running. the shadows rest.
// EASTER EGGS
Konami → CRT mode
Allowed but rare (2-3 max across the whole product). Konami code triggers full CRT scanlines + noise overlay. Logged in docs/easter-eggs.md.
↑ ↑ ↓ ↓ ← → ← → B A
// FATAL PAGES
404 / 500
Full tier-1 treatment. Glitch, magenta, broken-terminal aesthetic. The page is broken — it should look broken.
404
// CRT TOGGLE
Settings → Appearance
Opt-in scanline + flicker overlay. Off by default. Try the toggle in this page's topbar — it's wired to the same behavior the product will ship.
CRT mode [OFF]

First-class on glass

Badges scale. Status colors read at a glance. Code in adjacent panes stays clean. The mobile chrome is tier 3; the code pane (right) is tier 5.

Mobile · Project view (tier 3)
9:415G • 87%
music-site [LIVE]
primary.agent
claude-sonnet-4.6
[LIVE]
scraper
bandcamp+soundcloud
[CAGED]
deployer
k3s+helm
[BOUND]
writer
blog-posts
[IDLE]
Mobile · DSL editor (tier 5)
9:415G • 87%
project.kaged.yml [DRAFT]
project: music-site
primary:
  model: claude-sonnet-4.6

subagents:
  - name: scraper
    timeout: 300
    retry: true