# /dev/michael > Personal blog by Michael Livshits, software engineer specializing in LLMs and AI systems. Previously Staff Engineer in ML/AI at Intuit. Writes about building AI agents, infrastructure patterns, and open source tools. ## Agent Design - [Anatomy of agentic systems](https://michaellivs.com/blog/anatomy-of-agentic-systems): The basic ingredients - loops, tools, memory, and the levers for controlling behavior without breaking autonomy. - [Tool Design is All About the Flow](https://michaellivs.com/blog/tool-design-is-all-about-the-flow): Tools aren't utilities, they're waypoints. The Search → View → Use pattern for progressive disclosure. - [The Agent Harness](https://michaellivs.com/blog/agent-harness): A specification for what LLM frameworks leave undefined - error handling, context management, tool execution, state transitions. - [Context Engineering Has No Engine](https://michaellivs.com/blog/context-engineering-open-call): What context engineering actually means - injection points, queryable conversations, reactive rules. - [Skills aren't the innovation](https://michaellivs.com/blog/skills-arent-the-innovation): Progressive disclosure is the real idea behind Anthropic's skills, not the file format. ## Infrastructure - [Why Anthropic and Vercel chose different sandboxes](https://michaellivs.com/blog/sandboxing-ai-agents-2026): gVisor vs Firecracker vs bubblewrap vs just-bash. How to pick based on constraints. - [Why I Chose FTS Over Vector Search for Claude Code Memory](https://michaellivs.com/blog/fts-over-vectors-claude-code-memory): BM25 beats embeddings when there's already an LLM interpreting queries. - [Open Responses Solves the Wrong Problem](https://michaellivs.com/blog/open-responses-missing-spec): The LLM interoperability spec tackles response normalization. The real pain is stream error handling. - [llms.txt Doesn't Do What You Think](https://michaellivs.com/blog/llms-txt-doesnt-work): Research on llms.txt adoption - no major AI platform has confirmed they use it. ## Open Source Tools - [psst](https://michaellivs.com/blog/psst-secrets-for-agents): Secrets manager where AI agents use secrets without seeing them. The secret never touches the context. - [deja / ran](https://michaellivs.com/blog/claude-forgot-ran-didnt): Search bash commands from previous Claude Code sessions. Memory that grows from real work. - [mental](https://michaellivs.com/blog/understanding-code-you-didnt-write): Externalize the mental model of your codebase. Domains, capabilities, aspects, decisions. - [Claude Quest](https://michaellivs.com/blog/claude-quest): RPG-style visualization for Claude Code sessions. File reads cast spells, bash commands swing swords. ## API - [/grep](https://michaellivs.com/grep?q=): Search all blog posts. Returns plain text with line numbers. Supports regex. Try `curl "https://michaellivs.com/grep?q=agent"`. ## Optional - [About](https://michaellivs.com/about): Background and links. - [hi chat, dev here](https://michaellivs.com/blog/hi-chat-dev-here): First post - what this blog is and why it exists. - [I Understand My Code. I Just Don't Know It.](https://michaellivs.com/blog/understanding-code-you-didnt-write): When agents write your code, production is easy. Understanding becomes the bottleneck.