# johnivanov092-glitch/elira_ai architecture

> Architecture diagram of the GitHub repository johnivanov092-glitch/elira_ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/johnivanov092-glitch/elira_ai
- Repository: https://github.com/johnivanov092-glitch/elira_ai
- Video tour (about a minute): https://gitdiagram.com/johnivanov092-glitch/elira_ai/video

## Overview

Elira AI is a self-hosted AI workspace: people use a React interface in a browser or Tauri desktop shell, which communicates with a local FastAPI backend. The main interaction is submitting a chat or project task, having backend runtimes route it through model inference and available tools, then returning a response or streamed run events. Separate capabilities cover workflows and approvals, memory, web research, media and voice, and local project operations. The README documents these broader features; sampled excerpts establish only selected entry points and runtime wiring, so uncertain internal links are omitted.

Main entry points: [`backend/app/main.py`](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/main.py) (FastAPI app), [`backend/app/application/code_agent/agent_loop.py`](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/code_agent/agent_loop.py) (Code-agent loop), [`backend/app/infrastructure/llm/openai_compatible.py`](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/infrastructure/llm/openai_compatible.py) (Local model client), [`frontend/src/App.tsx`](https://github.com/johnivanov092-glitch/elira_ai/blob/main/frontend/src/App.tsx) (React workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Workspace clients"]
  node_ui["React workspace<br/>[App.tsx]"]
  node_clientapi["API client<br/>[client.ts]"]
  node_desktop["Tauri shell<br/>[main.rs]"]
end

subgraph group_api["Backend API"]
  node_app["FastAPI app<br/>[main.py]"]
  node_chatapi["Chat routes<br/>[chat_agent.py]"]
  node_codeapi["Code-agent routes"]
  node_workflowapi["Workflow routes<br/>[workflow_routes.py]"]
end

subgraph group_agents["Agent runtime"]
  node_chat["Chat runtime<br/>[runtime.py]"]
  node_agent["Code-agent loop<br/>[agent_loop.py]"]
  node_executor["Tool executor<br/>[executor.py]"]
  node_registry["Tool registry<br/>[runtime.py]"]
end

subgraph group_capabilities["Workspace capabilities"]
  node_workflows["Workflow engine<br/>[runtime.py]"]
  node_web["Web search<br/>[runtime.py]"]
  node_memory["Memory services<br/>[service.py]"]
  node_media["Media processing<br/>[processing.py]"]
  node_library["Knowledge library<br/>[runtime.py]"]
end

subgraph group_state["State and providers"]
  node_db[("SQLite state<br/>[connection.py]")]
  node_model["Local model client"]
end

node_user(("Workspace user"))
node_inference["Inference server"]

node_user -->|"uses"| node_ui
node_ui -->|"requests"| node_clientapi
node_clientapi -->|"HTTP API"| node_app
node_desktop -->|"starts backend"| node_app
node_app -->|"mounts routes"| node_chatapi
node_app -->|"mounts routes"| node_codeapi
node_app -->|"mounts routes"| node_workflowapi
node_chatapi -->|"dispatches"| node_chat
node_codeapi -->|"starts and streams"| node_agent
node_workflowapi -->|"dispatches"| node_workflows
node_agent -->|"executes tools"| node_executor
node_executor -->|"resolves tools"| node_registry
node_chat -->|"requests inference"| node_model
node_agent -->|"requests inference"| node_model
node_model -->|"OpenAI-compatible API"| node_inference
node_workflows -->|"persists runs"| node_db
node_memory -->|"stores memory"| node_db
node_web -.-> node_inference

click node_ui "https://github.com/johnivanov092-glitch/elira_ai/blob/main/frontend/src/App.tsx"
click node_clientapi "https://github.com/johnivanov092-glitch/elira_ai/blob/main/frontend/src/api/client.ts"
click node_desktop "https://github.com/johnivanov092-glitch/elira_ai/blob/main/src-tauri/src/main.rs"
click node_app "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/main.py"
click node_chatapi "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/api/routes/chat_agent.py"
click node_codeapi "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/api/routes/code_agent_routes.py"
click node_workflowapi "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/api/routes/workflow_routes.py"
click node_chat "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/chat/runtime.py"
click node_agent "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/code_agent/agent_loop.py"
click node_executor "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/agent_kernel/executor.py"
click node_registry "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/tool_registry/runtime.py"
click node_workflows "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/workflows/runtime.py"
click node_web "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/web_search/runtime.py"
click node_memory "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/memory/service.py"
click node_media "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/media/processing.py"
click node_library "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/library/runtime.py"
click node_db "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/infrastructure/db/connection.py"
click node_model "https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/infrastructure/llm/openai_compatible.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ui,node_clientapi,node_desktop,node_user toneBlue
class node_app,node_chatapi,node_codeapi,node_workflowapi toneAmber
class node_chat,node_agent,node_executor,node_registry,node_inference toneMint
class node_workflows,node_web,node_memory,node_media,node_library toneRose
class node_db,node_model toneIndigo
```

## Components

### Workspace clients

- [React workspace](https://github.com/johnivanov092-glitch/elira_ai/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [API client](https://github.com/johnivanov092-glitch/elira_ai/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`
- [Tauri shell](https://github.com/johnivanov092-glitch/elira_ai/blob/main/src-tauri/src/main.rs): `src-tauri/src/main.rs`

### Backend API

- [FastAPI app](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/main.py): `backend/app/main.py`
- [Chat routes](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/api/routes/chat_agent.py): `backend/app/api/routes/chat_agent.py`
- [Code-agent routes](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/api/routes/code_agent_routes.py): `backend/app/api/routes/code_agent_routes.py`
- [Workflow routes](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/api/routes/workflow_routes.py): `backend/app/api/routes/workflow_routes.py`

### Agent runtime

- [Chat runtime](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/chat/runtime.py): `backend/app/application/chat/runtime.py`
- [Code-agent loop](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/code_agent/agent_loop.py): `backend/app/application/code_agent/agent_loop.py`
- [Tool executor](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/agent_kernel/executor.py): `backend/app/application/agent_kernel/executor.py`
- [Tool registry](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/tool_registry/runtime.py): `backend/app/application/tool_registry/runtime.py`

### Workspace capabilities

- [Workflow engine](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/workflows/runtime.py): `backend/app/application/workflows/runtime.py`
- [Web search](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/web_search/runtime.py): `backend/app/application/web_search/runtime.py`
- [Memory services](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/memory/service.py): `backend/app/application/memory/service.py`
- [Media processing](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/media/processing.py): `backend/app/application/media/processing.py`
- [Knowledge library](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/application/library/runtime.py): `backend/app/application/library/runtime.py`

### State and providers

- [SQLite state](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/infrastructure/db/connection.py): `backend/app/infrastructure/db/connection.py`
- [Local model client](https://github.com/johnivanov092-glitch/elira_ai/blob/main/backend/app/infrastructure/llm/openai_compatible.py): `backend/app/infrastructure/llm/openai_compatible.py`

### Other components

- **Workspace user**
- **Inference server**

## Connections

- Workspace user → React workspace: uses
- React workspace → API client: requests
- API client → FastAPI app: HTTP API
- Tauri shell → FastAPI app: starts backend
- FastAPI app → Chat routes: mounts routes
- FastAPI app → Code-agent routes: mounts routes
- FastAPI app → Workflow routes: mounts routes
- Chat routes → Chat runtime: dispatches
- Code-agent routes → Code-agent loop: starts and streams
- Workflow routes → Workflow engine: dispatches
- Code-agent loop → Tool executor: executes tools
- Tool executor → Tool registry: resolves tools
- Chat runtime → Local model client: requests inference
- Code-agent loop → Local model client: requests inference
- Local model client → Inference server: OpenAI-compatible API
- Workflow engine → SQLite state: persists runs
- Memory services → SQLite state: stores memory
- Web search → Inference server
