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

Home / Compare / Serena

AI Council and Serena: 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.

Serena is an MCP server and toolkit that gives an LLM agent IDE-like capabilities: finding and editing code at the symbol level rather than by lines. It relies on language servers (LSP) or a paid JetBrains plugin: 80+ language servers, name paths (Class/method), references, implementations, declarations, diagnostics, rename, safe delete, symbol-level edits with atomic writes. It offers two interfaces: individual MCP tools and a REPL (serena_repl with the facades s.lsp, s.edit, s.fs, s.mem, s.shell, s.cfg, s.ext, s.jb). It also has Markdown memory with mem: links, client hooks, a CLI, a dashboard and a JetBrains plugin. One active project per process; client-agnostic: Claude Code, Codex, Copilot CLI, JetBrains AI Assistant, Claude Desktop and others. License: GPL-3.0-or-later, with src/solidlsp under MIT.

Of all the projects we compare, Serena is the closest to Council in goal (giving the agent an understanding of code), but it gets there differently: precise symbols through a language server instead of a project graph. Serena doesn't keep knowledge, rules, review or tasks. It is a precision layer over the code, and Council complements it with a graph, knowledge and rules.

1. Understanding the code

AI Council Serena
Who reads the code Council itself: it parses the repositories and builds the graph. No model is called during analysis A language server (LSP or JetBrains), on the agent's request. No model is called, and there is no graph of its own either
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 At tool-call time; LSP runs live and symbol caches are kept on disk. No background 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 Symbols, name paths, references, implementations, declarations, hover, diagnostics, rename and workspace edits. No layers, architecture, DDD, code smells or quality scoring
Precision A graph from static analysis: broad, but approximate where type inference is needed The exact answer from the compiler or indexer, but it depends on the language server and toolchain; some servers return incomplete results until indexing finishes
Languages Python, PHP, TypeScript, JavaScript, Java, Kotlin, C#, C, C++, with full layer analysis 80+ language servers; separately, docs and data (Markdown, LaTeX, YAML, JSON, TOML)
Multiple repositories A project made of several repositories with a shared graph One active project per process; monorepos via workspace folders; other projects via ProjectServer and s.ext; the JetBrains backend can serve several open projects
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 No history, only symbol caches on disk
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 Symbol lookup by name path, references, implementations, declarations, text search_for_pattern. No semantic or vector search

2. Knowledge and rules

AI Council Serena
Knowledge base Decisions, notes, Mermaid diagrams, changelogs. Each entry is anchored to code and reaches the agent when it touches that file Markdown memory in .serena/memories plus a global ~/.serena/memories/global; mem:name links; onboarding creates core, tech_stack, suggested_commands, conventions, task_completion. The agent reads memory on its own, as needed
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 serena memories check checks only the integrity of mem: links (stale / unmarked / fuzzy), not whether memory still matches the code. No code positions and no staleness check
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 Memory is files in the working tree, versioned with git; no per-branch visibility or knowledge merging. Global memory is shared
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 Contexts, modes, tool exclusions, project config, read_only, trust boundaries. Conventions live as text in memory (mem:conventions); there is no rule engine with levels, anchoring and checks
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 Client hooks: activate at session start, remind on PreToolUse (after 3 greps / 3 reads / 4 mixed calls it refuses and points the agent to symbol tools), auto-approve, plan-context and plan-guard for Codex, cleanup. Memory is pull-based: the agent reads it itself; no per-file knowledge delivery
MCP Server: about 60 tools, profiles, modes, XML with a size budget Server: about 50 tools in the registry plus a REPL (serena_repl); the tool set depends on context and modes; client-agnostic. The set exposed to the client is fixed per session
Moving knowledge Bulk export and import of knowledge, copying between projects Memory is plain files: you can copy or commit them. No knowledge bundle

3. Requirements and tasks

AI Council Serena
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: Serena is an MCP server for Claude Code, Codex, Copilot CLI, JetBrains AI Assistant, Claude Desktop and others; serena setup configures the client and contexts are tailored to it
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: Serena is a tool inside the developer's environment. It has project activation, onboarding and modes
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 Modes interactive, editing, planning, one-shot, onboarding, no-onboarding, no-memories, query-projects, benchmark. No task process

4. Verification and models

