Hi, I'm Viet Anh — ML lead and AI architect.
I build AI that ships — from the edge to the cloud.
On-device inference where privacy and latency decide it; scalable cloud serving where reach and throughput do. Architected on the economics, not the hype, and shipped as open-source tools engineers worldwide actually run.
I created AnyLabeling (3.4k★ on GitHub) and run Neural Research Lab, shipping open-source since 2016.

Explore
Projects
AI tools, computer vision systems, and open-source work I have shipped.
View projectsAbout Me
My background, what I work on, and how I got into software and AI.
About meOpen Source
My work on GitHub — tools and libraries used by developers worldwide.
Visit GitHubBlog
Local-first AI, AI security, on-device Vietnamese voice, and what I am shipping next.
Read articlesLatest Articles
Ask, or It Will Guess: Question-Asking Is the Core Skill of Agentic Work
Models almost never ask you what you meant: across ambiguous questions, answer rates run above 95% and clarification barely registers. Repairing that in conversation makes it worse: underspecified multi-turn runs measure a 39% average performance drop, driven by a 112% jump in unreliability, and the effect shows up from two turns onward. The leverage is no longer in writing better prompts. It is in forcing the questions out before the first answer attempt, and in asking the questions afterward that prove you understood what you shipped.
I gave my website tools for AI agents with WebMCP, and thought hard about the attack surface
WebMCP lets a web page hand callable tools to browser AI agents instead of making them scrape the DOM. I wired three read-only tools into this site. The interesting part was not the API. It was deciding what an agent, or a prompt injection riding one, is allowed to do.
The Bottleneck Moved to Review: My SDLC After AI Writes Most of the Code
When a machine writes most of your diff, the constraint stops being how fast you type and becomes how well you review. Here is the SDLC I actually run (the provenance audit, the sandbox, the CI backstops, and the three questions I ask every AI-authored change) plus the parts of review that don't compress and never will.
Plan Once, Then Act: When the ReAct Loop Is the Wrong Harness for Small Local Models
On small local models, the standard ReAct loop has a failure mode nobody warns you about: the model calls one tool, declares victory, and stops. What we measured across 12 GGUF models in EdgeVox, why we added a plan-once dispatcher, and how to decide which loop your task actually needs.
Building EdgeVox: Chaining STT → Local LLM → TTS Without Touching the Cloud
A first-hand build narrative of EdgeVox, a fully offline voice agent that chains speech-to-text, a local LLM, and text-to-speech on one device. The architecture in plain language, ROS2 integration, the latency budget, and the failure modes nobody warns you about.
I put an AI version of myself online, then tried to break it
Building a represent-me chatbot is a weekend project. Treating it like a production security surface is the part nobody writes about. Here is the architecture, the prompt leak I found by attacking my own bot, and the reusable suite that keeps it honest.