Skip to content
Emre.dev — home
Emre.dev
All work
Research2026Architect · engineer

NOVA

An on-device agent architecture, and an honest account of why it was not shipped.

The short version

Its own architecture review concluded that the model is not the product — the harness is — and that the agent’s core guarantee was hoped for in a prompt rather than enforced in code.

No public capture

A working multi-module codebase plus thirty-six documents, including a ten-part architecture review. Deliberately not shipped: the review concluded the enforcement model was not sound enough to put in front of anyone.

How NOVA works

A Kotlin multi-module Android agent that plans, acts on the device and verifies the result, together with a research corpus arguing at length — and against its own author — about what such a system would have to become before it could be trusted.

The problem

A phone assistant that can actually operate the phone has to be trusted with outward actions — sending, deleting, paying. Trust has to be structural, because one confident hallucination on an outward action is unrecoverable.

The architecture

Gradle multi-module with deliberately platform-free boundaries: core, planner, memory and the tool API contain no Android dependencies at all and are unit-tested in isolation. Voice, model providers and Android integration are separate modules behind interfaces.

The interesting decision

Verify-don’t-assume actuation — real machine verifiers read device state back after an action rather than trusting the model’s report — plus a deny-first confirmation parser and a no-retry rule on anything outward-facing.

What it does now

The architecture review is the deliverable. It identifies that success was being accepted on the model’s word, that memory was a five-hundred-row log with no consolidation, and that building on the accessibility layer was a strategic dead end — then argues for a channel hierarchy instead.

Worth knowing

  • Platform-free module boundaries — the portable half of the system genuinely does not import Android.
  • Verifiers read device state back after acting, instead of accepting the model’s claim of success.
  • Deny-first confirmation parsing and a no-retry rule on outward actions.
  • The review is written against its author’s own work: "assume the current architecture is wrong until proven correct".
  • Not shipping was the finding, and it is recorded as one rather than as a pause.