Free for open source projects and schools. AI Council costs nothing for OSS maintainers and educational institutions. Apply →

Home / Compare / CodeGraph

AI Council and CodeGraph: what each one does

A feature-by-feature comparison based on the code and documentation of both projects.

In short

AI Council is a platform for development teams, cloud or self-hosted. It parses your repositories into a code graph on its own: stack, structure, dependencies and cycles, calls, data layer, architecture, DDD, patterns, style, code smells and ISO 25010 quality. On top of the graph sits the project knowledge base: decisions, notes, diagrams and changelogs. Each entry is anchored to a place in the code and to a branch, and reaches the agent when it touches that file. Conventions live separately: rules at three scopes (code entities, paths, the whole project) with MUST/SHOULD levels, states, and checks before an edit and against the diff. Around this sit review with publishing to the MR, tickets, tasks, and companies with roles and licensing. Static analysis does not use a model, but without a model that is all you get: review, knowledge review, AI chat and workspaces run through a host worker, a bridge and the vendor's CLI/OAuth. The model lives on the host, not inside the Council stack.

There are two ways to work with Council. On a developer's machine, Claude Code or Codex connects to it via MCP and hooks: project rules arrive with every message, file context on Read/Edit/Bash, and a checklist at the end of the turn. In a workspace, the task runs on a VM in an isolated sysbox container, can live for days, and a person drives it from the web UI: from analysis and diff to commit, push and MR.

CodeGraph is a local-first code understanding layer for AI agents. It parses the repository with tree-sitter (wasm or a native Rust kernel), stores symbols and relationships in a per-project SQLite database with FTS5, resolves references with a heuristic resolver, and exposes the graph to the agent through a single MCP tool, codegraph_explore. It has a CLI, a Claude Code prompt hook, an installer for 11 agent hosts, a file watcher, git hooks and an unreleased browser viewer. Extraction and resolution are deterministic, no LLM is used anywhere, and no provider keys are needed. MIT.

Among local tools, it is the closest to Council's code understanding layer, and it also shows a different delivery philosophy: instead of about 60 MCP tools and hooks with a gate, one tool that aims to be complete enough that the agent stops reading files. But CodeGraph doesn't keep knowledge, conventions, review or tasks. It is a graph of symbols and flows, not a team platform.

1. Understanding the code

