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.
TeaRAGs is a local "Codebase Intelligence" MCP server for AI agents. It indexes the repository on the user's machine and answers with a profile of the code across five layers rather than with "similar lines": what it does (semantic and hybrid search over AST chunks in Qdrant), how it connects (call and import graph in DuckDB), how it evolved (git trajectory: churn, bug-fix rate, ownership, age), whether it is laid out well (architecture detectors: stable dependencies, leaks through facades, silent coupling, shotgun surgery, main sequence) and how the project names things (a naming lexicon and verdicts on new names). It has review_changes, a five-section diff review, background auto-update, working-tree delta, and a Claude Code plugin with skills and rules. MIT license.
Of the projects we compared, it is the closest to Council in features: it also builds a graph, reads git history, judges architecture and reviews changes. But it is local and doesn't keep a knowledge base, conventions, a review service that publishes to MRs, tasks or a team model.
| AI Council | TeaRAGs | |
|---|---|---|
| What gets built | Council itself parses the repositories and builds the graph. No model is called during analysis | A local server: AST chunks plus embeddings in Qdrant, a call/import graph in DuckDB, git trajectory, architecture detectors, a lexicon. A model is used only for resolving leftover calls (Kev), and that is optional |
| 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 index_codebase; then incremental updates by Merkle/mtime, background auto-update (opt-in), and working-tree reads from the base index plus a delta |
| 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 | Five layers: semantic index, codegraph (calls, imports, hierarchy, PageRank, cycles, fan-in/out), git trajectory (churn, bug-fix, ownership, age), architecture (SDP, facade leaks, silent coupling, split/merge, shotgun surgery, main sequence, hub-like, layering, propagation cost, norms, restructure what-if), naming lexicon |
| What's missing | — | DDD bounded contexts, design patterns, code style, ISO 25010 and SonarQube; instead of code smells, it has architecture detectors and the lexicon |
| Languages | Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++, with full layer analysis | Ten verticals: TypeScript, JavaScript, Python, Ruby, Go, Java, Rust, Swift, Bash, Markdown; not all with full codegraph resolution |
| Multiple repositories | A project made of several repositories with a shared graph | A project registry (~/.tea-rags/registry.json), one collection per project; no shared graph across repositories |
| External analyzers | SonarQube: imports its findings; its own scanner (text-based languages, JVM, .NET, .NET Framework on Windows) | — |
| History | Edges are versioned after every run; architecture_as_of shows the architecture as of a date | Git trajectory (history windows, renames, blame, sessions, time anchor) and temporal co-change (bundles, bursts, significance, shotgun surgery). No architecture history by snapshot |
| 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 | Hybrid dense + BM25 search with RRF, a reranker with presets, SearchConfidence, vector/hybrid/scroll-rank/similar/symbol/outline strategies; graph tools get_callers, get_callees, find_cycles, trace_path |
| AI Council | TeaRAGs | |
|---|---|---|
| Knowledge base | Decisions, notes, Mermaid diagrams, changelogs. Each entry is anchored to code and reaches the agent when it touches that file | No separate knowledge base of decisions and rationale. It has derived knowledge: an architecture report, a naming lexicon, git trajectory, diff review. That is knowledge about the code, not about team agreements |
| 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 | Drift monitors compare the index, payload schema, environment, language and trajectory versions, and the stats contract; stale knowledge about the code is handled by rebuilding the index, not by checking entries |
| 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 | A project is tied to a path and a registry entry; the working tree is read on top of a base commit. No per-branch knowledge or knowledge merging |
| 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 | Rules are inferred from the code: the naming lexicon and role-pair norms (established dependency directions) produce CONFORMS / MISFIT / NEW_TERM / COLLISION verdicts. These are observed norms, not authoritative MUST/SHOULD, and you can't edit them as rules. Plus "how to use TeaRAGs" rules in the plugin |
| 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 | Four layers: prime at session start (index state, drift, thresholds), tool schemas, MCP resources with reference docs, and a search cascade in the plugin rules. All of it is about how to use TeaRAGs; there is no per-file knowledge and no KB gate |
| MCP | Server: 61 tools, profiles, modes, XML with a size budget | Server: 28 tools and 9 resources: search, indexing, codegraph, review_changes, collections/documents, project registry. Schemas are built from a live registry of presets and signals |
| Moving knowledge | Bulk export and import of knowledge, copying between projects | Project registry and indexes in Qdrant/DuckDB; no knowledge export as a bundle |
| AI Council | TeaRAGs | |
|---|---|---|
| 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 main mode: an MCP server for Claude Code and other agents; a Claude Code plugin with skills (explore, architecture-diagnostics, bug-hunt, mr-review, risk-assessment and more), commands and rules |
| 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: local analysis and review only |
| PR | Review with publishing to the MR (GitHub, GitLab, Bitbucket) | review_changes is a pre-commit gate inside the TeaRAGs repository itself; no publishing to MRs |
| Process | A task state machine: created, analysis, in progress, MR, closed; a person defines what happens at each step | No task process. There is a DDG pre-commit gate (introduced=0, partial=false) and plugin skills |
| AI Council | TeaRAGs | |
|---|---|---|
| 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 | review_changes: one call with five sections, naming, incompleteChange, cohesion, architecture, norms. Detectors judge only introduced edges and findings; preExisting is kept separate; remedy suggests a cheap fix; an empty section says plainly that it wasn't read. No publishing to MRs |
| 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 | Embeddings: Ollama by default (no key needed), plus OpenAI, Cohere, Voyage, ONNX, llama-server. Leftover call resolution uses the optional Kev (a model). Review uses deterministic detectors and the graph, no LLM |
| Agents | Claude Code and Codex (hooks, MCP); MCP is open to any client | MCP server and a Claude Code plugin; the tea-rags CLI with 14 commands (call runs a single tool in-process) |
| Measurement | Telemetry for every MCP call and hook; an agent repeating a search signals a poor first answer | SearchConfidence (score against the collection's own scale), get_index_metrics, get_index_status, drift reports, embedding benchmarks and evals/swe-bench-lite |
| Risks | SSRF protection, RBAC, task isolation, read-only knowledge reviewer | A local server without a multi-user model; keys in env; Qdrant can be external; the working tree and git history are read locally; no sandbox |
| AI Council | TeaRAGs | |
|---|---|---|
| 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. A project registry, but no multi-user model, roles or license |
| Interface | About 50 pages: code, graph, branches, quality, rules, review, knowledge, tickets, tasks, MCP Live, administration, System Health | MCP server (28 tools, 9 resources), the tea-rags CLI (14 commands), a Claude Code plugin with skills/commands/rules, a Docusaurus site; no separate UI |
| Monitoring | Telemetry for every MCP call and hook without PII; about 22 Prometheus rules with tests; System Health, tracing | The prime digest, drift monitors, get_index_metrics, get_index_status, logs in ~/.tea-rags/logs; 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 | Versioned collections _vN with an atomic alias, build lease, checkpoints, quarantine, scoped force with a persistent stale flag, a drift repair matrix, auto-update watcher, working-tree delta. No backup or restore check |
| Storage | Neo4j, Qdrant, PostgreSQL per service, Temporal, NATS, Redis | Qdrant (points with dense/sparse vectors and payload) plus DuckDB (codegraph) plus ~/.tea-rags (registry, snapshots, stats, quarantine, logs, models) |
| 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; no sandbox, keys in env, Qdrant can be external; no multi-user isolation |
| Delivery | A distribution for self-hosted installation, or SaaS; on the developer's machine, MCP and hooks | npm tea-rags, Node ≥ 22 < 26; Claude Code plugin; MIT; no separate server deployment |
| License | Proprietary | MIT |
Of the projects we compared, TeaRAGs is the closest to Council in features. It also builds a graph, reads git history, judges architecture, checks names and reviews changes. But it is local and doesn't keep what Council keeps on top of the graph: a knowledge base of decisions, authoritative conventions, a review service that publishes to MRs, tasks on a VM, and a team with permissions.
Where TeaRAGs is stronger:
restructure. Council has Martin's metrics (instability, abstractness, distance from the main sequence), detectors for cycles, layer violations, god/hub components and scattered_functionality by co-change, but not these specific detectors, and it doesn't recompute metrics on a virtual graph;review_changes: diff-scoped detectors, preExisting, remedy, the introduced=0, partial=false gate;SearchConfidence, presets and a reranker;tea-rags://schema/* references), prime with live index state at session start, and search cascade as a tool selection policy. Council has 61 tools and broader coverage, but no MCP resources and no separate prime digest: its reference lives in tool schemas, a skill and hooks, and "knowledge base first, then code" is enforced by the gate;Where Council is stronger:
review_changes is a deterministic pre-commit gate in one repository, with no MR and no knowledge.architecture_as_of and versioned edges. TeaRAGs is stronger on specific architecture detectors (SDP, silent coupling, shotgun surgery, norms, what-if), but not on these layers.ask_question returns excerpts with FQNs, not a model's paraphrase. TeaRAGs keeps a project registry with one collection per project and no shared graph across repositories.get_index_metrics, but not per-call observability or platform self-healing.Can they work together? Yes, they are different layers. TeaRAGs provides a local profile of the code and a deterministic pre-commit gate; Council provides knowledge, rules, model-based review with publishing to MRs, tasks and team features. Both are MCP servers, and one agent can connect to both. They overlap on architecture and review: TeaRAGs judges introduced edges and names deterministically, Council reviews the change with a model and publishes findings. A sensible setup: TeaRAGs as a fast pre-commit filter, Council for deep review and knowledge. There is no built-in integration.
Connect AI Council to one of your repositories and see the project graph, rules and review on your real code.