Skip to content
CAI
Software that uses CAICheck a score

oraios/serena

54.4

Adequate · 18 September 2026

54.2k

lines of production code

Python

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Serena is an AI coding assistant agent that integrates with external clients like Claude Code and JetBrains to provide intelligent code navigation, editing, and diagnostics. It leverages the SolidLSP framework to support a wide range of programming languages, offering features such as symbol resolution, cross-file references, and sandboxed memory management. The system includes a web-based dashboard for monitoring and configuration, along with a modular toolset for file operations, shell execution, and project interaction.

How it got here

2025 — Initial scaffolding and language server expansion

83 changes.

The project established its foundational infrastructure, including licensing, developer tooling, and a modular architecture for the Serena agent and SolidLSP framework. Significant effort was directed toward expanding language server support across dozens of programming languages and implementing a web-based dashboard for monitoring and management. Comprehensive test suites and fixtures were added to validate the stability and correctness of these new integrations and core utilities.

2026 — test coverage expansion and REPL development

26 changes.

This period focused on significantly expanding test coverage for a wide array of language servers, including C++, Solidity, Lean 4, and various web and systems languages, by adding comprehensive test fixtures and integration suites. Concurrently, the project developed core infrastructure features such as a structured Python REPL with session persistence and facades, automatic JetBrains IDE launching, and a dedicated, sandboxed memory management module.

Features

Add Elixir language support via Expert

SolidLSP now includes a new integration for the Elixir language, powered by the official Expert language server. This feature automatically downloads the Expert binary for supported platforms (Linux, macOS, and Windows on x64 and arm64 architectures) and verifies its integrity using SHA-256 checksums. The integration handles Elixir-specific project structures by ignoring build artifacts like \\_build/\ and \deps/\, respects project-specific Elixir versions managed by asdf, and includes a dedicated wait time to ensure cross-file references are resolved after compilation.

_src/solidlsp/language\_servers/elixir\tools · high confidence

Added Serena system block diagram

A new SVG file, \serena-block-diagram.svg\, has been added to the resources directory. This vector graphic provides a visual block diagram of the Serena system architecture, featuring labeled components and connections, which supports documentation and user understanding of the system's structure.

resources · high confidence

Automatic IDE launch and concurrent session serialization for JetBrains

Serena can now automatically start a JetBrains IDE instance when a project is activated, provided the \jetbrains\_launch\_command\ configuration option is set. To prevent race conditions when multiple Serena sessions try to launch the IDE simultaneously, the system serializes these launches using a file lock, ensuring only one instance is started per command while others wait for the plugin server to become available.

src/serena/jetbrains · high confidence

Expanded language server support and dependency management improvements

This update adds support for several new programming languages including Ada/SPARK, AL (Business Central), Angular, Ansible, BasedPyright, and Bash, while also introducing significant improvements to dependency management. The new language servers feature robust installation mechanisms with version pinning, checksum verification, and platform-specific binary handling. Additionally, the update includes better handling of runtime dependencies, improved error reporting, and enhanced configuration options for language-specific settings.

_src/solidlsp/language\servers · high confidence

Initial repository scaffolding and licensing structure

The repository is initialized with essential project infrastructure, including a multi-component licensing model (GPL-3.0-or-later for the Serena application and MIT for the SolidLSP library), a Contributor License Agreement (CLA.md), and comprehensive documentation (CONTRIBUTING.md, DOCKER.md, README-dev.md). It also introduces experimental Docker support via a Dockerfile and compose.yaml, a Nix flake for reproducible builds, and configuration examples (.env.example, .gitattributes) to ensure consistent development environments across platforms.

(repo-wide) · high confidence

Introduce Serena Dashboard with web service, log viewer, and macOS tray manager

Users can now access a new web-based Serena Dashboard to monitor tool usage, view logs, and manage tasks. The dashboard includes a log viewer with improved scrolling and tool-name highlighting, displays token statistics, and shows the active project name and Serena version. On macOS, the dashboard can run in a new 'tray\_manager' mode (default) that minimizes to the system tray, though macOS dock handling is currently experimental and may be reverted to a standard browser view if issues arise. The dashboard is configurable via settings such as trusted hosts, listen address, and log level, and can be opened on-demand via the new OpenDashboard tool.

