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

Home / Compare / agent-memory-mcp

AI Council and agent-memory-mcp: 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.

agent-memory-mcp is a single Go binary that works as both an MCP server and a CLI. It gives the agent three things: typed long-term memory in SQLite, RAG search over the repository's documents (docs, ADRs, RFCs, changelogs, runbooks, postmortems, CI, Helm, Terraform, K8s), and a knowledge maintenance layer: session consolidation, steward scans, verification, a canonical layer, a temporal model and a knowledge graph. 50 MCP tools, or 8 when grouped; three Claude Code hooks; a session tracker; two SQLite files and zero external databases. MIT.

Of the projects we compared, it is the closest to Council's knowledge layer: it has trust, a canonical layer, a review queue, drift detection, verification, temporal validity and knowledge maintenance. But it is a project knowledge bank, not a code understanding tool: it doesn't build a symbol graph, keep conventions, review diffs, run tasks on a VM, or know about companies and roles.

1. Understanding the code

AI Council agent-memory-mcp
Who reads the code Council itself: it parses the repositories and builds the graph. No model is called during analysis Nobody: there is no code graph. RAG indexes documents and configs, memory stores knowledge about the project, and repo_read/repo_search read files as text. No symbols, calls, dependencies or architecture. The knowledge graph is subj → rel → obj triples about the domain, not about the code
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 The RAG index on index/index_documents, at startup (auto-indexing) and via a watcher every 5 minutes; memory on store_memory/engineering tools, hooks and close_session; the steward per its manual/scheduled/event_driven policy; archive sweep hourly
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 Memory: type (episodic/semantic/procedural/working), engineering type (decision/runbook/incident/postmortem/caveat/migration-note/procedure/dead_end), tags, context, importance, trust metadata, temporal fields, sediment layer, embedding. RAG: document chunks with breadcrumbs and source type. Graph: triples. Nothing about code, its structure or metrics
What's missing — Code graph, dependencies, calls, architecture layers, DDD, patterns, style, code smells, ISO 25010 and architecture diagrams. RAG sees documentation and configs, not the source AST
Languages Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++, with full layer analysis Code languages aren't parsed. RAG classifies document and config types (Markdown, ADR, RFC, changelog, runbook, postmortem, CI, Helm, Terraform, K8s), not programming languages
Multiple repositories A project made of several repositories with a shared graph One MCP_ROOT and an MCP_ALLOW_DIRS allowlist; one bank and one index per root. No shared graph across repositories
History Edges are versioned after every run; architecture_as_of shows the architecture as of a date No code history. Knowledge has a temporal model: valid_from/valid_until, superseded_by, replaces, recall_as_of, knowledge_timeline
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 Two searches: memory recall (centered cosine + trust + importance + freshness + sediment) and hybrid RAG (semantic + BM25, weighted fusion or RRF, an optional reranker, capped at 1 chunk per document). Plus multihop over the triple graph. No search over code symbols

2. Knowledge and rules

AI Council agent-memory-mcp
Knowledge base Decisions, notes, Mermaid diagrams, changelogs. Each entry is anchored to code and reaches the agent when it touches that file A strong project knowledge bank: typed memory, engineering entities (decision, runbook, incident, postmortem, caveat, migration-note, procedure, dead_end), a triple graph, a canonical layer, a project bank with 8 views, a review queue. Entries aren't anchored to code positions; the link to code is through path mentions, which the drift scan checks
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 Layered freshness: last_verified_at and freshness_score, the canonical layer, steward scanners for stale and expired working entries, a drift scan over file references (source_missing, source_changed, stale_unverified), verification_candidates, verify_entry, a review queue, temporal validity. Checks work on files and structural signals, not on code positions with a reviewer's quote
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 No per-branch knowledge: one bank per root. The temporal model describes versions of knowledge, not git branches
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. There is a steward policy (thresholds for duplicates, stale, canonical, working TTL), which is a knowledge maintenance policy, not code rules. No MUST/SHOULD levels, no anchoring to entities or paths, no diff check
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 Three Claude Code hooks: SessionStart → context-inject (recent knowledge and pending summaries into the system prompt), PreCompact → checkpoint (transcript, Jaccard dedup), SessionEnd → auto-capture (sessionclose extract, plan, apply). Plus a session tracker based on MCP calls. No KB gate
MCP Server: about 60 tools, profiles, modes, XML with a size budget 50 tools; with MCP_TOOL_GROUPING=true, 6 groups and 2 standalone tools (8 instead of 50), while tools/call always accepts both the group and the legacy name. Also HTTP /mcp, /health, /console
Moving knowledge Bulk export and import of knowledge, copying between projects export produces portable JSON of memory only; the index is rebuilt with index. No knowledge bundle with import. Backup means copying the whole directory or sqlite3 .backup, because of WAL

