01Identity
Threadline makes system history followable.
The visual center of the brand is a single idea: a line that connects discrete points into an intelligible path. Audit history is exactly that — scattered row changes, actions, and requests that only make sense once something traces the route between them.
The wordmark draws this idea instead of decorating around it. The word threadline is set in Geist; at the adjacent d and l, the two ascenders are cut at a shared line — the fabric — and a single stitch of thread rises out of one stem, arcs over, and dives back into the other. The letterforms are the material; the thread passes through them. One line, two points, a followable path. Nothing else is added: no badge, no container, no abstract symbol.
What it should feel like
- a clear line through a confusing incident
- an engineer-friendly audit timeline
- a map of system change that can be inspected
- a serious OSS project with practical taste
- a security vendor landing page
- a lock or shield compliance badge
- abstract nodes with no domain meaning
- consumer-app gradients
Anti-traits
Not flashy. Not cute. Not cyberpunk. Not militarized. Not compliance-bureaucratic. Not generic SaaS. Not fake-futurist.
02Logo system
One drawing, eight cuts.
Every asset is pure vector paths — the letterforms are outlines, not live text, so the mark renders identically on every surface with zero font dependencies. The family below ships in this directory; each file has one job.
logo-primary.svg
The primary lockup. Fog glyphs, Stitch Blue arc.
dark surfaces — product, slides, social
logo-primary-light.svg
A designed light rendition — Ink glyphs, not a recolor of the dark asset.
README, GitHub, HexDocs, light docs
logo-wordmark.svg
The wordmark alone — intact ascenders, no arc. currentColor for inline adaptive use.
running text, constrained headers
logo-monochrome.svg
The one-color master — exactly one paint value (currentColor), arc included.
print, engraving, single-color contexts
logo-mark.svg
The extractable stitch: one thread through the fabric line. The thread disappears behind the fabric at the crossings.
avatars, sidebars, small UI
favicon.svg
Designed at 16px — two strokes, no container chip. Flips ink with the browser's color scheme.
browser tabs, pinned tabs
logo-primary-subtitle.svg
The only lockup carrying the tagline — outlined IBM Plex Mono caps, justified to the wordmark's ink edges.
large deliberate surfaces only
social-card.svg
1280×640 link preview. The dark canvas is the single sanctioned full-bleed background in the family.
og:image, link previews
Clear space
For the mark and favicon, keep one quarter of the rendered size clear on every side — a 16px favicon context keeps 4px clear.
Minimum sizes
The numbers are derived from the geometry, not taste. The arc stroke renders at 11% of the lockup's height, so it stays solid long after the letterforms give out — wordmark legibility governs the minimums, except for the favicon, which is its own 16px design.
primary / light / monochrome / wordmark
Minimum width 120px (≈26px tall). At that size the lowercase forms hold ≈13px and the arc stroke ≈3px. Below 120px, switch to the mark.
logo-primary-subtitle
Minimum width 180px (≈48px tall), where the tagline caps hold ≈7px. Below that the tagline is noise — use the primary instead.
logo-mark / favicon
Mark minimum 16px square, prefer 24px and up. The favicon is designed at 16px — its strokes are 1.7px there, above the 1.5px small-size floor — and is never rendered smaller.
Dark and light
Every light-surface rendition is designed, never recolored from dark: the light primary uses Ink #0F1728 glyphs from the light token lane. The stitch arc keeps Stitch Blue #4781E6 on both surfaces — 5.0:1 against Threadline Black, 3.78:1 on white, above the 3:1 graphics floor.
GitHub renders READMEs in both schemes. Use the <picture> element so each reader gets the asset designed for their theme — copy this into the root README as-is:
<picture>
<source media="(prefers-color-scheme: dark)" srcset="brandbook/logo-primary.svg">
<img alt="Threadline" src="brandbook/logo-primary-light.svg" width="420">
</picture>
Live demonstration — this panel uses the same mechanism with the files beside this page, and follows your system's color scheme:
The favicon story
The favicon is not the lockup shrunk down — it is its own artifact, drawn at a 16px canvas: one stitch through the fabric line, two strokes total, no container chip. Because favicons cannot inherit a page's text color, the file carries an internal prefers-color-scheme style that flips its ink between Ink and Fog with the browser chrome. Scale it up freely; never design downward from larger art.
03Misuse
What not to do.
These abuses are rendered here so they are unambiguous — and rendered only here. The repository ships no antipattern assets. One correct reference first, then the gallery.
Do
The primary lockup, as shipped, on its surface, inside its clear space. This is the reference.
Don't — background chip
Never place the mark inside a container chip, plate, or badge. The stitch sits directly on the surface; the fabric line is its own ground.
Don't — icon beside plain text
Never bolt the mark next to the name set in plain type. The wordmark and stitch are one drawing — use logo-primary.svg.
Don't — tagline as primary
Never treat the tagline as part of the primary, and never run the subtitle lockup below 180px — its caps fall under 7px and collapse into noise. The tagline lives in logo-primary-subtitle.svg alone.
Don't — gradient dependence
Never make the mark depend on gradients or glows. It must survive flat, one-color reproduction — logo-monochrome.svg is the proof.
Don't — stretch or squash
Never distort the lockup. Its aspect is fixed at 4.56:1 — scale uniformly or not at all, and never rotate.
Don't — off-palette recolor
Never recolor. Glyphs are Fog on dark or Ink on light; the arc is Stitch Blue #4781E6 — or the entire mark is one color via the monochrome master.
The small-size rules
These thresholds are testable numbers, not vibes. They govern the favicon, the mark, and any future small cut.
- Stroke weight ≥ 1.5px at a 16px canvas (target); 1.0px is the absolute floor.
- Gaps and counters ≥ 1.0px at 16px; ≥ 1.5px around modifier elements.
- ≤ 4 distinct strokes or elements at 16px — the silhouette must identify first.
- Design at 16px; never shrink larger art down. favicon.svg IS the 16px artifact.
04Imagery
Lines, not lock icons.
Imagery speaks the language of the mark: lines that connect points into a followable path. Line maps, timelines with depth, contour cross-sections, labeled architecture flows — macro linework in the spirit of stitching and signal traces. The four specimens below are reference drawings; copy them as starting points for real diagrams.
Evidence path
Scattered events, one followable route — the brand idea drawn literally. Use it when the story is finding the line through the noise.
docs hero, README art, social headers
Timeline with depth
A narrative rail with the layers beneath one moment — depth rails, not a gantt chart. Use it when the story is exploring what happened.
blog headers, feature pages, changelogs
Contour cross-section
History as layers, read at one point in time — drawn on Paper because imagery ships into light docs surfaces too.
guides, as-of and retention explainers
System flow
Layered rails with domain nouns: a request emits an action; the action's transaction groups its changes. Two arrows total — use it to explain the architecture, not to decorate it.
architecture explainers, talks, deep dives
Diagram rules
Every diagram is built from the same kit. If a panel needs more than this, it is hiding the flow instead of showing it.
- Lines, points, labels, and layered rails — nothing else.
- Domain nouns on the rails: request, action, transaction, change, evidence, export.
- Arrows are sparse — one per relationship that matters.
- Actual flow over decorative complexity.
Banned imagery
The visual clichés of the audit and security category never appear — not in docs, not in slides, not in social art. Rendered small here so they are unambiguous.
The last one matters most: an unlabelled node graph is the failure mode closest to home. The fix is the diagram rules above — put domain nouns on the rails and it becomes a system flow.
05Color
Night infrastructure with luminous signal lines.
Dark neutrals carry the product and high-signal moments; light surfaces carry docs and print-like material. Color is signal, not decoration — and never the only carrier of meaning.
Dark neutrals
Threadline Black
#0B1020
Graphite
#141B2D
Slate Line
#23304A
Fog
#D7DEEA
Light surfaces
Paper
#F7F9FC
Mist
#E7ECF4
Ink
#0F1728
Signature accents
Thread Blue
#4F8CFF · interface accent
Stitch Blue
#4781E6 · the arc's ink
Signal Cyan
#4EDFD1
Iris
#8A7CFF
Ember
#FF8A5B
Semantic
Success
#3FD08F
Warning
#F3B94C
Error
#F06A6A
Info (dark text)
#9AB9FF
Two blues, two jobs
The stitch arc is Stitch Blue #4781E6 on every surface, dark and light alike. Thread Blue #4F8CFF is the interface accent — links, focus, selection, primary actions — and stays untouched everywhere the product already uses it. The two blues are siblings with separate jobs: one belongs to the mark, one to the UI. Stitch Blue ships as its own token (--tl-color-stitch-blue, aliased as --tl-color-logo-arc) and never substitutes for the interface accent, in either direction.
Rules
- Use dark neutrals for product UI and high-signal marketing moments.
- Use light surfaces for docs, diagrams, reference content, and print-like material.
- Use color as signal, not decoration.
- Do not rely on color alone for operation type, severity, or state.
- Use gradients only as thin line treatments. Never use large gradient blobs.
06Typography
Geist speaks. Plex Mono measures.
Geist carries prose, headings, and UI. IBM Plex Mono carries everything machine-flavored: code, IDs, table names, diffs, metadata labels. This page names both first in its font stacks and degrades gracefully to system type when they are not installed.
Why the wordmark is paths, not type
The logo's letterforms are Geist 600 converted to outlines. No surface that renders the mark — GitHub, HexDocs, a terminal preview, this page — ever needs the font, requests a file, or substitutes a fallback. The drawing is portable because it carries its own geometry; the cut ascenders and the stitch arc stay exactly where they were drawn, everywhere.
Rules
- Letter spacing is 0 for normal text.
- Uppercase metadata labels may use 0.12em tracking.
- Do not use mono for long prose.
- Do not add an editorial serif until a real marketing page needs it.
07Voice & microcopy
A calm senior engineer with strong product taste.
Threadline speaks plainly about what it does. Precise over clever. Plainspoken over buzzwordy. Confident over swaggering. Thoughtful over promotional. Calm over urgent. Technical over salesy.
Writing rules
- Say what it does plainly.
- Use active voice.
- Keep sentences short.
- Make boundaries explicit.
- Distinguish actions from changes, requests from transactions, and audit history from database activity auditing.
- Do not use exclamation marks in product copy.
- Do not hide technical value behind vague words like "powerful", "seamless", "next-generation", or "robust".
Capture changes, connect them to context, and follow the full history.
Revolutionary audit intelligence for modern teams.
Understand the change, who initiated it, and why.
Enterprise-grade observability for governance workflows.
Microcopy in the product
Errors state what failed, why if known, and the next action — without blame.
Could not verify trigger coverage for ticket_replies. Threadline could not introspect the deployed trigger SQL. Rerun mix threadline.gen.triggers --tables ticket_replies, migrate, then check coverage again.
No audit changes match these filters. Clear the table filter or widen the time range.
Export queued. Threadline will keep the filtered timeline and evidence bundle together.
Redaction drift detected. The configured redaction policy does not match the deployed trigger. Regenerate triggers, then rely on this field.
08Applications
The system at work.
Reference specimens for the surfaces that matter most. Each ships as a pure-path SVG alongside this page; the renders below use the same geometry.
examples/readme-header.svg — the GitHub README header: the lockup over a hairline rule, transparent canvas, dark surfaces. The light scheme swaps in logo-primary-light.svg via the <picture> element documented above.examples/docs-page.svg — docs chrome: the stitch mark anchors the sidebar; content is wireframed as stroke paths. The mark, not the lockup, carries identity in dense chrome.social-card.svg — the 1280×640 link preview. Lockup and tagline, centered, nothing else. In prose, the tagline is sentence case: "Follow what happened." The capitalized form belongs to the two tagline-bearing assets only.