Software & Systems Engineer Real-time audio / On-device AI / Native Apple

Ethan Perez

I build software that has to work the first time, in real time: low-latency voice pipelines, autonomous agents with safety rails, and native iOS apps on the newest Apple frameworks.

Open to full-time engineering roles
Scroll

I started behind a mixing console, where a signal chain either holds or the whole room hears it fail. I brought that standard to code: measure it, verify it, then ship it.

0
lines of Python, Swift, C++ and TypeScript across my core systems
0
end of speech to first audio on my realtime voice agent
0
voice activity detection latency, measured on Apple Silicon
0
unit and UI tests on my latest iOS app, all green

Selected work

05 systems / scroll
01Autonomous agent
24/7always-on, self-healing

Dave

A personal AI agent that runs my day over iMessage, voice and phone. Planner/executor that acts freely on reversible tasks and asks before anything irreversible, with a fail-closed send allowlist enforced on the wire.

PythonSQLiteMCPlaunchdLLM orchestration
02Desktop + iOS platform
65MCP tools exposed to agents

EOS

A local-first second brain: FastAPI backend, a local model that classifies and organizes everything captured, a mail engine indexing 120k messages, and a native SwiftUI iOS client with HealthKit, Location, APNs and on-device Foundation Models.

FastAPISwiftUIOllamaHealthKitFoundation Models
03Native iOS
1card. today only.

Analog

A one-page daily task app modeled on the Ugmonk Analog card system. Every day resets; open tasks trigger an end-of-day carry or let-go review. Real Liquid Glass on iOS 26, fully offline.

SwiftUILiquid GlassiOS 26Local notifications
04Native iOS
0servers. device talks to Gmail

Quill

Production Gmail client with Apple Mail's gestures and a split inbox, snooze and scheduled send. OAuth 2.0 + PKCE straight from the device, no backend. 34 unit and 6 XCUITest cases.

Swift 6OAuth/PKCEXCUITestTestFlight
05Native iOS / Finance
¢integer-cent precision

Still

A calm budgeting app: one balance, category budgets, a daily allowance and a receipt routine that learns from approved merchants. Money stored as integer cents, data never leaves the device, end-to-end UI test through relaunch persistence.

SwiftUIPhotosUICameraXCTest
+ more

Harness, Siftr, Prospector, Dave HUD, YTH Production Hub

And a dozen production websites shipped for local businesses.

Live demos

Real screens / sample data
Native iOS / SwiftUI

Still

A calm budgeting app built around one question: how much can I spend today? Here is one purchase, start to finish.

Still overview: $336 remaining this month, $26.25 per day for 12 days Still new purchase form with category suggested from past entries Still receipt attached, ready to submit
01 / Overview

See where you stand in one glance.

One number: what is left this month. Below it, a daily allowance and whether you are ahead of pace. Fixed bills like the mortgage are kept out of the daily math so the number stays honest.

02 / Learned prefill

It remembers how you file things.

Buy from Juniper Café again and the category comes pre-filled from your last approved entry. No AI, no profiling: a transparent local rule you can always override.

03 / Receipt

Proof before it counts.

The expense only hits your budget once a receipt is attached and you submit. Money is stored as integer cents, so totals never drift, and everything stays on the device.

Web app / Zero dependencies

AI Interface Review

A workbench for rigorous design critique. Reviewers rate interface specs against a versioned six-criterion rubric, then compare a baseline to a candidate. The tool refuses to show a before/after score when the comparison would be misleading.

AI Interface Review
AI Interface Review: case index, receipt-import specification, and rubric panel
16synthetic specs across 8 cases
6rubric criteria, scored 0 to 4
0dependencies, full test suite

How I engineer

Two deep dives
Case 01 / Latency

A fully local voice pipeline, benchmarked stage by stage.

Goal: an always-on assistant with no wake word and no push-to-talk, under $25 a month. I measured every stage on an M4 Mac mini before trusting any of it.