AI Council CodeGraph
Who reads the code Council itself: it parses the repositories and builds the graph. No model is called during analysis CodeGraph itself: tree-sitter (wasm) or the native Rust kernel extracts symbols, then a heuristic resolver turns references into edges. No model is called at any step
When On project creation, on push to main (polling), on demand, and nightly; after the agent edits a file, the file and its dependents are recomputed On codegraph init/index, then incremental sync; the watcher picks up edits in about a second, and post-commit/post-merge/post-checkout git hooks run sync in the background. No server-side schedule or nightly analysis
What it extracts Layers L0–L10: stack, structure, dependencies and cycles, metrics and calls, data (ORM, DDL), architecture and forbidden dependencies, patterns, style, DDD, files that change together, code smells, ISO 25010 quality, diagrams A typed graph: 23 node kinds (file, class, function, method, route, component, …) and 13 edge kinds (contains, calls, imports, extends, implements, navigates, …). Plus derived data: flow across named symbols, dead code, type hierarchy, call guard conditions, 36 framework resolvers and 43 synthesis passes. No architecture, DDD, patterns, style, code smells, ISO 25010 or architecture diagrams
Languages Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++, with full layer analysis 42 languages in LANGUAGES; 20 are routed to the native kernel (TS/TSX/JS/JSX, Java, Python, Go, C, C++, Rust, C#, Ruby, PHP, Swift, Kotlin, R, Lua, Luau, Scala, Dart), the rest go through 29 wasm grammars with per-file fallback. Depth: symbols and relationships, without layers or metrics
Multiple repositories A project made of several repositories with a shared graph One project root and one SQLite database in .codegraph/; monorepos via subprojects and projectPath, but no shared graph across repositories
History Edges are versioned after every run; architecture_as_of shows the architecture as of a date No history: the index reflects the current working tree. sync compares the file system with the index, not git history; past edges are not kept
Search Semantic and regex search, find_usages, find_path, dependency graph, similar implementations; ask_question returns excerpts from the knowledge base without a model's paraphrase Lexical search: FTS5 with BM25 weights, then LIKE, fuzzy Levenshtein and exact name. Plus path pins and name_segment_vocab for camelCase. No semantic or vector search; codegraph_explore is one query that gathers source, flow and blast radius within about 24K characters

2. Knowledge and rules

AI Council CodeGraph
Knowledge base Decisions, notes, Mermaid diagrams, changelogs. Each entry is anchored to code and reaches the agent when it touches that file No knowledge base. The graph is a derived structure of the code, not knowledge about decisions, rationale or agreements. docs/ and the docs site are project documentation, not a queryable knowledge base
Freshness An entry holds its place in the code on its branch and goes back for re-checking when the code under it changes, the entry itself changes, a similar entry appears, or the branch is merged. The reviewer must provide a quote; the outcome is a label Freshness of the index, not of knowledge: the watcher, pending-file banners, a content-hash check on responses (a file that changed on disk isn't sliced by old line numbers), IndexHealth. There are no entries to check against the code
Branches Knowledge and the graph are stored per branch; the agent sees its own branch, the parent and whatever was merged; on merge, entries move with the code The working tree is indexed; a worktree created inside the main checkout is detected so it doesn't answer from another index. No per-branch knowledge or graph versions
Rules Conventions at three scopes: code entities, paths (they apply even to a file that doesn't exist yet), the whole project. MUST/SHOULD, draft, retired and deleted states. Checked before an edit and against the diff No conventions engine. codegraph.json (extensions, include/exclude/ignore, deprioritize) defines the indexing scope, not code rules. The installer writes an instruction block for the agent into CLAUDE.md/AGENTS.md/GEMINI.md, but it isn't checked against the diff
How it reaches the agent Claude Code hooks: project rules with every message, a wide channel before an action, file context on Read/Edit/Bash, a checklist at the end; the KB gate The codegraph_explore MCP tool and a Claude Code UserPromptSubmit prompt hook. HIGH: a structural key or code token confirmed by the index triggers a full explore. MEDIUM: prompt words match name segments, giving a short list of symbols. Otherwise a silent no-op. The hook fails open and never breaks the prompt. No KB gate
MCP Server: about 60 tools, profiles, modes, XML with a size budget Server: one tool by default, codegraph_explore. The others (node, search, callers, callees, impact, files, status) are defined and work, but aren't listed to the agent unless enabled via CODEGRAPH_MCP_TOOLS. The CLI returns the same answers for people and non-MCP hosts
Moving knowledge Bulk export and import of knowledge, copying between projects The index lives in the project's .codegraph/; no knowledge export as a bundle. The installer only carries over MCP server config and a short instruction block

3. Requirements and tasks

AI Council CodeGraph
Requirements Traces tests to requirements by tags: coverage and gaps; "no test" is a tri-state, not requirements management —
Tickets Jira, GitHub Issues, Redmine: reading, parsing into knowledge, graph-based advice per ticket —
Working on your own machine The agent is the developer's Claude Code or Codex; Council supplies context and rules via MCP and hooks; local diff review, diff walkthrough, diff check against rules This is its only mode: CLI, MCP server, prompt hook, watcher, git hooks, an installer for 11 hosts (Claude Code, Cursor, Codex, opencode, Hermes, Gemini, Antigravity, Kiro, Copilot VS Code/CLI/JetBrains)
Workspace Tasks on a VM in a sysbox container, living for days; a person drives them from chat; a mentor agent; diff, commit, push, MR No tasks or workspace: just the project index and answers to queries
PR Review with publishing to the MR (GitHub, GitLab, Bitbucket) —
Process A task state machine: created, analysis, in progress, MR, closed; a person defines what happens at each step No task process. There is an index lifecycle: init, index, sync, watcher/git hook. The pending/failed states on unresolved references are memory for the incremental pipeline, not a task

4. Verification and models

AI Council CodeGraph
Code review A separate service: looks at what changed, a verdict for every file, a second pass, publishing to the MR without duplicates; knowledge review is separate No AI review. The graph provides inputs for review (flow, blast radius, dead code, guard conditions), but there is no verdict, second pass or publishing to the PR
Models A model is required: on the host, two processes use the vendor's OAuth: AI chat and six background jobs (review, knowledge review, ticket parsing and others). Without a model, only static code analysis remains No LLM at all: extraction, resolution and search never call a model; no provider keys and no embeddings. Analysis is fully local and deterministic
Agents Claude Code and Codex (hooks, MCP); MCP is open to any client MCP clients and 11 agent hosts via the installer; a Claude Code prompt hook; CLI. No agent runtime of its own
Measurement Telemetry for every MCP call and hook; an agent repeating a search signals a poor first answer 765 test files, about 208k lines; real SQLite and files, no DB mocks; parity tests of the Rust kernel against wasm; an agent-eval A/B on 7 repositories: −35% cost, −57% tokens, −46% time, −71% tool calls (median of 4 runs). The target is 1 explore call on a small repository and 3–5 on a large one, with Read/Grep = 0. Council's analysis of the CodeGraph codebase: maintainability 0.82; 4 of 7 fitness functions pass (no cycles, no layer violations, type hints 0.97, naming 1.0); 17 god classes, 985 long methods, 641 complexity violations, 1,138 code smells
Guarantees Test gates, review, conventions Nine invariants (the order of NODE_KINDS/EDGE_KINDS is a wire contract; a node id contains the line; file-order commit; synthesized edges carry synthesizedBy/registeredAt; a single chokepoint for path reads; kernel/wasm parity), crash repair after an interrupted bulk load, a WAL valve, agent-eval with protection against CLI contamination

5. Platform

AI Council CodeGraph
Users Companies, members, roles (can be scoped to a project), permissions. Company API keys. Data is separated: a request without a company is rejected. License and seat limits One user, local. No companies, roles, license or multi-user model; the 11 agent hosts are integrations, not users
Interface About 50 pages: code, graph, branches, quality, rules, review, knowledge, tickets, tasks, MCP Live, administration, System Health MCP (1 tool by default), CLI (init, index, sync, status, explore, node, callers, callees, impact, affected, install, upgrade, uninstall and more), prompt hook, installer, docs site, a private telemetry dashboard; the browser viewer is not released (behind the CODEGRAPH_UI=1 flag)
Monitoring Telemetry for every MCP call and hook without PII; about 22 Prometheus rules with tests; System Health, tracing Anonymous telemetry is on by default and can be turned off; only completed UTC days, nothing on stdout, "off means off"; update checks. No Prometheus or System Health
Self-healing Reconciles Temporal with the database, cleans up orphaned data, deletes projects in batches, nightly backup with restore check, telemetry retention A fail-closed WAL valve, restoring indexes and FTS triggers after a crash during a bulk window, IndexHealth, an out-of-process liveness watchdog, a daemon/proxy that reconnects, worktree substitution detection, planned uninstall. No nightly backup or restore check
Storage Neo4j, Qdrant, PostgreSQL per service, Temporal, NATS, Redis One SQLite database in .codegraph/ per project: WAL, FTS5, 5 main tables plus service tables; no graph or vector database
Isolation A sysbox container per task, one-time credentials for push, read-only knowledge reviewer, permission checks in a single gateway, SSRF protection A local process; validatePathWithinRoot is the single chokepoint for reading source; the viewer listens on loopback and is protected against DNS rebinding. No sandbox, task isolation or multi-user isolation
Delivery A distribution for self-hosted installation, or SaaS; on the developer's machine, MCP and hooks npm @colbymchenry/codegraph, a self-contained bundle with Node 24, install.sh/install.ps1, npx, source; a Rust kernel with per-file fallback to wasm; MIT
License Proprietary MIT

Bottom line

Among local tools, CodeGraph is the closest to Council's code understanding layer, but it solves a different problem. It builds a precise symbol graph and the flow across it; Council builds a graph plus knowledge, conventions, review and tasks. CodeGraph is stronger in the depth of reference resolution and in the discipline of a single tool; Council covers more layers, knowledge, rules and platform features.

Where CodeGraph is stronger:

  • deterministic extraction and resolution with no LLM and no keys;
  • resolution depth: 36 framework resolvers, 43 synthesis passes, 20 languages in the native kernel with fallback to wasm;
  • one MCP tool designed to be sufficient: a call budget, an output budget of about 24K, cliff/spine/whole-file allocation, isError only for real failures;
  • honesty about limits: dynamic-boundary-report, LOW_CONFIDENCE_MARKER, coverage and freshness banners, content-hash checks on responses;
  • dead code as a report with 16 exclusions and an explanation of why each line was excluded;
  • synthesized edges with provenance and registeredAt;
  • branch guards and flow across named symbols;
  • local-first SQLite, watcher, git hooks, an installer for 11 agents, MIT;
  • a measured agent-eval: −35% cost, −57% tokens, −46% time, −71% tool calls.

Where Council is stronger:

  • More layers, not just symbols. CodeGraph goes deeper in resolving symbols and flows; Council adds architecture and forbidden dependencies, DDD, patterns, style, code smells, ISO 25010, diagrams and architecture history (architecture_as_of). These are different axes: precision on one symbol versus understanding the whole project.
  • Knowledge anchored to code and branches. An entry lives on a branch, reaches the agent when it touches the file, and goes back for re-checking when the code under it changes; the reviewer must provide a quote. CodeGraph has a graph and a dead code report, but no knowledge base of decisions and rationale.
  • Conventions are authoritative, checked rules. Three scopes (entities, paths, project), MUST/SHOULD, states, checks before an edit and against the diff. Hooks deliver rules with every message and file context on Read/Edit/Bash; the KB gate blocks reading code until the agent has queried the knowledge base. CodeGraph provides a graph and hints, not team rules.
  • Code and knowledge review as a service. A verdict for every file, a second pass, publishing to the MR without duplicates; a separate knowledge review with quotes and calibration. CodeGraph doesn't review changes or publish findings.
  • Tasks on a VM, tickets, MRs, team. A task in a sysbox container lives for days and a person drives it from the UI: analysis, diff, commit, push, MR. Tickets, requirements tracing, companies, roles and licensing. A local graph doesn't have this.
  • Shared graph across repositories and semantic search. One project can include several repositories with a shared graph; ask_question returns excerpts with FQNs, not a model's paraphrase. CodeGraph keeps one root and one SQLite database, with no shared graph across repositories.
  • Observability and self-healing. Telemetry for every MCP call and hook without PII, about 22 Prometheus rules, System Health, tracing; Temporal reconciliation, orphaned data cleanup, backups with restore checks. A local tool doesn't need this; a server platform does.

Can they work together? Yes, they are different layers. CodeGraph is a precise local graph of symbols and flows; Council is a server for knowledge, rules, review and tasks. Both are MCP servers, so one agent can connect to both. They overlap on search and the graph: CodeGraph goes deeper in resolving symbols and flows, Council covers more of the architecture, knowledge and branches. There is no built-in integration. A practical setup: CodeGraph for "where is this and how does it work" on the developer's machine, Council for "what do we know about it, which rules apply, and what does review say".

Compare on your own project

Connect AI Council to one of your repositories and see the project graph, rules and review on your real code.

Made on
Tilda