3. Requirements and tasks

AI Council agent-memory-mcp
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: solo stdio, MCP, CLI, Claude Code hooks, a Homebrew service on macOS. Shared HTTP is for a trusted team, but without roles
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 workspace. There is a task lifecycle: end_task, sweep_archive, archive sweep over tasks/archive, but a task doesn't run on a VM or carry a diff through to an MR
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 a knowledge loop: capture, sessionclose extract, plan, apply, review queue, steward/drift/verify, canonical, recall. Archive sweep closes tasks but doesn't drive them

4. Verification and models

AI Council agent-memory-mcp
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 code review. There is knowledge review: the review_queue_item queue, resolve_review_item, steward_inbox_resolve, verify_entry, conflicts, drift. This checks knowledge, not the diff
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 in consolidation: sessionclose and the steward are deterministic heuristics. Embeddings are needed for semantics: Jina → OpenAI → llama.cpp → Ollama; local-only mode turns off hosted providers. An optional triple extractor is the only LLM call, off by default. The Jina reranker is optional and off
Agents Claude Code and Codex (hooks, MCP); MCP is open to any client MCP clients and Claude Code via three hooks; CLI; HTTP JSON-RPC. No agent runtime of its own
Measurement Telemetry for every MCP call and hook; an agent repeating a search signals a poor first answer 692 tests, 14 benchmarks. We ran go build ./... and the tests of nine core packages (October 26, 2026); the eval suite (make eval, make eval-recall) was not run. Measured defaults: mean-centering Hit@5 0.6232 → 0.7217; age decay is off (0.1942 vs 0.7217); a cap of 1 chunk per document takes R@5 0.5104 → 0.8676 and nDCG 0.6184 → 0.8927; RRF doesn't move Hit@5/MRR
Guarantees Test gates, review, conventions CI: build → make vet → go test -race ./... → make eval → GoReleaser deprecation gate; go vet with the eval and corpus tags; 692 tests; the TestDispatchTableCompleteness contract checks for exactly 50 tools; MCP Registry publishing via GitHub OIDC

5. Platform

AI Council agent-memory-mcp
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. Shared HTTP uses a single bearer token per instance, with no users, roles, rate limiting or mTLS. No companies or license
Interface About 50 pages: code, graph, branches, quality, rules, review, knowledge, tickets, tasks, MCP Live, administration, System Health MCP with 50 tools (8 in grouped mode), CLI, three Claude Code hooks, HTTP /mcp, /health, /console (a static page), a project bank view with 8 views. No UI of its own
Monitoring Telemetry for every MCP call and hook without PII; about 22 Prometheus rules with tests; System Health, tracing stats JSONL, memory_stats, steward_status, drift_scan, RetrievalPath and Degraded, 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 WAL and a foreign-write watcher (cache reload by data_version), index_state=dirty and re-indexing, orphan cleanup, inbox reconciliation, archive sweep, documented backup/restore. No nightly backup or restore check
Storage Neo4j, Qdrant, PostgreSQL per service, Temporal, NATS, Redis Two SQLite files: memories.db (memory, triples, steward) and vectors.db (chunks, index). No external databases; vector search is a linear cosine scan over an in-memory copy
Isolation A sysbox container per task, one-time credentials for push, read-only knowledge reviewer, permission checks in a single gateway, SSRF protection PathGuard (root + allowlist, no .. or absolute paths), bearer auth on non-loopback, constant-time comparison, secret redaction, local-only embeddings. No sandbox; Docker runs as root; prompt injection through stored content isn't modeled
Delivery A distribution for self-hosted installation, or SaaS; on the developer's machine, MCP and hooks A Go binary, Docker Compose with an Ollama sidecar and an nginx TLS proxy, Homebrew + launchd, GoReleaser, MCP Registry; MIT
License Proprietary MIT

Bottom line

Of the projects we compared, agent-memory-mcp is the closest to Council's knowledge layer. It has things most local tools don't: trust, a canonical layer with a provenance gate, a review queue, a steward with scanners and an inbox, a drift scan, verification, temporal validity, sedimentation and a knowledge graph. But it doesn't understand code: there is no symbol graph, RAG reads documentation and configs, there are no conventions or diff review, and no tasks on a VM or team model.

