Personal build · v1

Otto

A voice-first AI assistant that runs my work.

Otto is the first version of my personal AI operating layer. It is built on the Claude Agent SDK, talks back, and executes my automations on command. A personal build, not a public product, and the v1 that Amaru replaced.

v1. It built this site, and Amaru, its successor, is the assistant I use now.

listening…
What it is

I do a lot of repetitive, high-stakes data work on industrial projects: pulling records, generating reports, signing off readiness packages. Otto is how I stopped driving each of those by hand.

I speak a command, Otto figures out which automation to run, runs it, and reports back. Same brain across every task: one set of skills, one shared memory, one assistant. It has grown well past the automations it started with, and it now writes and ships software of its own.

What it does

Capabilities

Voice-first interface

A glowing orb is the centerpiece. Push to talk, Otto listens, thinks, and speaks back a short natural summary. Speech-to-text and text-to-speech both run on the machine, swappable behind a provider seam.

Multi-agent orchestration

Bigger jobs get fanned out to a lead agent and parallel workers, then merged. Otto picks solo, parallel, or full workflow based on the task instead of doing everything in one thread.

Runs real automations

Data pulls, report generation, readiness sign-offs, task-board triage. Registry-driven cards mean adding a new automation is a config edit, not a UI rebuild.

Writes and ships software

Otto builds. It branches, writes the code, runs the build, reviews its own diff, and merges when it passes. This site is one of the things it shipped.

Work that runs without me

Standing jobs run on their own schedule and report what they did: a morning brief, a weekly plan, a recurring report. Nothing waits for me to remember it.

Persistent memory

Otto remembers projects, decisions, and preferences across sessions through a version-controlled memory layer, so context carries over instead of starting cold each time.

In practice

Real jobs it runs

  • Generate the readiness and progress reports for a live industrial project.
  • Drive browser automations against systems that never shipped an API.
  • Audit a task board, fix the drift, and say what changed.
  • Plan a training week from real training data and explain the reasoning.
  • Draft, review and merge code across several repositories at once.
  • Keep a written record of decisions so nothing has to be explained twice.
See it run

In motion

listening…
update the progress dashboard
  • Routing to skill: powerbi-progress-report
  • Pulling PIMS exports…
  • Refreshing dashboard…
  • Done. Report ready.
Under the hood

How it works

  • Python on the Claude Agent SDK, with a browser HUD for the voice loop.
  • Capabilities are skills: a folder of instructions plus its own code, so a new one is a new directory rather than a rebuild.
  • Sub-agents each get an isolated git worktree, so parallel jobs never collide.
  • Rides a Claude subscription login. No metered API, no per-call cost.
  • Registry-driven automation cards with live progress, each writing its own status.
  • A version-controlled memory vault carries context between sessions and machines.
  • Nothing merges until the conventions check and the build are both clean.

Otto ran the work this portfolio talks about first. Amaru runs it now.

The code stays private. The capability is the point. See the rest of what Lucas builds.

Back to projects