MC

Michael Chen · AI software engineer

I build software for people I know, including me.

Agent runtimes, tool dispatch and evaluation harnesses at Epoch AI / Zerg AI.

The rest of it started because a friend wanted something that didn't exist yet. A few I measured properly afterwards. That's how I found out where they fall short.

latest readings

kestrel real-time factor
×706
kestrel MCD
11.8 / 3.9
PHiLIP, contest entrants
8,231
now  AI software engineer, full-time school  CS, UC Riverside, 2026 here  Bay Area

Measured

Two projects on a bench, with the readings. One of them missed its own bar, and those numbers are here too.

  • Kestrel

    distilled TTS for Apple Silicon · open weights

    I took Kokoro-82M apart and rebuilt it for MLX as a single-voice audiobook engine, down to about 10M active parameters from 82M. The vocoder is a per-bin complex mask over an exact-phase harmonic template. It never leaves frame rate. On an M2 MacBook with 16GB, a 163-second chapter renders in 0.239s on the student-fast preset: a real-time factor of 706, and 57x faster than stock Kokoro. That factor is measured against the roughly 168 seconds of audio the preset actually emits, because its durations drift.

    Content survived the compression. ASR intelligibility sits at parity with the teacher, 5.42% WER against 5.65%, and pitch tracks to about 9Hz RMSE. The student preset is slower at 1.117s but keeps durations bit-exact against the teacher.

    chapter render
    0.239s
    real-time factor
    ×706
    WER, teacher 5.65%
    5.42%
    active params
    ~10M

    Instrumenting my stack against the PyTorch reference turned up five places where the MLX port of Kokoro diverges from it, so I wrote them up and sent a patch upstream to mlx-audio . The loud one is a constant 2.5 dB attenuation: the inverse STFT divided by the sum of the window instead of its square, which for this configuration is exactly 0.75x. The subtle one is a one-frame misalignment in the upsample path that sits directly in the pitch contour, where predicted F0 went from 0.134 relative RMSE against the reference to 0.0000. Across a 55-utterance battery, MCD 7.29 to 4.09 dB and F0 error 11.5 to 5.1 Hz. It is open, not merged.

    did not clear the reason this is the lead project

    Texture is audibly hazier than Kokoro under direct A/B. Mel-cepstral distortion comes in around 11.8 against a 3.9 pass bar, and speaker similarity at 0.9374 against a 0.998 gate. Both are failing gates. The frozen zero-loss battery isn't passed, and the README says so on its first screen.

    The figures above are the repo's. The independent no-cheating audit re-timed the same preset at 0.340s and reproduced the speedup as 40x. It ran on 29 July 2026 against the build before the compile round, and docs/REPORT.md logs what closed the gap after it: mx.compile with fixed-shape padding across the student stages, 0.333s down to 0.239s. Same engine either side of one optimization, not a dispute. What the audit says about the goal does stand, and it's the line worth quoting: 1000x wasn't reached, and the configuration that does pass the gates, ship-q8, is roughly 1x. That preset is still the default provider, and Kestrel stays opt-in until the gap closes.

    fig. 1 · mel-cepstral distortion against the frozen pass bar. The bar is 3.9. Kestrel reads 11.8. Lower is better, and this is the one that did not clear.
    pass bar 3.9 kestrel 11.8 0 12 MCD

    weights on Hugging Face · every figure above is in docs/REPORT.md

  • PHiLIP

    human-in-the-loop image generation on AMD ROCm

    Generate, look, adjust, generate again. The point was making that loop short enough that a person stays inside it, which meant getting inference to about two seconds on ROCm with a fine-tuned PixArt-alpha. It also ships 71 style presets, because exploring shouldn't mean writing prompts all day.

    It won the University category of the AMD Pervasive AI Developer Contest, out of 8,231 entrants, and we demoed it live at AMD Advancing AI 2024 at Moscone Center.

    inference
    ~2s
    style presets
    71
    contest field
    8,231

    the timing, the award and the demo are documented in the contest writeup . The repo is the 2024 source and carries no README. The presets are the only claim it backs on its own.

Shipped