src/serena · high confidence

Introduce Serena REPL with facades, external project support, and session persistence

The Serena REPL is now available as a Python interface for LLMs to execute code against Serena's capabilities. It exposes operations through facades (e.g., \lsp\) and supports querying external projects via remote execution through the project server. The REPL maintains a session namespace, allowing variables and functions to persist across executions, and provides an \info\ method for discovering available facades, methods, and their types. Results are rendered for the LLM using a configurable length-limiting renderer.

src/serena/repl · high confidence

Introduce dedicated memories module with path-sandboxing and reference analysis

The memory management logic has been extracted from the project module into a new \src/serena/memories\ package, containing \MemoryManager\ and \MemoryReferenceAnalyzer\. This change introduces strict path validation to prevent memory names from escaping the designated directory (e.g., rejecting absolute paths or \..\ segments), ensuring that memory files are safely sandboxed. It also adds a new \memory\_maintenance\ memory feature that automatically seeds a template if one does not exist, and provides utilities for analyzing and fixing stale or broken references between memories.

src/serena/memories · high confidence

New client setup handlers for Claude Code, Codex, CodeBuddy, and Grok

Serena now includes a new \client\_setup\ module that provides dedicated setup handlers for integrating with external AI coding clients. The system automatically detects the presence of Claude Code, Codex CLI, CodeBuddy, and xAI Grok Build, and offers to register Serena as an MCP server for each one. This simplifies the initial configuration process by allowing users to enable these integrations directly through the Serena CLI setup command.

src/serena/config · high confidence

New developer and demo scripts for licensing, versioning, and tooling

The scripts directory has been expanded with a suite of new utilities to support development workflows and demonstrate core capabilities. A new \bump\_version.py\ script automates version management, allowing developers to create release tags and bump development versions via CLI commands. Licensing is standardized through \add\_spdx\_headers.py\, which automatically injects SPDX identifiers based on the project's component structure. Several demo scripts (\demo\_diagnostics.py\, \demo\_find\_defining\_symbol.py\, \demo\_find\_implementing\_symbol.py\, \demo\_progressive\_tool\_shortening.py\, \demo\_run\_tools.py\) provide executable examples of how to interact with Serena's tools, including diagnostics, symbol resolution, and result shortening. Additional utilities include \mcp\_server.py\ for launching the MCP server, \memory\_graph.py\ for visualizing memory references, \live\_test\_grok.py\ for integration testing with the Grok client, and \build\_news\_json.py\ for assembling news content. The legacy \run\_sample.py\ script has been removed.

scripts · high confidence

New interprompt package for sandboxed, multi-language prompt templates

The new \src/interprompt\ package provides a structured way to manage and render Jinja2-based prompt templates with built-in security and localization support. Templates are rendered in a sandboxed environment to prevent arbitrary code execution, and the system supports multi-language prompts with configurable fallback modes (e.g., falling back to a default language or any available language). A factory mechanism allows auto-generating type-safe accessors for prompt templates and lists from a directory structure, simplifying integration for users who need to load and render prompts dynamically.

src/interprompt · high confidence

New utility modules for Serena core functionality

This change introduces a suite of new utility modules in src/serena/util to support core application features. It adds DotNETUtil for detecting and managing .NET runtime versions, and a singleton class decorator for managing single-instance classes. CLI interactions are improved with cli\_util, which provides a yes/no prompt helper and an auto-registering Click group for cleaner command organization. Robust file system operations are introduced via file\_system.py, featuring atomic file writes with Windows retry logic and a GitignoreParser that correctly handles anchored patterns and special characters. The update also includes exception handling improvements in exception.py to safely display fatal errors in headless environments, and a new FileProxy abstraction in file\_proxy.py to standardize file access and glob filtering across local and external sources.

src/serena/util · high confidence

News section now displays release announcements for Serena v1.0 through v1.7.0

