Concept guide

AI coding agents, and the context problem that decides whether they scale

An AI coding agent is not just line completion — it generates, edits, and extends an entire application in a loop. The central question in choosing an agent is not which model runs underneath, but how it manages the project's context over time. The context problem is what decides whether an agent reaches a working v10 or breaks on the way — and it is at the core of how Vibe Coder is built.

What an AI coding agent is

An AI coding agent is a tool that doesn't just suggest code but generates, edits, and extends an entire application in a loop. It's important to distinguish it from an AI code completer: a completer suggests the next line or the next function, and the developer decides whether to accept. An agent, by contrast, does the work: it reads the project, plans, writes files, runs and tests, and iterates and fixes until the result works. The developer moves from writing lines to steering and reviewing an agent that executes.

How an AI coding agent builds applications

Conceptually, the process is simple: the agent reads the project structure and current context, plans the required steps (creating files, editing existing ones, adding dependencies), generates the code, runs it, and then reads the results — compilation errors, test failures, unexpected behavior — and iterates and fixes. It's a generate-run-fix loop. In practice, the difficulty is not the loop itself but the context: as the project grows, the agent needs to hold more information to perform that loop correctly. And that's exactly where most agents fall.

The difference between a code completer and an agent is also visible in how the developer works. With a code completer, the developer writes, and the tool fills in the next line — the focus stays on writing. With an agent, the developer describes a requirement, and the agent executes: it can create a new file, edit several existing files, add a dependency, run tests, and report back. The focus moves from writing to reviewing: was the plan the agent proposed correct? Is the generated code sound? Does it connect properly to the rest of the system? The ability to review like that relies on the assumption that the agent actually understands the system — and that's exactly the assumption that breaks down when context erodes.

The context problem

Most coding agents re-scan the project at each session. This works fine at v1: the project is small, the context fits easily, and the agent understands what it built. But as the project grows — more files, more entities, a more complex API contract — the context starts hitting the model's limits. At some point the agent can no longer hold the entire project in context, and begins to forget or rewrite parts that already worked. This is the breaking point we call the v10 cliff: every fix introduces a regression, and instead of advancing, the app goes backward. A developer working with such an agent finds themselves re-explaining the same things every session, and wasting precious time.

A detailed explanation of the context-loss problem is in our post on context loss.

Why persistent context matters

When context is persistent, the agent keeps the project's structure, entities, and API contract across sessions. The agent's understanding of the application doesn't erode each time a new session opens, and it doesn't have to rebuild it from a file scan. This means each session continues from where the last one stopped, instead of starting from zero. In practice, this is the difference between an agent that feels like a team member who knows the codebase and an agent you have to explain everything to anew each meeting. And when understanding is preserved, the pace of progress is preserved too: the small fixes that worked at v1 still work at v10, because the agent remembers why they're there and how they connect to the rest of the system.

It's important to distinguish persistent context from simple conversation memory. Keeping chat history is not persistent context — it's only a list of previous messages, which also runs into the same length limits. True persistent context is a structured model of the project — the entity structure, the API contract, the architectural decisions — that is kept separately from the conversation history and fed to the agent at every session. That's what allows the agent to keep understanding the project even when the chat history is already too long, or when starting a completely new session.

How Vibe Coder does it

Vibe Coder keeps persistent project context: the project's structure, entities, and API contract are preserved across sessions, so the next v10 is built on v1's understanding, and doesn't start from zero. Alongside this, every project includes a real backend and its own database — not an SDK and not an external service. There are two isolated environments, staging and production, that allow building and testing separately from the live environment. And every operation shows its token cost in real time — no surprises on the bill.

Our approach is described in detail on the product page, and it's part of our broader understanding of vibe coding. It's also worth seeing how we differ from Lovable, Bolt.new, and Cursor.