shep
design language v1.0
The house style

Cute on the
outside. Exact
where it counts.

shep is a process manager written in Rust. The sheep are a mnemonic, not a costume — so the personality lives in prose, illustration and color, and drops out the moment a misread would cost someone a process.

Three rules
  1. Whimsy in prose, plain in reference. The homepage says flock. The config table says process.
  2. Never charming about damage. kill, delete, errors and exit codes stay literal.
  3. Every themed word has a straight twin. bleats is also logs. Forever.
01

The marks

A sheep

One managed process. Singular only — a set of them is the flock, never "sheeps" and never a bare plural.

A dog

A plugin the shepherd supervises for its own sake: metrics, bark. Dogs work for the shepherd. A dog is never the daemon.

shep.
The wordmark

Lowercase always, even at the start of a sentence — it is the binary's name. Bricolage Grotesque 800, tracking −5%.

Do
  • Keep 4px of clear fleece around the mark's outline at every size.
  • Below 32px wide, drop the legs and use the head-and-fleece silhouette only.
  • Put the mark on meadow, butter or ink. Never on grass — the fleece stops reading.
Don't
  • Add a second animal. One sheep, one dog, that's the cast.
  • Rotate, gradient-fill, or add a drop shadow inside the mark.
  • Draw the sheep in distress to illustrate an error. Errors get a color, not a face.
02

Color

Cream paper and ink carry every surface. Meadow is the only color that means "this works". The other four are earned: one for alerts, one for attention, one for reference, one for links.

Cream
var(--paper)
Paper. Every page starts here.
Ink
var(--ink)
Text, every outline, every hard shadow.
Meadow
var(--meadow)
Primary. Online, healthy, go.
Grass
var(--grass)
Large happy fills and terminal success.
Bark
var(--bark)
Errored, refused, destructive. Nothing else.
Butter
var(--butter)
Attention: launching, notes, highlights.
Sky
var(--sky)
Reference material and inline links in docs.
Fleece
var(--paper-2)
Cards and panels lifted off the paper.
Barn
var(--barn)
Scenery only — barn walls and roofs. Never UI or status.
03

Type

Aa
Bricolage Grotesque
Display · 600, 800 · headings only
Aa
Space Grotesk
Body · 400, 500, 700 · prose and UI
Aa
Space Mono
Code · 400, 700 · terminals, labels, values
Hero
Bricolage 800 · 86/80 · −4.5%
keeps your flock alive
Section
Bricolage 800 · 38/44 · −3%
What works today
Body
Space Grotesk 400 · 17/27
It restarts them when they die, captures what they print, and says plainly when something is wrong.
Label
Space Mono 400 · 12 · +14% caps
PRE-RELEASE, AND HONEST ABOUT IT
Code
Space Mono 400 · 13/23
shep bleats web --no-follow
04

Components

Buttons
Build from sourceRead the docsthe lexicon →
Status pills
onlinelaunchingstoppederroreddog

Status text is the daemon's own word, lowercase, never restyled into a friendlier one.

Terminal block
~/apps
$ shep start Flockfile.toml
shepherd not listening — starting one
web     online   pid 1001
worker  online   pid 1002
! cron    errored  restart budget exhausted
Callouts
note

shep logs is the same command asshep bleats, and always will be.

careful

An adopted dog runs at the shepherd's own trust level, with no isolation beyond it.

05

Shape and motion

One outline weight, one shadow, no blur. Everything that moves is an idle loop — nothing animates in response to scrolling except the sky.

Shape
Outline
3px on UI, 4px on illustration and hero panels. The only thinner line is a 2px table rule.
Radius
999px pills, 22px cards, 16px blocks inside cards, 14px buttons.
Shadow
Solid ink, equal x and y, never blurred. 3px on pills, 6px on cards, 9px on hero panels.
Tilt
±1.4deg maximum, and a card straightens on hover. Anything more looks broken, not hand-set.
Motion
bob
Sheep idling in the pasture
5–6.6s ease-in-out infinite · −7px, ±1.5deg
chew
The lead sheep's head only
2.4s ease-in-out infinite · −7deg
wag
The dog's tail — the fastest thing on any page
1.1s ease-in-out infinite · −14 to 16deg
twinkle
Stars before the sun comes up
2.6–4.8s ease-in-out infinite · opacity .35 → 1
press
Buttons and pills under the cursor
no transition · translate 2–3px, shadow shrinks the same

Give any two animals different durations and offset delays. Two sheep bobbing in lockstep reads as a loading spinner.

Scenery
The sky does the work

One fixed gradient behind the whole scene, night at the top to afternoon at the bottom. Scrolling moves you through the day; nothing else reacts to scroll.

Two hill bands, always

A pale far band and a saturated near band, both 4px outlined, both cropped past the viewport edge so no seam shows.

The barn is scenery

Barn red belongs to walls and roofs only. It never becomes a status, a button, or a border on a UI surface.

Population

Three to five sheep and exactly one dog per scene. The dog stands apart from the flock — it watches, it is not counted.

06

Voice

Four registers, and knowing which one you are in is most of the job.

Landing page
playful
shep keeps your flock alive.
Enterprise-grade process orchestration.
Docs prose
playful, precise
A dog watches the flock rather than being part of it.
Woof! Let's get your doggos going!
Config reference
plain
instances — number of processes to run.
instances — how many sheep in this pen.
Errors and logs
technical only
no shepherd channel — set channel = true
Oh no, the sheep wandered off! 🐑

The lexicon is the design system too.

Fifteen words carry the whole product. Get them right and the interface explains itself; get them wrong and no amount of illustration saves it.

Read the lexicon →