dew
dew is an AI that runs a home. You talk to it in plain language and it handles the locks, lights, climate, cameras, and media across every brand in the house — all running on a Mac in the home, with no cloud in the loop. I designed the app and engineered the whole system behind it.

The app
Native SwiftUI on iOS and macOS. One calm, glassy surface for the whole home — rooms, scenes, cameras, climate, and media, live from the house — with a chat and voice layer to just ask for what you want. Multi-home and multi-user, so a household shares one system.



Generative UI
What it is:
dew's UI isn't pre-built screens. The AI generates the interface itself — as a declarative component tree — and the app renders it natively as Liquid Glass. Real generative UI, bound to your actual devices.
The key idea:
The model never writes code. It composes from a fixed vocabulary of ~20 native primitives — card, dial, toggle, slider, camera, section, grid — each mapped to a polished SwiftUI component. So the AI composes real, working interfaces, but only from safe, on-brand building blocks. Nothing it outputs ever executes — it's data, not code.
How it works:
- You ask — "show me the back camera," "pull up the living room lights"
- The daemon sends the model a design-system spec + your real connected devices + the request
- The model returns one component tree (JSON), bound to your real devices, every control wired to an action
- The app walks the tree and renders each primitive as native Liquid Glass — nothing from the model runs
Where it shows up:
- The ask-anything input composes a component live and drops it into the sheet — and can generate whole dashboards on request
- The home screen composes itself from your live device state — the home IS the dashboard
The engineering decisions that make it work:
1. Declarative primitives, not code generation.
The model emits a constrained spec, never code. Three wins at once: safe (nothing executes — no injection surface), consistent (every screen is the same handcrafted components), and it scales — one tree renders as a single card or a full multi-section dashboard.
2. The design system is the prompt.
One file defines the primitive vocabulary, brand tokens, and layout taste — injected straight into generation. The entire look of every AI-composed screen retunes by editing that one file. Zero code change.
3. Generated UI is functional, not a mockup.
Every control binds to a real device action, run through the same safety gate as the rest of the system. The AI composes a live, working control surface — not a picture of one.

Agent mission control
dew runs a whole team of agents, not just one. Each is its own named session — a full coding agent on Claude Code, Codex, or Gemini — running in parallel, so different agents can work different jobs at once. Talk to any of them directly, @tag one to hand something off, or spin up a new agent on the spot.

50+ Go CLIs, one contract
Every integration — Lutron, UniFi, Sonos, Ring, Ecobee, Matter — is its own Go CLI, and the daemon shells out to them instead of importing SDKs. They all follow one contract (auth, health, capabilities, live state), so adding a brand means writing a small CLI, not touching the core.
Runs local, no database
Home state is plain files on the user's own machine, and live device state is read straight from the CLIs. Nothing about the home sits in a cloud database — it's inspectable, portable, and it stays in the house.
Model-agnostic
The agent runs on Claude Code as the harness, but the model behind it swaps with one setting — dew's Claude, your own Anthropic or Max account, any model through OpenRouter, or fully local. Same system, different engine.