Where agent-memory-mcp is stronger:

  • a project knowledge bank with engineering types, trust metadata, a canonical layer and a project bank;
  • a review queue stored as memory entries rather than a separate table; resolve_review_item and steward_inbox_resolve;
  • a steward covering duplicates, conflicts, structural contradictions, stale entries, expired working entries, canonical health, drift and verification candidates;
  • a temporal model: valid_from/valid_until, superseded_by, replaces, recall_as_of, knowledge_timeline;
  • sedimentation from surface to episodic to semantic to character;
  • a triple graph and multihop recall;
  • session consolidation (extract, plan, apply) without LLM rewriting, with Jaccard dedup and a review gate;
  • RAG over documents and configs: semantic + BM25, weighted fusion/RRF, a per-document cap, ExpandSection, source-aware boosts;
  • 50 MCP tools and an 8-tool grouped mode;
  • three Claude Code hooks and a session tracker;
  • local-first with two SQLite files, a single Go binary, MIT;
  • measured defaults and 692 tests.

Where Council is stronger:

  • Understands code, not just text about it. The L0–L10 graph covers stack, structure, dependencies and cycles, calls, data, architecture and forbidden dependencies, patterns, style, DDD, co-change, code smells, ISO 25010 and diagrams. Static analysis doesn't call a model or spend tokens. agent-memory reads documents and configs, but doesn't build a symbol graph or see the architecture.
  • Knowledge anchored to a code position and a branch. An entry lives on a branch and reaches the agent when it touches the file. When the code under it changes, it goes back for re-checking: the reviewer must provide a quote, and the outcome is a label. On branch merge, entries move with the code; merge_knowledge/supersede_knowledge preserve history. agent-memory has trust metadata and temporal validity, but no anchoring to code positions and no check against the code.
  • Conventions are authoritative rules, not observed norms. Three scopes: code entities, paths (including files that don't exist yet) and the whole project; MUST/SHOULD, draft, retired and deleted states; checks before an edit and against the diff. Hooks deliver rules with every message and file context on Read/Edit/Bash, and the KB gate keeps the agent from reading code until it has queried the knowledge base. This is enforcement, not an entry in a bank.
  • Code and knowledge review as a separate service. A verdict for every file, a second pass, publishing to the MR without duplicates. Knowledge review checks a claim against its AST position, requires a verbatim quote, and keeps a log and calibration. agent-memory has a review queue for entries, but no diff review and no publishing to MRs.
  • Tasks run on a VM in a sysbox container. They last for days and a person drives them from the web UI: analysis, diff, commit, push, MR. One-time push credentials, isolation, RBAC and SSRF protection. agent-memory is a local knowledge bank without tasks or a workspace.
  • A platform around the code. Jira/GitHub/Redmine tickets parsed into knowledge with graph-based advice; tracing tests to requirements; companies, members, roles (including per project), permissions; license and seats; self-hosted (including air-gapped) or SaaS. agent-memory doesn't have this layer.
  • Shared graph across repositories and architecture history. architecture_as_of shows the architecture as of a date, edges are versioned after every run, and SonarQube findings are imported as an external analyzer. agent-memory stores knowledge, not the project's architecture.
  • Observability and self-healing. Telemetry for every MCP call and hook without PII, with repeated agent searches visible as a signal of a poor first answer; about 22 Prometheus rules with tests, System Health, tracing; Temporal reconciliation, orphaned data cleanup, nightly backup with restore checks, and retention. A local knowledge bank doesn't need this; a team platform does.
  • The model isn't a key inside the stack. Static analysis runs without a model; review, knowledge review, AI chat and workspaces go through the host worker, bridge and vendor CLI/OAuth. This doesn't mean Council works without a model: without one, only static analysis remains. But keys and quotas aren't stored in Council.

Can they work together? Yes, they are different layers. agent-memory-mcp is a project knowledge bank and document RAG for the agent; Council is the code graph, conventions, review and tasks. Both are MCP servers, so one agent can connect to both. They overlap on knowledge and the review queue: agent-memory stores decisions, runbooks and session lessons; Council stores knowledge anchored to code positions and team rules. There is no built-in integration. A practical setup: agent-memory for "what we know and what we discussed", Council for "where it is in the code, which rules apply, and what review says". Don't run the same review queue in both systems: each one should own its own subject.

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