The ohmyho.st
design system.

Everything needed to build a page, a deck, a thumbnail or a post that looks like it came from the same company. Copy the tokens, use the components, fill the templates.

01 — brand

What we are

One provider for hosting, Postgres, email, a domain, AI models and backups. Ten dollars a month, for every project you build — not per project. Driven by an agent through one MCP, with no dashboard.

The one idea

Bundling at Aldi prices. Everyone else sells the parts separately and charges per project. We buy in bulk, bundle, and add a small margin. Every piece of communication should be traceable back to that sentence.

Positioning statement

For people who build with agents and are tired of five subscriptions, ohmyho.st is one host that does all of it for ten dollars a month — because the agent should ship without asking you for a credit card.

Personality

02 — voice

Say this
  • Ten dollars. All your projects.
  • They charge per project. We don't.
  • Unhappy? Take your database and go.
  • No dashboard. Ask your agent.
  • Nightly. Restore anywhere. Leave whenever.
Never this
  • Seamlessly orchestrate your cloud-native workflow
  • Empowering developers to unlock their potential
  • Best-in-class, enterprise-grade, next-generation
  • Any sentence that survives being deleted
  • Exclamation marks

The test

Read it out loud. If it sounds like a person who got an invoice they didn't like, it's right. If it sounds like a conference booth, rewrite it.

The wordmark is set in JetBrains Mono, weight 400, tracking −0.02em. The domain suffix always drops to --subtle. The period stays with the suffix — the joke only works if you can see the split.

ohmyho.st ohmyho.st ohmyho.st
<span class="mark">ohmyho<i>.st</i></span>

.mark{font-family:var(--mono);letter-spacing:-.02em}
.mark i{font-style:normal;color:var(--subtle)}

Clear space & minimums

Tagline lockup

ohmyho.st
Hosting for agents.

04 — color

The palette is monochrome on purpose. Colour carries meaning, never decoration: green means it worked, amber means look, red means it broke. If a colour isn't saying one of those three things, it's grey.

Dark (default)

--background#000000
--card#0A0B0D
--muted#0C0D10
--border#17181A
--border-strong#26282C
--subtle#3E4247
--muted-foreground#83878D
--foreground#F0F1F2
--ok#4CAF8F

Light

--background#FFFFFF
--muted#F4F4F5
--border#E4E4E7
--subtle#A1A1AA
--muted-foreground#71717A
--foreground#09090B

Semantic only

oklive · connected · copied
warnlow credits · degraded
badfailed · over cap

Partner brand colours (Zapier orange, n8n pink, Postgres blue) appear only inside logo tiles. They never leak into UI.

:root{
  --background:#FFF; --foreground:#09090B; --card:#FFF;
  --muted:#F4F4F5; --muted-foreground:#71717A; --subtle:#A1A1AA;
  --border:#E4E4E7; --border-strong:#D4D4D8;
  --primary:#18181B; --primary-foreground:#FAFAFA;
  --ok:#16A34A; --warn:#B45309; --bad:#B91C1C;
}
:root[data-theme="dark"]{
  --background:#000; --foreground:#F0F1F2; --card:#0A0B0D;
  --muted:#0C0D10; --muted-foreground:#83878D; --subtle:#3E4247;
  --border:#17181A; --border-strong:#26282C;
  --primary:#F0F1F2; --primary-foreground:#000;
  --ok:#4CAF8F; --warn:#D9A441; --bad:#E06C63;
}

05 — typography

Two families, no exceptions. Space Grotesk for everything human. JetBrains Mono for anything a machine produced: the wordmark, commands, prices in tables, labels, timestamps, units.

Ten dollars.
display 1
64/1.02 · 700 · −.05em
gradient allowed
Hosting for agents.
display 2
40/1.10 · 600 · −.042em
Backups you can walk away with.
display 3
26/1.2 · 600 · −.03em
Hosting, Postgres, email and a domain. They charge per project.
body large
17/1.5 · 400
Credits reset on your billing day. Quiet projects burn almost nothing.
body
15/1.55 · 400
More runtimes later. Right now: pick one of these and deploy.
body small
13.5 · muted-foreground
$ curl omh.st/0.sh | bash
mono
13/1.95 · 400
your agent
mono label
10–11 · +.07em · subtle

The gradient rule

Headlines may fade from --foreground at 42% to --muted-foreground at 100%. Only on display sizes, only on one heading per view, and always with extra line-height — a tight leading clips descenders.