The news area now includes a chronological series of HTML entries covering major product milestones from April 2026 to August 2026. These entries document the release of Serena v1.0 (introducing JetBrains refactoring tools), v1.1 (switching to a PyPI/uv installation mechanism and adding hooks), v1.2 (interactive debugging and Claude Code workarounds), v1.3 (diagnostics, inspections, and new LSP languages), v1.6 (extended memory system, trusted projects, and the replace\_in\_files tool), and v1.7 (Grok client support, expanded language servers, security hardening, and prompt templating). The entries also cover specific feature deep-dives such as nested/global memories and querying external projects, providing users with a centralized history of configuration changes, new tools, and security updates.

news · high confidence

Architecture

Tools reorganized into a modular package structure

The tools in src/serena/tools have been converted from a single monolithic file into a structured package. The new layout separates functionality into distinct modules: file\_tools (ReadFile, CreateTextFile, ListDir, FindFile, ReplaceContent, ReplaceInFiles), symbol\_tools (LSP-based symbol search and overview), jetbrains\_tools (JetBrains IDE backend tools), memory\_tools (WriteMemory, ReadMemory, ListMemories, DeleteMemory, RenameMemory, EditMemory), config\_tools (OpenDashboard, ActivateProject, RemoveProject, GetCurrentConfig), cmd\_tools (ExecuteShellCommand), workflow\_tools (Onboarding, InitialInstructions, SerenaInfo), query\_project\_tools (ListQueryableProjects, QueryProject), and repl\_tools (SerenaReplTool). This modularization improves maintainability and allows for more granular tool management.

src/serena/tools · high confidence

Behavioural changes

Auto-generated prompt factory with dynamic system prompt support

The auto-generated prompt factory module has been introduced to centralize the retrieval and rendering of prompt templates. This change enables the system prompt to be dynamically constructed based on available tools, tool categories (markers), context, and global memories, rather than being static. It also adds specific factories for onboarding, connection, and JetBrains debug REPL prompts, and includes a new override mechanism for the system prompt.

src/serena/generated · high confidence

Dashboard UI overhaul with dark mode and new banner system

The dashboard frontend has been completely redesigned with a new CSS architecture supporting both light and dark themes via CSS variables, ensuring consistent typography and spacing. A new dynamic banner system has been introduced, allowing for manual navigation of sponsor banners with theme-aware image support (different images for light/dark modes). The interface now includes a theme toggle button, improved log viewing with copy/save/clear actions, and a news section. The JavaScript logic has been updated to handle these new features, including HTML escaping for log messages to prevent XSS and a new banner rotation class that defaults to manual navigation.

src/serena/resources/dashboard · high confidence

Enhanced subprocess lifecycle management and safer dependency extraction

The language server now manages external processes more robustly: it prevents orphaning by ensuring child processes are terminated when the main application exits, handles argument quoting safely across platforms, and reaps descendant processes to avoid zombie processes. Additionally, C\# dependency extraction now uses a new SafeZipExtractor that handles long Windows paths and skips failed extractions gracefully, while Scala Metals users benefit from automatic detection and cleanup of stale H2 database locks that can occur after crashes.

src/solidlsp/util · high confidence

Improved JSON-RPC message formatting for LSP compatibility

The LSP protocol handler now ensures stricter compliance with the JSON-RPC specification and specific language server requirements. For methods that expect no parameters (such as 'shutdown' and 'exit'), the 'params' field is now entirely omitted from the outgoing message, preventing parse errors in servers like HLS and rust-analyzer. Additionally, the outgoing HTTP headers no longer include the optional 'Content-Type' header, which resolves issues with Godot's GDScript LSP parser that silently drops messages containing this header. These changes improve interoperability with various LSP servers.

_src/solidlsp/lsp\_protocol\handler · high confidence

Introduce structured REPL API facades for configuration, editing, file system, and external projects

The REPL now exposes a set of organized API facades (cfg, edit, fs, ext, jb, lsp, mem, shell) that group related operations into a consistent interface. Users can now access configuration and the web dashboard via the cfg facade, perform file-level operations (read, write, search) through the fs facade, and execute shell commands via the shell facade. The edit facade provides structured multi-file replacement with dry-run previews, while the ext facade enables read-only or read-write access to external projects via context managers. Language-specific intelligence is now split between the jb facade (JetBrains IDE-backed) and the lsp facade (generic language server-backed), and the mem facade manages persistent project memories including onboarding.

src/serena/repl/api · high confidence

