KognitaKognita.

Blog

Context+ Gives You Context on the Repo You Checked Out. Not Your Other Twelve.

10 min read

"My codebase MCP is great when I'm working in the billing service. The moment I need to understand how billing talks to notifications, I'm on my own." This is not a fringe complaint — it is the experience of most developers working in microservices environments who have tried single-repo context tools. The tool works well for the repo it indexed. Everything outside that boundary is invisible.

Context+ indexes the repository on your machine. That is the repository you have checked out, in the directory you pointed it at. In a microservices environment — where a single business behavior like "send a payment confirmation email" may span four separate repositories, two shared libraries, and an event bus configuration — the tool's scope is a small fraction of the system being reasoned about.

Why microservices break single-repo context tools

Microservices were designed to decouple services from each other. Each service has its own codebase, its own deployment pipeline, and its own team of owners. The system's behavior emerges from how those services interact, not from any single service alone. This is architecturally beneficial for scaling and team autonomy. It is architecturally problematic for single-repo context tools, because the behavior worth understanding almost always crosses service boundaries.

What tracing a real behavior looks like across microservices
Tracing a bug in a microservices environment:
  "Why is the payment confirmation email sometimes not sent?"

  What you need to trace:
  -> payment-service: fires a "payment.confirmed" event to the event bus
  -> event-bus: routes "payment.confirmed" to the notification-service queue
  -> notification-service: reads from the queue, calls the email-provider client
  -> email-provider: external API, has its own retry behavior
  -> shared-config: controls which events trigger emails in which environments

  These are 4 separate repositories + 1 external service.
  Context+ indexes whichever one you have checked out locally.

That trace is realistic. Four services, a shared configuration repository, and an external dependency. A developer working in the payment service, asking their AI coding assistant about email notification behavior, will receive context about whatever the payment service knows about notifications — which is typically just the event it fires. Whether that event reliably reaches a notification consumer, how the notification service handles it, and what the email provider's retry behavior looks like are all invisible from the payment service's perspective alone.

The hard questions are always cross-service

The questions that AI coding tools struggle with most in microservices environments are precisely the cross-service ones. "Will this change break anything?" requires knowing what depends on the code being changed. "Why is this behavior inconsistent?" often requires tracing execution across service boundaries to find where the inconsistency originates. "Which teams need to be involved in this change?" requires knowing which services are downstream consumers.

What a single-repo context tool cannot see
What a single-repo context tool cannot see:
  -> A payment-service developer asking about notification behavior — different repo
  -> Shared library changes that break callers in other services — not indexed locally
  -> Which teams own downstream consumers of an API you're about to change
  -> Whether a bug lives in your service or in something your service calls
  -> Data flow that enters your service from a queue, not a direct call
  -> Infrastructure configs (Kubernetes, Terraform) in a separate ops repo

Each blind spot in that list corresponds to a class of error that manifests in production. API contract changes that break downstream consumers without the change author knowing there were downstream consumers. Shared library updates that cause cascading failures across services that the library update author did not realize were dependent. Bug investigations that blame the local service when the root cause is in a service three hops away.

These are not hypothetical risks. They are among the most common failure modes in mature microservices environments. AI coding tools that lack cross-service visibility do not reduce the probability of these errors — they can increase it, by providing confident answers that omit the cross-service context that would have surfaced the risk.

Why local tools cannot solve this

The architecture of local context tools like Context+ makes cross-repo indexing impractical. To index multiple repositories, the tool would need to clone each one locally and maintain local checkouts of all connected services. For a company with thirty microservices, that means thirty local clones, thirty synchronization pipelines, and a local index that requires proportionally more disk space and compute to maintain. Most developer machines are not set up for that, and most developers do not maintain local checkouts of repositories outside their current work scope.

There is also a coordination problem. To maintain accurate call graphs across service boundaries, the tool needs to understand both sides of a cross-service call simultaneously — the caller and the callee. If the callee's repository is not locally indexed, the call graph terminates at the service boundary instead of continuing through it. The result is a graph that looks complete locally but is actually a fragment of the full system graph.

What cross-repo indexing actually enables

What cross-repo semantic indexing makes possible that single-repo cannot
What cross-repo semantic indexing makes possible:
  -> One query surfaces the full event chain across all 4 services
  -> "Which services consume the payment.confirmed event?" — answered from all repos
  -> Schema changes in shared-config surface in every service that uses it
  -> API contract changes in payment-service show all downstream consumers
  -> "Is there anything in notification-service that depends on payment-service?" — yes/no with evidence
  -> Call graph spans repository boundaries, not just file boundaries

The first item on that list — surfacing the full event chain across services from a single query — is the most impactful for developer productivity in debugging scenarios. When a developer asks "why does the payment confirmation email sometimes not send," a cross-repo semantic index can trace the path from the event emission in payment-service through the queue routing in the event bus to the consumer in notification-service, and report on each step's reliability characteristics. That trace takes a senior engineer with deep system knowledge hours to perform manually. With cross-repo context, it takes seconds.

Kognita connects to all repositories in an organization via GitHub, GitLab, or Bitbucket and indexes them in a unified pipeline. The resulting semantic graph understands cross-service relationships: which services publish events that other services consume, which services share library dependencies, which API clients in one service correspond to handlers in another. When a developer's AI coding tool queries through Kognita's MCP endpoint, it can retrieve context that spans the full system rather than stopping at the edge of the locally checked-out repository.

The architecture problem, not the tool problem

It is worth being precise about where this limitation lives. Context+ is not deficient for failing to index repositories that are not on the developer's machine — that is an architectural consequence of the local-first model, not a feature gap. The tool does what it is designed to do. The limitation is in the design, and it is a design constraint that cannot be engineered around without changing the fundamental architecture from local to managed.

For developers working in a monorepo — a single repository containing all the organization's code — local context tools like Context+ work much better. A monorepo can be fully checked out locally, and a single-repo context tool will index the full codebase. The cross-service visibility limitation is specific to microservices environments where the code is distributed across many repositories, which is a common architecture in teams of a certain scale.

Final take

Context+ provides meaningful semantic enrichment for the repository it is pointed at. For teams working primarily in a single service or a monorepo, it delivers its value proposition clearly. For teams working in a microservices environment with ten, twenty, or thirty separate repositories, the context it provides is a fragment of what is needed to reason accurately about system behavior.

The questions that matter most in microservices — "will this break anything," "what does this depend on," "where does this behavior come from" — require cross-repository visibility that a local index cannot provide. Answering those questions requires infrastructure that has access to all the repositories simultaneously and can build a unified semantic graph across them.

Local codebase context tools index what is on your laptop. In a microservices environment, what is on your laptop is one service out of many. The hard questions — the ones AI coding tools most need to answer correctly — are the ones that require knowing all of them at once.