Serena is an MCP-based "IDE for coding agents": semantic code retrieval/editing/refactoring tools driven by language servers.
src/serena/— agent, MCP server, tools, project/config layeragent.py,mcp.py,project_server.py,cli.py,hooks.py— entrypoints/wiringtools/— tool implementations (memory_tools, symbol_tools, file_tools, workflow_tools, query_project_tools, config_tools, cmd_tools, jetbrains_tools)tools/tools_base.py— base classes for all toolsconfig/—serena_config.py,context_mode.py,client_setup.pyresources/config/contexts/*.yml,resources/config/modes/*.yml— context/mode definitionscode_editor.py,symbol.py,ls_manager.py— symbolic editing / LS lifecycledashboard.py,gui_log_viewer.py— web dashboard backend (frozen API) / log viewer; the Svelte frontend lives indashboard/— seemem:dashboard_frontendprompt_factory.py+generated/generated_prompt_factory.py— prompts (regenerate withscripts/gen_prompt_factory.py)
src/solidlsp/— LSP client framework; per-language servers underlanguage_servers/src/interprompt/— prompt template library (synced from external repo; see.syncCommitId.*)test/serena/,test/solidlsp/<lang>/— pytest suites; per-language tests gated by pytest markerstest/resources/repos/<lang>/— fixture projects used by language-server testsscripts/— utilities (prompt regen, tool overview, profiling, agno agent)docs/— Jupyter Book sources; build via poedoc-build
- Package name (PyPI):
serena-agent; import root:serena. Wheel includesserena,interprompt,solidlsp. - Python:
>=3.11, <3.15. Dependencies are exact-pinned inpyproject.toml(uvx installs from git, lockfile ignored — pin exactly). - Entry points:
serena→serena.cli:top_level;serena-hooks→serena.hooks:hook_commands. - Per-project state lives under
<project>/.serena/(config +memories/as.mdfiles). - See
mem:tech_stack,mem:suggested_commands,mem:conventions,mem:task_completion.