SolidLSP framework initialization and core architecture

This change introduces the SolidLSP library, a unified framework for managing language server dependencies and communication. It replaces the previous 'multilspy' implementation with a new architecture featuring a \LanguageServerDependencyProvider\ abstraction for handling server installations (including on-demand execution via \uvx\), a centralized \InitializeParamsBuilder\ for standardizing LSP initialization, and a robust \LanguageServerInterface\ for process management and JSON-RPC communication. The update also introduces a new \SolidLSPException\ hierarchy for error handling and a \FilenameMatcher\ for consistent file extension handling across languages.

src/solidlsp · high confidence

Test coverage

Added AL Language Server test repository for Business Central development; Added BSL test repository fixture for language server validation; Added C\# test repository with sample code and solution structure; Added C++ and Unreal Engine 5 test fixtures; Added C/C++ language server test coverage; Added Clojure LSP test suite with indexing regression and capability checks; Added Clojure test repository for LSP diagnostics and module resolution testing; Added Dart test repository with sample source files; Added Elixir test repository source files; Added Elixir test suite for models and core functions; Added Elm language test fixtures; Added Erlang test repository with sample application code; Added Erlang test repository with sample code and unit tests; Added F\# language server test suite; Added F\# test repository with sample code for diagnostics and implementation testing; Added Fortran test fixtures for diagnostics and language support; Added Go language server test coverage for symbols, diagnostics, and build tags; Added Go test fixtures for build tags, diagnostics, and symbol handling; Added Gradle wrapper and gitignore to Kotlin test repository; Added Groovy test fixtures for diagnostics and basic usage; Added HLSL test resources for shader-language-server diagnostics; Added Haskell test repository with sample modules and diagnostics fixtures; Added Haxe test fixtures for language server diagnostics and symbol resolution; Added Java language server test coverage; Added Java test fixtures for symbol and diagnostics testing; Added Julia test fixtures for Serena and Fatou support; Added Julia test fixtures for diagnostics and language server validation; Added Kotlin test fixtures for LSP diagnostics and reference testing; Added LaTeX test fixture for texlab smoke tests; Added Lean 4 test repository fixtures; Added Lua test repository with unit tests for calculator module; Added MATLAB test repository resources; Added Nix test fixture repository for language server testing; Added OCaml test repository with sample library code; Added PHP test fixtures for language server validation; Added PowerShell test fixtures for language service validation; Added Python test fixtures for symbol analysis; Added QML test fixtures for language support validation; Added R language test repository; Added Ruby test repository fixtures for language server testing; Added Rust test repository with sample code and diagnostics fixtures; Added Scala language test resources; Added Solidity test fixtures for diagnostics and ERC-20 token validation; Added Svelte language server test suite; Added Svelte test fixture with TypeScript and Vite configuration; Added Svelte test repository with Sverdle game and diagnostics samples; Added Swift test fixtures for diagnostics and language features; Added SystemVerilog test fixtures for LSP validation; Added Terraform test fixtures for language server diagnostics; Added TypeScript test coverage for language server configuration and symbol resolution; Added TypeScript test fixtures for cross-package imports, JSX, and diagnostics; Added Vue calculator test fixture with comprehensive component and store logic; Added Zig test repository fixture; Added comprehensive C\# language server tests; Added comprehensive test coverage for Serena project configuration and CLI commands; Added comprehensive test coverage for the TOML language server; Added integration tests for CUE, mSL, and QML language servers; Added integration tests for PowerShell language server support; Added integration tests for Zig language server symbol and reference capabilities; Added integration tests for the Ansible language server; Added test coverage for HLSL language server integration; Added test coverage for Pascal language server support; Added test coverage for Serena configuration and client setup; Added test coverage for the BSL (1C:Enterprise) language server; Added test fixtures for Ada/SPARK language support; Added test fixtures for Angular, HTML, and SCSS language servers; Added test fixtures for Bash language support; Added test fixtures for Rego policy analysis; Added test fixtures for advanced Python code parsing; Added test infrastructure scripts for Python test repository; Added test resource file for ignored directory handling; Added test resource for diagnostics URI handling; Added test resources for Pascal language support; Added test resources for Rust 2024 edition support; Added test suite for Erlang language server support; Added tests for AL Language Server symbol normalization; Added tests for BasedPyright support and Python language server functionality; Added tests for Deno language server support; Added tests for LSP utility functions and platform detection; Added tests for Lean 4 language server integration; Added tests for Markdown language server symbol detection; Added tests for Perl language server integration and configuration; Added tests for Rego language server symbol and definition resolution; Added tests for Wolfram Language LSP support; Added tests for utility modules; Expanded test coverage for Rust language server capabilities; Expanded test coverage for SolidLSP language servers and core behaviors; Snapshot tests for symbol editing and Vue language support.