AI Council Serena
Code review A separate service: looks at what changed, a verdict for every file, a second pass, publishing to the MR without duplicates No AI review. LSP diagnostics per file and symbol; post-edit diagnostics are implemented but off by default; project health-check checks that the language server works, not code quality
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 of its own: it uses the client's LLM. tiktoken and anthropic are included only for token counting; the dashboard shows tool usage stats and estimated token savings
Agents Claude Code and Codex (hooks, MCP); MCP is open to any client Client-agnostic: Claude Code, Codex, Copilot CLI, JetBrains AI Assistant, Claude Desktop and others; per-client contexts, serena setup; the JetBrains backend is a paid plugin
Cost and usage tracking Telemetry for every MCP call and hook; an agent repeating a search signals a poor first answer Dashboard: tool stats, token counter, task queue; no billing
Risks and safeguards SSRF protection, RBAC, task isolation, read-only knowledge reviewer Trust boundaries, path confinement, ignore rules, SHA256 for downloaded dependencies. But it is not a sandbox: read_only removes edits through tools, yet the REPL can still write and run shell commands; shell is available by default

5. Platform

AI Council Serena
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 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 tools and REPL, CLI, dashboard (Flask API + web UI + tray + pywebview), JetBrains plugin. No multi-user interface
Monitoring Telemetry for every MCP call and hook without PII; about 22 Prometheus rules with tests; System Health, tracing Dashboard: logs, tool stats, task queue; file 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 Restarts a dead language server (_ensure_functional_ls), retries a call once, on-disk caches, pdeathsig on Linux. No backup or restore check
Storage Neo4j, Qdrant, PostgreSQL per service, Temporal, NATS, Redis Files: the project's .serena/ (config, memory, caches), ~/.serena (global config, memory, logs, language servers), LSP processes. 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 Trust boundary, path confinement, ignore rules, SHA256 for dependencies; no sandbox. read_only removes edit tools but not the REPL; the dashboard and ProjectServer are local services with trusted hosts or a secret
Delivery A distribution for self-hosted installation, or SaaS; on the developer's machine, MCP and hooks PyPI serena-agent / uvx, serena setup for clients, Docker (the repo notes mismatches between compose and the Dockerfile), Nix, paid JetBrains plugin
License Proprietary GPL-3.0-or-later; src/solidlsp under MIT

Bottom line

Serena is the closest to Council in goal (giving the agent an understanding of code), but it gets there differently: precise symbols through a language server instead of a project graph. It doesn't compete with Council's knowledge, rules, review and tasks. It is a precision layer over the code, and Council complements it with a graph, knowledge and rules.

Where Serena is stronger:

  • precise symbols, references, implementations, declarations, diagnostics, rename, safe delete;
  • 80+ language servers;
  • symbol-level edits: replace a symbol body, insert before/after, multi-file replace with occurrence ids, atomic writes;
  • client-agnostic MCP: Claude Code, Codex, Copilot CLI, JetBrains AI Assistant, Claude Desktop; serena setup and per-client contexts;
  • the remind hook, which catches the agent drifting toward grep/read and steers it back to LSP symbol tools, plus plan mode and auto-approve. Council's hooks steer the agent toward the knowledge base and the graph, not toward LSP;
  • local, simple, open source (GPL/MIT), installs from PyPI/uvx.

Where Council is stronger:

  • Sees the whole project, not just one symbol. 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. Serena is more precise at the LSP symbol level; Council sees the project's architecture, relationships and quality.
  • 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. Serena keeps memory in Markdown files with mem: links, but they are not anchored to code positions or checked against the code.
  • 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. Serena steers the agent toward LSP, but has no 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. Serena provides symbol reads and edits, not a review service.
  • Tasks on a VM, tickets, MRs, team. A task in a sysbox container lives for days and a person drives it from the UI; tickets, requirements tracing, companies, roles and licensing. Serena is a local tool for a single developer.
  • Shared graph across repositories, architecture history, SonarQube. architecture_as_of, versioned edges, an external analyzer; ask_question returns excerpts with FQNs. Serena works with one active project through a language server.
  • 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. Serena has logs and LSP diagnostics, but not per-call platform observability.

Can they work together? Yes, and they pair naturally: both are MCP servers, and one agent can connect to both. Serena provides precise symbol reads and edits; Council provides the graph, knowledge, rules and review. For example, Council finds the module and related knowledge, Serena reads and edits the exact symbol, and Council checks the diff against the rules and reviews it. They overlap on symbol and reference lookup: Council has find_usages, find_path, search_code; Serena has find_symbol, find_referencing_symbols. Serena is more precise at the LSP level, Council covers more of the project and its relationships. There is no built-in integration: for Council to deliver rules into Serena's context you need a shared layer, or both MCP servers connected to the same client.

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