.fade{
  line-height:1.06; padding-bottom:.12em;
  background:linear-gradient(180deg,var(--foreground) 42%,var(--muted-foreground) 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

06 — space & shape

Spacing scale

4
8
12
16
24
32
48
64
96

Section rhythm on the site: 112px desktop, 80px mobile. Card padding: 26px. Never invent a value between steps.

Radius — three values, that's all

22 surfaces
12 controls
999 pills

Borders, not shadows

Depth comes from a 1px hairline and a change in surface brightness. The only shadow in the system is under a floating element (toast). Cards never drop shadows.

07 — motion

.up{opacity:0;transform:translateY(18px);
  transition:opacity .8s cubic-bezier(.2,.7,.3,1),transform .8s cubic-bezier(.2,.7,.3,1)}
.up.in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  .up{opacity:1;transform:none;transition:none}
}

Every animation must have a reduced-motion fallback that shows the end state. Non-negotiable.

08 — buttons

Dark pill, hairline border, chevron for navigation. No solid white slabs — they shout on black and break in light mode.

.btn{display:inline-flex;align-items:center;gap:8px;
  background:var(--muted);color:var(--foreground);
  border:1px solid var(--border-strong);padding:11px 20px;
  border-radius:999px;font-size:14px;font-weight:500;cursor:pointer;
  transition:background .2s,border-color .2s}
.btn::after{content:"›";color:var(--muted-foreground)}
.btn:hover{background:var(--background);border-color:var(--muted-foreground)}

09 — badges

Built in the EU GDPR compliant soonISO 27001 connected

Unearned claims are greyed and prefixed soon. Never show a certification badge you don't hold.

10 — cards

Buy it separately
Vercel Pro$20
Supabase Pro$25
Resend$20
5 accounts, one project $71/mo
ohmyho.st
Hostingin
Databasein
Emailin
1 command, every project $10/mo

The winning card gets a foreground border plus a 3px muted ring — permanently, not on hover. One highlighted card per comparison.

11 — cell grid

The default way to show a set of peers: logos, destinations, supported runtimes. One outer frame, hairline dividers, no gaps, no individual boxes. This is what keeps a long page from looking like a pile of components.

Next.jsViteTanStackReactPostgres
.cells{display:grid;gap:1px;background:var(--border);
  border:1px solid var(--border);border-radius:22px;overflow:hidden}
.cells > *{background:var(--background);padding:22px 14px;
  transition:background .22s}
.cells > *:hover{background:var(--muted)}

12 — terminal

Our signature object. Used whenever we show what the agent does. Zones separated by hairlines, each with a mono label. Never fake output that the product can't produce.

your agent
$omh create myapp
$omh db up
$omh deploy
live
https://myapp.ohm.st

13 — controls

Auto top-up
$10$100$1000

Sliders use a 3px track in --border-strong and a 17px foreground thumb. Toggles turn --ok when on, never blue.

14 — diagrams

One visual language for every system drawing: sources on the left, the hub in the middle, outputs fanning right. Hairline bezier curves, 2.5px dot nodes, boxed labels for named things, particles travelling along the paths.

codex claude any harness hosting postgres email mcp ohmyho.st

Diagram rules: no arrowheads, no drop shadows, no colour except the hub glow. Labels always lowercase mono.

15 — icons

Outline only, 24×24 grid, 1.6–1.7 stroke, round caps and joins, currentColor. Rendered at 16–20px. No filled shapes, no duotone, no emoji anywhere in the product.

16 — slides 16:9

Canvas is 1920×1080. Safe margin 120px. One idea per slide. Four layouts cover almost everything.

title · 1920×1080
ohmyho.st
Ten dollars.
All your projects.
Hosting, Postgres, email and a domain.
ohmyho.st
statement
the problem
They charge
per project.
We don't.
ohmyho.st
comparison
Same stack. One bill.
Buy it separately
$71/mo
5 accounts · one project
ohmyho.st
$10/mo
1 command · every project
demo
One command.
$ omh create myapp
$ omh db up
$ omh deploy
https://myapp.ohm.st
ohmyho.st

Slide rules

17 — YouTube

Thumbnail 1280×720. Readable at 210px wide — that's the only test that matters. Max five words, minimum 90px type.

thumbnail · 1280×720
$71$10
Vercel + Supabase + Resend, bundled
ohmyho.st
thumbnail · question
Why do you
pay 5 bills
for 1 app?
$ curl omh.st/0.sh

Thumbnail rules

18 — LinkedIn

Link image 1200×627, square post 1080×1080. Assume it's read at 400px on a phone in a grey feed — the black frame does the work.

link · 1200×627
hosting for agents
Ten dollars.
All your projects.
They charge per project. We don't. ohmyho.st
square · 1080×1080
ohmyho.st
No dashboard.
Ask your agent.
our mcp returns your usage and your data

Carousel

Square, 6–8 slides. Slide 1 is the claim, slides 2–6 one fact each, last slide is the command and the wordmark. Same margins as the deck, scaled: 90px on 1080.

19 — Instagram

Feed 1080×1080 or 1080×1350. Same system, more air, fewer words. The mono label at the top acts as the visual signature.

feed · 1080×1080
the whole price list
$10
a month, for every project you build
ohmyho.st
portrait · 1080×1350
ohmyho.st
Backups you can walk away with.
Google Drive
Amazon S3
Cloudflare R2
Nightly. Restore anywhere. Leave whenever.

20 — story / reel

1080×1920. Keep everything inside the middle 1080×1420 — the top 250px and bottom 250px are covered by the platform UI.

9:16
stop paying five bills
Ten dollars.
All your projects.
Hosting, Postgres, email, a domain, AI and backups. One command.
$ curl omh.st/0.sh | bash
ohmyho.st

21 — exporting

Every template above is real HTML at real pixel size, scaled down with transform: scale(). To export:

<!-- swap the scale factor to 1 before exporting -->
<div class="canvas" style="width:1280px;height:720px;transform:scale(1)">
  …
</div>

22 — writing rules

23 — don'ts

Visual
  • No blue accent, no gradient buttons, no glassmorphism.
  • No drop shadows on cards. Hairlines only.
  • No stock photography, no 3D blobs, no AI illustration.
  • No borrowed typefaces from competitors (Geist is Vercel's, the serif is Resend's).
  • No fake logos. If we don't have the asset, we show a coloured tile.
  • No hover animations that move things.
Content
  • No invented testimonials or customer logos.
  • No certification badge that isn't held — mark it soon.
  • No competitor pricing without a date and a source.
  • No screenshots of a dashboard we deliberately don't build.
  • No emoji, no exclamation marks.

ohmyho.st design system v1 · Space Grotesk + JetBrains Mono, both open source · tokens follow the shadcn/ui naming convention so any component from that ecosystem drops in unchanged.