Dependencies

Serena Agent v2.0.0.dev0 release with security fixes and expanded language support

The package has been renamed to 'serena-agent' and bumped to version 2.0.0.dev0, expanding Python support to versions 3.11 through 3.14. This update addresses security vulnerabilities by pinning 'flask' to 3.1.3 (fixing a CVE and werkzeug alert), 'anthropic' to 0.117.0, and 'agno' to 2.6.6 (fixing a session state overwrite CVE), alongside other pinned transitive dependencies like 'urllib3', 'cryptography', and 'PyJWT'. The release also introduces comprehensive language server support for Angular, Svelte, Vue, and many others, and switches the type-checking tool from mypy to 'ty'.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 54.

Lenses

  • Code Health 86
  • Architecture 53
  • Maturity 61
  • Readiness 82
  • Security 74
  • Accessibility 46

Changes since last survey

  • 300 commits — 221 feature/other, 79 fixes

By area

  • (root) — 86 commits
  • src/serena — 82 commits
  • (repo) — 43 commits
  • src/solidlsp — 36 commits
  • .serena/memories — 8 commits
  • docs/02-usage — 7 commits
  • test/solidlsp — 7 commits
  • .github/workflows — 5 commits
  • test/resources — 5 commits
  • test/serena — 5 commits
  • .serena/project.yml — 4 commits
  • src/interprompt — 4 commits
  • .github/ISSUE_TEMPLATE — 2 commits
  • news/20260809.html — 2 commits
  • news/20260414.html — 1 commit
  • news/20260718.html — 1 commit
  • scripts/memory_graph.py — 1 commit
  • test/conftest.py — 1 commit

Notable commits

  • fix: CLI: Fix project index-file command not using only the relevant language server to index the given file
  • fix: Fix docstring change being applied to the wrong 'find references' tool
  • fix: Fix document symbol caching for language servers that post-process symbols
  • fix: Fix duplicate section
  • fix: Fix f-string
  • fix: Fix gopls replace_symbol_body corrupting type/var/const declarations
  • fix: Fix language server cache directory
  • fix: Fix project CLI language server aliases
  • fix: Fix: Change the semantics of file opening (open_file) in the language server
  • fix: Fix: Compensate for incorrect body end coordinates in Godot LS (#1974)
  • fix: Fix: Exceptions raised during LanguageServerManager.start did not stop the language server subprocess if it was already started
  • fix: Fix: High-level document symbol cache was not invalidated when the LS-specific low-level version changed
  • fix: Fix: LSP process-group cleanup no longer requires process-table enumeration
  • fix: Fix: LSPFileBuffer: a stale content hash could be returned if files are kept open and file contents were not read before trying to retrieve the hash value
  • fix: Fix: Language servers were not notified of external file system changes, causing some symbolic operations (such as find_referencing_symbols) to report stale information. An explicit file system synchronisation mechanism is now used to detect changes prior to the affected tool executions.
  • fix: Fix: Order of ignore patterns passed to language servers was not respected
  • fix: Fix: Parallel agents auto-registering projects could overwrite each other's changes to the global project list in serena_config.yml
  • fix: Fix: Properly differentiate between raw and high-level symbol cache fingerprints, avoiding unnecessary invalidations of the raw cache when only the derived high-level representation changes
  • fix: Fix: Serena PyPI version check triggered by callback on main thread could delay agent startup
  • fix: Fix: Tool calls exceeding the timeout blocked the task executor indefinitely; tasks are now cancelled on timeout and the executor recovers
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

oraios/serena was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit c6fbd1c5932df2494ffa0020af5a9fbe80b82143 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.