Files
odysseus/docs/ARCHITECTURE.md
2026-07-28 07:59:37 +01:00

4.5 KiB

Architecture

Note

This document is the proposed canonical destination for stable high-level architecture facts. It remains subject to maintainer review. Source code, tests, and configuration remain authoritative for implementation-sensitive behaviour.

Purpose

This document identifies the stable runtime boundaries and primary ownership locations used to navigate and extend Odysseus.

It intentionally excludes generated metrics, file-size rankings, refactor priorities, unresolved investigation findings, and proposed package layouts.

Runtime structure

Area Responsibility
app.py FastAPI application composition and primary application entry point
launcher.py Application launch support
setup.py Native setup workflow
core/ Authentication, middleware, persistence, sessions, and platform primitives
routes/ HTTP and API route handlers
src/ Application orchestration, tools, providers, and runtime helpers
services/ Domain-oriented service implementations
mcp_servers/ Built-in MCP server implementations
scripts/ CLI tools, diagnostics, maintenance, and migration helpers
static/ No-build browser frontend and bundled assets
tests/ Automated tests and supporting test infrastructure

Subsystem boundaries

Subsystem Primary implementation locations
Application startup app.py, src/app_initializer.py, core/
Authentication and sessions core/auth.py, core/middleware.py, core/session_manager.py, routes/auth_routes.py
Chat and streaming routes/chat_routes.py, routes/chat_helpers.py, src/chat_handler.py, src/chat_processor.py, src/llm_core.py
Agents and tools src/agent_loop.py, src/tool_execution.py, src/agent_tools/, src/tools/, src/tool_policy.py, src/tool_security.py
Models and providers routes/model_routes.py, src/model_discovery.py, src/model_capabilities.py, src/endpoint_resolver.py, src/llm_core.py
Cookbook and hardware fit routes/cookbook_routes.py, routes/cookbook_helpers.py, src/cookbook_serve_lifecycle.py, services/hwfit/
Search and research routes/search_routes.py, services/search/, routes/research/, services/research/, src/deep_research.py
Documents and retrieval routes/document_routes.py, src/document_processor.py, src/personal_docs.py, src/rag_manager.py, src/pdf_runtime.py
Memory and skills routes/memory/, services/memory/, routes/skills_routes.py
Email routes/email_routes.py, routes/email_helpers.py, routes/email_pollers.py, mcp_servers/email_server.py
Calendar, contacts, notes, and tasks routes/calendar_routes.py, routes/contacts/, routes/note/, routes/task_routes.py, src/task_scheduler.py
Media and speech routes/gallery/, routes/stt_routes.py, routes/tts_routes.py, services/stt/, services/tts/
Persistence and operations core/database.py, src/runtime_paths.py, src/bg_jobs.py, routes/backup_routes.py, routes/cleanup/

Architectural constraints

  • Preserve established import and compatibility paths unless a focused change explicitly migrates them.
  • Keep HTTP concerns in route modules and reusable domain behaviour in runtime or service modules.
  • Treat shared persistence, agent orchestration, tool execution, and application startup as high-authority boundaries.
  • Change one ownership boundary at a time.
  • Do not mix structural movement with unrelated feature behaviour.
  • Validate affected imports, startup paths, compatibility surfaces, and tests.

Frontend

The browser frontend is a no-build ES-module application under static/.

Its maintained module-level structure is documented in static/js/MODULE_SUMMARY.md.

Investigation and snapshots

Non-canonical investigation material is maintained under discovery/.

The following documents may contain dated observations, metrics, unresolved questions, or historical planning and must not be treated as specifications:

Documentation authority

  • Code, tests, and configuration define implemented behaviour.
  • Mature specifications define accepted subsystem behaviour where they exist.
  • Following maintainer acceptance, this document will define the high-level architecture map.
  • Discovery documents preserve evidence and uncertainty but remain non-canonical.