seamui.

// components you own

UI that feels physical.

shadcn's distribution model, rebuilt on Base UI with a motion.dev feel layer — springs, touch feedback, depth.

Touch feedback

Every control recedes into the surface on press and springs back — with a haptic click on devices that can.

whileTap = depth.pressed · haptic = "tap"Docs →
A

Listening…

Agent presence

State-driven motion for voice agents — dots that breathe with the audio level and never go dead.

state = "listening" · level = 0.42Docs →
Working

Built for agents

A whole workbench tier — status, git, mode — in the same springs, depth, and squircle language you own.

status = "working" · pr.state = "open"Docs →

The condense

Overlays rise out of their trigger and fall back on dismiss — one motion, both directions, backdrop in sync.

condense.surfaceDocs →

Start in one command.

init scaffolds — or wires up — your app: the theme tokens, the depth shadows, and the foundation. Then add any component. Next.js, Vite, or Remix; Tailwind v4.

setupbunx --bun @seamui/cli@latest init
addbunx --bun @seamui/cli@latest add button

Prefer no extra CLI? Every component installs straight from the registry — the shadcn CLI or the raw URL:

shadcnbunx --bun shadcn@latest add @seamui/button
registryhttps://seamui.dev/r/button.json

Then open components/ui/button.tsx — it's yours. Retune every spring from one line in lib/motion.ts; give it all a click and a buzz with one provider.