The Harness Is the Agent

For two years we have talked about building agents as if an agent were a thing you construct. It isn’t. The harness — the loop, the tools, the context discipline — is the artifact you actually build, version, and debug. This post reframes the agent as emergent behavior, explains why agent frameworks now feel wrong-shaped in production, and offers a way to decide when to own the loop and when to rent it.

May 20, 2026 · 15 min · Girish Shekhar

Context Is the Real Engineering Problem

The coordination patterns are well understood. The protocol layer is converging. The unsolved problem is context: how do you decide what to pass between agents, when to summarize versus delegate in full, and how to do this without the routing decision itself becoming the expensive part. This post lands the thesis — and examines what happens when agents coordinate asynchronously across disconnected environments.

May 10, 2026 · 14 min · Girish Shekhar

Feedback Loops, Discovery, and Fault Tolerance

The synchronous coordination patterns tell you how to decompose work. This post covers what happens when that work goes wrong — or when agents don’t yet know who can help. Iterative refinement, progressive discovery, fallback, and speculative execution are the patterns that govern self-correction, capability negotiation, and graceful degradation in production agent systems.

May 3, 2026 · 11 min · Girish Shekhar

The Distributed Systems Playbook in a New Medium

Multi-agent systems are not a new class of engineering problem. They are distributed systems with a different payload. This post maps the synchronous coordination patterns emerging in agent ecosystems — delegation, handoff, scatter-gather, chaining — to the primitives distributed systems engineers have used for decades, and explains why the medium changes the failure modes in ways that matter.

April 26, 2026 · 16 min · Girish Shekhar

LLMs in Day-to-Day Engineering Work

After all the theory and architecture, this post looks at how experienced engineers actually use Large Language Models in their daily work — where they help, where they hurt, and how to integrate them without outsourcing thinking.

May 17, 2023 · 4 min · Girish Shekhar

The Skills Engineers Need to Level Up for LLM-Based Systems

Large Language Models don’t just introduce new tools — they demand new skills. This post explains what actually changes for engineers and technical leaders when LLMs become part of production systems, and where traditional instincts need to be updated.

May 3, 2023 · 5 min · Girish Shekhar

Retrieval-Augmented Generation (RAG): Grounding LLMs in Reality

Retrieval-Augmented Generation (RAG) is one of the most important architectural patterns to emerge alongside Large Language Models. This post explains why RAG exists, how it works, and what problems it actually solves — without turning it into a tooling tutorial.

April 19, 2023 · 4 min · Girish Shekhar

Why LLMs Fail in Surprising Ways (And Why That’s Expected)

Large Language Models often fail in ways that feel inconsistent or irrational. This post explains why those failures are not bugs, but natural consequences of probabilistic systems trained on language — and what that means for real product and system design.

April 5, 2023 · 5 min · Girish Shekhar

The LLM Landscape: Models, Capabilities, and Tradeoffs

Once you understand how LLMs work, the next real question is model choice. This post explains how to reason about LLM tradeoffs — capability, cost, controllability, and domain fit — without relying on benchmarks alone.

March 29, 2023 · 6 min · Girish Shekhar

How LLMs Work (Only What You Need to Know)

A deeper look at how Large Language Models actually work — focusing on tokens, transformers, and training stages — explained in a way that helps engineers, product managers, and technical leaders reason about behavior and tradeoffs.

March 22, 2023 · 6 min · Girish Shekhar