Grant Adams
Southern California ·
Back to work
Tell me about dew
Case study

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.

Role  Product Design & Engineering Year  2026 Focus  Native app · AI agent · generative UI
The dew home dashboard

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.

dew home screen on iPhone
Home — climate, scenes, and lights, live.
dew scenes on iPhone
Scenes — one tap runs a whole routine.
dew device control
Tap any device for full control — brightness, color, and state.

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:

Where it shows up:

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.

dew devices organized by room
Devices assemble by room, straight from what's in the home.

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.

dew's multi-agent surface

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.

dew model provider settings
Pick the model that powers dew — managed, your own, or fully local.

The work

50+
Device integrations, one CLI each
Local-first
No database — data stays in the home
Model-agnostic
Any model — cloud or fully local