Eidos (eidos-ai)

Eidos is an open-source, Git-native, agent-agnostic framework that keeps product definition, architecture and test-bound invariants in versioned “living specifications” that AI coding agents read. The repository description: “Bridging architectural intent and autonomous coding agents through living specifications, SpecDeltas, and invariant-test traceability.” Checked 2026-10-31 against the GitHub repository, its README and the PyPI entry.

Installuv tool install eidos-ai (or pipx install eidos-ai, or uvx --from eidos-ai eidos); optional [semantic] extra; a Dev Container Feature (ghcr.io/mchawa/eidos/eidos:1)
RuntimePython 3.11 or newer; the semantic extra needs 3.11 to 3.14 because onnxruntime has no 3.15 wheels, and falls back to keyword search on 3.15
LicenseMIT
MaintenanceVery young and fast-moving: repo created 2026-10-11, pushed 2026-10-30; v0.20.1 released 2026-10-30, three releases that day; not archived. 3 GitHub stars (API, 2026-10-31), so nearly no outside use yet
Authormchawa (GitHub); no company or further background found

What it gives you

  • Living specifications in Git. Bounded domains (DOM-*), capabilities (CAP-*), C4 architecture (containers CNT-*, components CMP-*, contracts CTR-*) and design decisions (DEC-*) are written as AsciiDoc files with YAML frontmatter, validated against 16 bundled schemas (eidos validate). The README says it builds on spec-driven development, domain-driven design, Arc42/C4, TDD and a Kanban lifecycle.
  • SpecDeltas. Architectural changes are recorded as DLT-* mutations that move through a Kanban lifecycle and are applied on merge, instead of narrative RFC documents.
  • Local knowledge graph. eidos index sync builds a local SQLite index (symbols, spec hierarchy, x-eidos-ref links) with FTS5 keyword search. An optional local ONNX embedding model (Harrier, downloaded on request) adds hybrid search. eidos context -t "<task>" returns a token-budgeted slice for an agent; eidos index repo-map and blast-radius give structure and impact queries. The README states all of this runs offline with no API keys or LLM calls (its policy POL-004).
  • Drift checks. Capability and policy invariants (INV-*) are bound to automated tests (file::func) across Python, TypeScript/JS, Go, Rust, Java and Kotlin. eidos drift checks that code, tests and specs still agree, in CI or from an agent Stop hook.
  • Portal. eidos portal serve generates a self-contained viewer for the C4 model, blast radius and the SpecDelta board; the project hosts its own at mchawa.github.io/eidos/portal.
  • Agent plugin. eidos plugin install all installs four workflow skills for agents including Claude, Cursor, Copilot, Aider, Cline, OpenCode, Codex and Antigravity (README).

Key differentiator

Per the README, most tools stop at the coding loop or at ticket-style specs; Eidos spans the whole change flow (exploration, product baseline, SpecDelta, code, CI) and enforces it by binding architectural invariants to tests that fail on drift, while staying local and agent-agnostic. These are the author’s claims in a self-comparison table, not independent findings. The project specifies itself with its own format.

Pick something else when

  • You want a mainstream spec-driven tool with a team behind it and an IDE: Kiro, which turns prompts into requirements, design and tasks before code.
  • You only need the instruction file for an agent: a plain CLAUDE.md-style file is far lighter than adopting a specification standard.
  • You need stability: version 0.x, a young schema and releases several times a day mean formats may change.
  • Your language is outside the invariant-test list (Python, TypeScript/JS, Go, Rust, Java, Kotlin).

Limits to know

  • No independent review or benchmark exists yet. The claims about token-budgeted context, speed (the README quotes a graph query under 4 ms) and drift detection are the author’s own.
  • Only Kiro is compared here; SpecVia and SpecStory differ in scope.
  • How much overhead the spec catalogue adds to a project of a given size is not measured.
  • The documentation site beyond the README was not read.

Sources