Work people paid for. Some of it I can only describe in outline.

  • 2025 to now

    Zerg and ZTC

    An autonomous coding-agent platform, and the agentic terminal that drives it. I worked on parallel tool dispatch so agents stop queueing behind each other, background sub-agents for work that outlives a single turn, worktree-isolated batch execution so concurrent writers do not collide, a sandboxed multi-agent workflow runtime, MCP and provider routing, and the live web mirror. A human can watch a run while it happens.

    Epoch AI / Zerg AI · TypeScript, Python

  • 2025 to now

    ZergChat

    An agent-native chat product built on the platform, where an agent sits in the channel and answers like anyone else in it.

    Epoch AI / Zerg AI

  • 2025 to now

    ZergBoard

    The board-shaped product on the same platform. Same runtime underneath, a different surface for work that lives in cards.

    Epoch AI / Zerg AI

  • 2025 to now

    Forward-deployed engineering

    Two undisclosed customers. One is an org-management and resource-planning platform, where I built continual-validation harnesses that score agent output against deterministic state, tool, artifact, browser, and visual oracles. A regression shows up as a failing check on the way in. The other is an AI procurement intake and approval portal with grounded vendor research, approvals that stay owned by a human, and RBAC with separation-of-duties controls.

    Epoch AI / Zerg AI · customer names withheld, no public artifact

  • 2023 to 2025

    MOBIVOLT

    A $5M+ DOD-funded fuel-cell program. I wrote a Python and PyQt hardware-in-the-loop simulator with a serial firmware bridge, injecting sensor values every 100ms and polling at 200ms against plant models. Firmware could then be exercised without a rig. I ported PIC32MZ firmware onto Harmony v3 across 50+ application and driver modules with 2,500+ lines of C tests, and kept 5 automated test stands processing 100+ concurrent data streams with zero downtime across 18 months.

    C, C#, Python, PyQt, PIC32MZ, Harmony v3 · defense program, no public artifact

  • 2023 to 2025

    AI at UCR

    I started UC Riverside's first official AI organization and ran it to 50+ members, 10+ technical workshops, and 45% growth in attendance. Most of the work was booking rooms and writing curriculum.

    founder and president

Books, and the audio stack they caused

Where Kestrel, Epub Listener and Hark came from. It starts with wanting to listen to a web novel on a walk and ends with me distilling a vocoder, which is a ridiculous way to solve that problem.

I read a lot of web novels and light novels. The good ones run to hundreds of chapters and the translation pace means you are always waiting, so at some point I wanted to listen to them instead of reading them, mostly so I could do it while walking somewhere.

Nothing would do it. So I wrote a CLI that takes an EPUB and gives back a narrated MP3 with real chapter markers, which is Epub Listener. The files turned out too big and too awkward to move around, so I built Hark to hold them, which parses the MP3 in the browser and keeps the audio on the device. The server only ever sees chapter titles and where I stopped.

A 600-chapter book was still hours of waiting. That is when I went and distilled the vocoder. That is Kestrel, the same project as the benchmark table further up. It's fast enough now that the pipeline stopped being the thing I waited on. It also still sounds slightly worse than the model it came from, which is the part I did not manage to fix.

Hark got a read-along mode out of it, because Epub Listener already knew the word timings the TTS engine produced and it seemed wasteful to throw them away. The narrated sentence highlights the narrated sentence, marks the word being spoken, and jumps if you tap somewhere else. It works on a plane, in airplane mode.

fig. 2 · Hark installed to the iPhone Home Screen, playing a test import. The MP3 was parsed in the browser and stored on the device; nothing on this screen came off a server.
Hark's player running as an installed iPhone app: cover art, the book title, a
              position slider at four seconds, a large pause button, and controls for speed,
              sleep timer, chapters and history.

Hark live · captured from the iPhone e2e suite in the repo

  • Epub Listener

    Python CLI. EPUB in, chaptered MP3 out, via Edge-TTS or local Kokoro. Checksum-based resume so a failed run does not start over. Embeds a timestamped read-along transcript, median word-onset error under 30ms.
  • Kestrel

    The reason the pipeline is fast enough to use, and the one that fails its own quality battery. The numbers and the audit are up under Measured.
  • Hark (sign-in)

    Installable offline-first audiobook PWA. Audio parsed in-browser and stored on-device, server sees metadata only. Karaoke-style read-along with sentence highlight and word-level marking. Works fully offline.

Tools I made for myself

Four things I use most days. I would rebuild all four.

  • tcd

    zsh and tmux helper that launches, finds, and reattaches long-running AI CLI sessions by partial name. tcd zer gets me back into the session I left open on that repo, whatever the generated name was.

    Sessions survive reboots and phone reconnects. I use it from my phone on the train. The partial-name matching exists because of that.

  • cs

    Rust CLI for macOS that swaps Claude Code accounts by replacing the Keychain entry in place, plus a per-profile usage dashboard.

    The built-in flow is logout, login, wait. This is under a second, and it keeps each account's settings and skills separate.

  • ESPN lineup bot

    Chrome extension plus a Node server that wakes five minutes before the first game each day and sets my fantasy basketball lineup off live injury reports. It reads the injury wire rather than a projection, because projections lag the news by hours and the waiver order does not wait.

  • House by 30

    Offline-capable budgeting PWA that turns annual income, estimated taxes, payroll benefits, and planned expenses into an honest monthly remainder.

    Named after the goal. Built it for a friend, then kept using it myself. Opens on a sign-in.

About

school

UC Riverside

B.S. Computer Science, June 2026. GPA 3.66, with a minor in Strategy & Entrepreneurship.

Founder and president of AI at UCR, the university's first official AI organization.

awards

AMD Pervasive AI, University category

For PHiLIP, an award-winning human-in-the-loop image-generation platform on AMD ROCm with two-second inference and PixArt-alpha fine-tuning. Official results

Cutie Hack 2022, first place in the sustainability track.

reaching me

michaelluochen1@gmail.com

github.com/mchen04

linkedin