Live signal / VAD gate
Measured, warm, on device
VAD / Silero ONNX
7 ms
STT / Parakeet 0.6B on MLX
150 ms
Intent gate / local Llama 3.2
240 ms
TTS / Kokoro-82M 4-bit, 5.4x realtime
770 ms
Finding

The bottleneck was not where it looked.

The local stack totals about 1.1 s. The cloud model's first token dominated turn latency, so the path under one second is a small local model for short turns, not a faster STT or TTS.

Then

Rebuilt the call path at 0.89 s.

For phone-style calls I moved to realtime speech-to-speech over WebSockets, with turn-taking and barge-in server side. Measured 0.89 to 1.19 s from end of speech to first audio, tool calls at 58 to 350 ms, verified end to end with synthesized speech.

Case 02 / Reliability

Autonomy is only useful if it is safe to leave running.

An agent that can text, schedule and act on your behalf needs guarantees, not good intentions. I designed for the failure modes first.

Guarantee

Fail-closed outbound allowlist.

Every message the agent sends passes a guard on the wire that drops anything not explicitly allowed. If the guard is down, nothing goes out.

Guarantee

Reversible by default, gated otherwise.

The planner executes reversible work on its own and requests approval for anything outward-facing or irreversible. It verifies its own results before reporting them done.

Recovery

Manifest-driven reboot recovery.

A boot watchdog probes every service after a power loss, repairs what drifted and alerts out of band. A regression suite pins the invariant that every inbound message always gets an answer.

Background

From signal chains to software.

Before software I was a live audio engineer: front of house, monitors and in-ear mixes, broadcast and studio. Live sound teaches you that preparation is everything, problems happen in real time in front of an audience, and there is no undo.

That is the mindset I bring to engineering. I understand the physics of the signal, I instrument before I optimize, and I build systems that degrade gracefully instead of failing silently.

MicrophoneInput
Preamp + gain stagingCalibration
DSP / EQ / dynamicsProcessing
ConsoleAvid S6L / DiGiCo / Yamaha CL
System + monitorsOutput
SoftwareSame discipline, new medium

Toolkit

What I reach for
01

Apple platforms

  • Swift 6, SwiftUI
  • Liquid Glass, iOS 26
  • HealthKit, CoreLocation, APNs
  • Foundation Models
  • XCTest, XCUITest, TestFlight
02

Systems + audio

  • C++, CMake
  • CoreAudio, AudioUnits
  • Voice activity detection
  • Real-time DSP
  • launchd, macOS internals
03

AI + agents

  • LLM orchestration, MCP
  • On-device inference, MLX
  • Speech-to-text, text-to-speech
  • Realtime voice over WebSockets
  • Evals and guardrails
04

Backend + web

  • Python, FastAPI, Celery
  • TypeScript, React, Next.js
  • SQLite, Postgres, Drizzle
  • Docker, Tailscale
  • OAuth 2.0 + PKCE

Experience

Path so far
2026 / Now

Independent Software Engineer

AI systems + native Apple apps

Designing and shipping an autonomous agent platform, a C++ voice front end, and multiple native iOS 26 apps end to end, from architecture and benchmarks through tests and TestFlight.

2026

YTH Production Hub

Full-stack, production operations

Built an operations platform for an auditorium production team: role-based access, versioned readiness checklists, issue tracking with owners and workarounds, and full handoff history.

2025 / 2026

Freelance Web Developer

Small business clients

Designed and shipped production websites for local service businesses and an AV integration company, from discovery and design options through launch.

Earlier

Live Audio Engineer

FOH, monitors / IEM, broadcast, studio

Mixed live events, broadcasts and studio sessions on Avid S6L, DiGiCo, Yamaha CL/QL, Allen & Heath dLive and SSL Live. Built systems from scratch and stepped into running tours mid-run.

Contact

Let's buildsomething real.

perezethan9@gmail.com