I build AI agents and detection systems for email security at Abnormal AI. Its platform operates at billion-message scale. I write about detection engineering, reliable agent execution and the systems behind them.
Technical notes, longer guides and occasional essays. Follow via RSS or Substack.
You Cannot Grade an Agent You Only Read
I wanted to check whether a skill actually did its job. The skill ran a goal prompt through OpenCode, called a handful of tools, and left a session behind. Then I read the final message, and the final message told me exactly what I wanted to hear.
That is the problem with grading an agent from its output alone. The reply is the last thing that happened, not the thing you were measuring.
...
The Model Is Not the Agent — Inside DeepSeek Harness
Also available on Archit’s Newsletter on Substack.
You ask a coding agent to fix a failing test. Somewhere, a model generates tokens. But tokens do not open files, decide which shell command is permitted, preserve a session after a crash, or establish that the test now passes. The execution system has to make those things happen.
That system is the harness. Its decisions determine how reasoning becomes action, what the model sees next, and which failures remain recoverable. To understand an agent’s reliability, we need to follow those boundaries in code.
...
An engineering-first approach to technical thought leadership
I want my public writing to make it easier for people to understand the engineering work I care about: AI agents, security, and reliable systems. That means explaining decisions, showing what broke, and leaving enough evidence for someone else to check the result.
The difficult part is producing something worth explaining. A publishing system should make room for that work.
This is the approach I want to build around my website, GitHub, LinkedIn, and Substack. It starts with a technical question and ends with something another engineer can use. Automation helps with the work between those points. Publication remains my decision.
...
As of October 18, 2026, the core idea has been built by multiple research groups, including Microsoft, Google and independent open-source developers.
These systems implement a recurring experiment loop: take a Kaggle-style ML problem, generate modeling approaches, train models, evaluate performance, improve their code through repeated experiments and produce solutions.
The opportunity isn’t inventing this category. It’s finding where the existing systems remain inefficient, unreliable, expensive or difficult to operate.
...
Your Personal AI Operating System
An architecture proposal for household coordination, October 2026. This describes a design, not a verified deployment.
The goal is to automate the repetitive coordination in your life with a small, durable layer of infrastructure — without turning personal productivity into another engineering project.
You don’t need 30 agents, 30 MCP servers or a custom application for every problem. You need one command interface, a few reliable integrations, a memory system, recurring workflows and strict security boundaries.
...
The Browser Is the New Operating System
The browser looks like the safest place on a computer because it looks like a window. A tab is a page. A page is an app. The operating system is somewhere underneath, doing serious things with files and processes while the browser shows us email, a spreadsheet, and a shopping cart.
That picture is old enough to be dangerous.
I do not mean that a website has become macOS or Linux. A site cannot schedule arbitrary processes, read your disk, or open a socket whenever it wants. The web has spent decades putting useful friction between a page and the machine. The point is narrower, and worse: the browser has become the layer through which we hand out much of the authority that used to sit clearly in the operating system.
...
Self-Improving AI Agents: A Recursive Taxonomy
Self-Improving AI Agents: A Recursive Taxonomy An agent that gets better on its own isn’t one idea. It’s at least six, and they differ by how much of the agent is allowed to change. This post sorts the 2023 to 2026 work into six families, names 109 methods across them, and ranks them all. It’s the map.
Two questions separate every method here.
What does the agent change about itself? Its prompt, its stored experience, its tools, its own design, its source code, or the world it trains in.
...
The Staff+ Operating Model: a practical field guide to technical leadership
Moving from Senior Engineer toward Staff or Principal changes the scope of the job. Technical decisions increasingly depend on coordinating teams, resolving disagreements and choosing which problems deserve attention.
This guide brings together practitioner frameworks for that transition. It asks what changes in the work and which practices you can try on your next project. The advice needs to be adapted to your organization; titles alone say little about the responsibilities involved.
...
Building Luffy: a PR review agent you can audit
I wanted a PR reviewer whose findings I could investigate after the run. A review comment alone left questions unanswered: which files had the agent inspected, which commands had it run, and what context would survive for the next review?
I built Luffy to make that process inspectable. You type @luffy review this pr. GitHub Actions runs Hermes Agent through OpenRouter. The agent can shell into the workspace, repro failures, and post a structured Markdown review. Then it stores a redacted trace and grows hub memory so the next run on that repo is not starting from zero.
...
Memori: The Recursive Design of Agent Memory
Update, 12 November 2026: Memori is now Lorevell. The current version uses Markdown notes as its source of truth and a rebuildable SQLite index. This article describes an earlier version; use the current setup and rename guide for installation and migration.
Memori: The Recursive Design of Agent Memory Memori is not primarily a database for notes. It is an attempt to turn agent memory into an engineered retrieval system.
The thesis is simple. An agent fails across sessions because state is lost. Lost state only matters if previously learned information cannot be recovered when needed. So “memory” is really three problems:
...