EKOSdocs
Docs / Guides Build

Indexing .NET Applications

Recover structure — and, in the extension build, behaviour — from compiled .NET assemblies whose source may be lost.

A .NET binary is analysed into structure and statement-level logic, becomes EKOS knowledge, and is used by an AI agent
A .NET binary is analysed into structure and statement-level logic, becomes EKOS knowledge, and is used by an AI agent

Compiled-binary recovery is an extension, not part of the open-source ekos binary. It ships as a separately licensed build (RFC 0148, RFC 0150) that plugs into the public extension seam (Plugin Architecture). The public build still reads, queries and serves a ledger that such a build wrote, and documents the configuration schema.

What the extension recovers

Level What Notes
Structure types, methods, signatures, fields, the call graph, branch structure, string/numeric constants, external I/O boundaries read in-process from CLI metadata; no .NET SDK needed
Statements (RFC 0150) per-method if / loop / switch / try structure, each line carrying its IL offset labelled with the fidelity actually reached: structural, control_flow or statements
Migration aids a per-method specification, a Python-rewrite parity check, sandboxed characterization tests that run the original and compare the rewrite

Recovery is honest about gaps: obfuscated or packed binaries are detected and flagged, and unresolved regions are reported as such rather than filled by guessing.

Using it

Structural recovery is deterministic and needs no LLM. The optional [binary-reconstruction] table controls a separate, opt-in LLM stage that drafts business-rule descriptions from recovered slices — one slice is one type and one LLM call, so max-slices is a declared cost ceiling:

[binary-reconstruction]
enabled = false           # default: no LLM is ever contacted about a binary
max-slices = 50
min-confidence = 0.5
include-compiler-generated = false

Run the extension's own ekos build through the normal pipeline (build → recover → … → commit). Then, from any MCP client on the resulting ledger:

  • ekos_binary_explain — what a type or method does, with IL offsets;
  • ekos_binary_migration_check — compare a Python rewrite against the original.

For the concept and the honest scope, read RFC 0148 and RFC 0150.