# niko1221/strata architecture

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

- Interactive diagram: https://gitdiagram.com/niko1221/strata
- Repository: https://github.com/niko1221/strata

## Overview

Strata is a local-AI desktop and terminal product: users choose or import a model, run it on their own hardware, and interact through chat or compatible coding tools. The graph preserves the documented model/setup, multimodal chat, monitoring, tuning, and integration capabilities. Several runtime modules are unsampled; directory-level nodes and README-supported links represent those areas without implying inspected internals.

Main entry points: [`apps/host/src`](https://github.com/niko1221/strata/tree/main/apps/host/src) (Host UI), [`src/core/session.cpp`](https://github.com/niko1221/strata/blob/main/src/core/session.cpp) (Inference Engine), [`strata_cli/launch/app.py`](https://github.com/niko1221/strata/blob/main/strata_cli/launch/app.py) (Terminal Launcher), [`apps/host/src/screens/Chat.tsx`](https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Chat.tsx) (Chat)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User Interfaces"]
  node_desktop["Desktop Shell<br/>[shell.rs]"]
  node_hostui["Host UI"]
  node_terminal["Terminal Launcher<br/>[app.py]"]
  node_api["Compatible API"]
end

subgraph group_models["Models and Setup"]
  node_modelsetup["Model Setup<br/>[Setup.tsx]"]
  node_modelcatalog["Model Catalog<br/>[models.mjs]"]
  node_localmodels["Local Model Files<br/>[local-models.mjs]"]
  node_enginecheck["Engine Resolver"]
end

subgraph group_runtime["Inference Runtime"]
  node_engine["Inference Engine<br/>[session.cpp]"]
  node_session["Conversation State<br/>[session.hpp]"]
  node_prefill["Prompt Prefill<br/>[prefill.cpp]"]
  node_specdecode["Speculative Decoding<br/>[controller.cpp]"]
end

subgraph group_workflows["Workflows and Tools"]
  node_chat["Chat<br/>[Chat.tsx]"]
  node_media["Image and File Input<br/>[chat-images.mjs]"]
  node_agent["Agent Tools"]
  node_tasks["Tasks<br/>[Tasks.tsx]"]
  node_artifacts["Artifacts and Preview<br/>[artifacts.mjs]"]
  node_monitor["Hardware Monitor<br/>[Monitor.tsx]"]
  node_tuning["Model Tuning<br/>[Tuning.tsx]"]
end

subgraph group_updates["Updates and Components"]
  node_updater["Component Updater<br/>[updater.py]"]
  node_feed["Signed Update Feed<br/>[feed.py]"]
  node_signing["Signature Verification<br/>[signing.py]"]
  node_transfer["Package Transfer<br/>[transfer.py]"]
  node_components["Component Activation<br/>[components.py]"]
end

node_user(("User"))
node_codingtools["Coding Tools"]
node_hardware["Local Hardware"]

node_user -->|"opens app"| node_desktop
node_user -->|"launches"| node_terminal
node_user -->|"uses with"| node_codingtools
node_codingtools -->|"sends requests"| node_api
node_desktop -.->|"hosts interface"| node_hostui
node_hostui -.->|"opens setup"| node_modelsetup
node_terminal -->|"guides setup"| node_modelsetup
node_modelsetup -.->|"selects model"| node_modelcatalog
node_modelsetup -.->|"uses model files"| node_localmodels
node_terminal -->|"checks engine"| node_enginecheck
node_enginecheck -->|"checks compatibility"| node_hardware
node_hostui -->|"opens chat"| node_chat
node_chat -->|"attaches media"| node_media
node_chat -->|"uses tools"| node_agent
node_chat -.->|"submits prompts"| node_api
node_api -->|"serves inference"| node_engine
node_terminal -->|"runs model"| node_engine
node_engine -->|"maintains conversation"| node_session
node_engine -.->|"processes prompts"| node_prefill
node_engine -.->|"may use decoding"| node_specdecode
node_hostui -->|"opens tasks"| node_tasks
node_hostui -->|"shows outputs"| node_artifacts
node_hostui -->|"shows activity"| node_monitor
node_hostui -.->|"tunes model"| node_tuning
node_user -.->|"requests update"| node_updater
node_updater -->|"reads feed"| node_feed
node_feed -->|"verifies signature"| node_signing
node_updater -->|"fetches packages"| node_transfer
node_updater -->|"activates package"| node_components
node_transfer -.->|"provides archive"| node_components

click node_desktop "https://github.com/niko1221/strata/blob/main/apps/desktop/src-tauri/src/shell.rs"
click node_hostui "https://github.com/niko1221/strata/tree/main/apps/host/src"
click node_terminal "https://github.com/niko1221/strata/blob/main/strata_cli/launch/app.py"
click node_api "https://github.com/niko1221/strata/tree/main/apps/host/server"
click node_modelsetup "https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Setup.tsx"
click node_modelcatalog "https://github.com/niko1221/strata/blob/main/apps/host/server/models.mjs"
click node_localmodels "https://github.com/niko1221/strata/blob/main/apps/host/server/local-models.mjs"
click node_enginecheck "https://github.com/niko1221/strata/blob/main/strata_control/engine_component.py"
click node_chat "https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Chat.tsx"
click node_media "https://github.com/niko1221/strata/blob/main/apps/host/server/chat-images.mjs"
click node_agent "https://github.com/niko1221/strata/tree/main/apps/host/server/agent"
click node_tasks "https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Tasks.tsx"
click node_artifacts "https://github.com/niko1221/strata/blob/main/apps/host/server/artifacts.mjs"
click node_monitor "https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Monitor.tsx"
click node_tuning "https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Tuning.tsx"
click node_engine "https://github.com/niko1221/strata/blob/main/src/core/session.cpp"
click node_session "https://github.com/niko1221/strata/blob/main/include/strata/core/session.hpp"
click node_prefill "https://github.com/niko1221/strata/blob/main/src/prefill/prefill.cpp"
click node_specdecode "https://github.com/niko1221/strata/blob/main/src/spec/controller.cpp"
click node_updater "https://github.com/niko1221/strata/blob/main/strata_control/updater.py"
click node_feed "https://github.com/niko1221/strata/blob/main/strata_control/feed.py"
click node_signing "https://github.com/niko1221/strata/blob/main/strata_control/signing.py"
click node_transfer "https://github.com/niko1221/strata/blob/main/strata_control/transfer.py"
click node_components "https://github.com/niko1221/strata/blob/main/strata_control/components.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_desktop,node_hostui,node_terminal,node_api,node_user toneBlue
class node_modelsetup,node_modelcatalog,node_localmodels,node_enginecheck toneAmber
class node_engine,node_session,node_prefill,node_specdecode toneMint
class node_chat,node_media,node_agent,node_tasks,node_artifacts,node_monitor,node_tuning toneRose
class node_updater,node_feed,node_signing,node_transfer,node_components,node_codingtools,node_hardware toneIndigo
```

## Components

### User Interfaces

- [Desktop Shell](https://github.com/niko1221/strata/blob/main/apps/desktop/src-tauri/src/shell.rs): `apps/desktop/src-tauri/src/shell.rs`
- [Host UI](https://github.com/niko1221/strata/tree/main/apps/host/src): `apps/host/src`
- [Terminal Launcher](https://github.com/niko1221/strata/blob/main/strata_cli/launch/app.py): `strata_cli/launch/app.py`
- [Compatible API](https://github.com/niko1221/strata/tree/main/apps/host/server): `apps/host/server`

### Models and Setup

- [Model Setup](https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Setup.tsx): `apps/host/src/screens/Setup.tsx`
- [Model Catalog](https://github.com/niko1221/strata/blob/main/apps/host/server/models.mjs): `apps/host/server/models.mjs`
- [Local Model Files](https://github.com/niko1221/strata/blob/main/apps/host/server/local-models.mjs): `apps/host/server/local-models.mjs`
- [Engine Resolver](https://github.com/niko1221/strata/blob/main/strata_control/engine_component.py): `strata_control/engine_component.py`

### Inference Runtime

- [Inference Engine](https://github.com/niko1221/strata/blob/main/src/core/session.cpp): `src/core/session.cpp`
- [Conversation State](https://github.com/niko1221/strata/blob/main/include/strata/core/session.hpp): `include/strata/core/session.hpp`
- [Prompt Prefill](https://github.com/niko1221/strata/blob/main/src/prefill/prefill.cpp): `src/prefill/prefill.cpp`
- [Speculative Decoding](https://github.com/niko1221/strata/blob/main/src/spec/controller.cpp): `src/spec/controller.cpp`

### Workflows and Tools

- [Chat](https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Chat.tsx): `apps/host/src/screens/Chat.tsx`
- [Image and File Input](https://github.com/niko1221/strata/blob/main/apps/host/server/chat-images.mjs): `apps/host/server/chat-images.mjs`
- [Agent Tools](https://github.com/niko1221/strata/tree/main/apps/host/server/agent): `apps/host/server/agent`
- [Tasks](https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Tasks.tsx): `apps/host/src/screens/Tasks.tsx`
- [Artifacts and Preview](https://github.com/niko1221/strata/blob/main/apps/host/server/artifacts.mjs): `apps/host/server/artifacts.mjs`
- [Hardware Monitor](https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Monitor.tsx): `apps/host/src/screens/Monitor.tsx`
- [Model Tuning](https://github.com/niko1221/strata/blob/main/apps/host/src/screens/Tuning.tsx): `apps/host/src/screens/Tuning.tsx`

### Updates and Components

- [Component Updater](https://github.com/niko1221/strata/blob/main/strata_control/updater.py): `strata_control/updater.py`
- [Signed Update Feed](https://github.com/niko1221/strata/blob/main/strata_control/feed.py): `strata_control/feed.py`
- [Signature Verification](https://github.com/niko1221/strata/blob/main/strata_control/signing.py): `strata_control/signing.py`
- [Package Transfer](https://github.com/niko1221/strata/blob/main/strata_control/transfer.py): `strata_control/transfer.py`
- [Component Activation](https://github.com/niko1221/strata/blob/main/strata_control/components.py): `strata_control/components.py`

### Other components

- **User**
- **Coding Tools**
- **Local Hardware**

## Connections

- User → Desktop Shell: opens app (evidence: `README.md`)
- User → Terminal Launcher: launches (evidence: `README.md`)
- User → Coding Tools: uses with (evidence: `README.md`)
- Coding Tools → Compatible API: sends requests (evidence: `README.md`)
- Desktop Shell → Host UI: hosts interface (evidence: `README.md`)
- Host UI → Model Setup: opens setup (evidence: `README.md`)
- Terminal Launcher → Model Setup: guides setup (evidence: `README.md`)
- Model Setup → Model Catalog: selects model (evidence: `README.md`)
- Model Setup → Local Model Files: uses model files (evidence: `README.md`)
- Terminal Launcher → Engine Resolver: checks engine (evidence: `strata_cli/launch/app.py`)
- Engine Resolver → Local Hardware: checks compatibility
- Host UI → Chat: opens chat (evidence: `README.md`)
- Chat → Image and File Input: attaches media (evidence: `README.md`)
- Chat → Agent Tools: uses tools (evidence: `README.md`)
- Chat → Compatible API: submits prompts (evidence: `README.md`)
- Compatible API → Inference Engine: serves inference (evidence: `README.md`)
- Terminal Launcher → Inference Engine: runs model (evidence: `README.md`)
- Inference Engine → Conversation State: maintains conversation
- Inference Engine → Prompt Prefill: processes prompts
- Inference Engine → Speculative Decoding: may use decoding
- Host UI → Tasks: opens tasks (evidence: `README.md`)
- Host UI → Artifacts and Preview: shows outputs (evidence: `README.md`)
- Host UI → Hardware Monitor: shows activity (evidence: `README.md`)
- Host UI → Model Tuning: tunes model
- User → Component Updater: requests update (evidence: `strata_control/updater.py`)
- Component Updater → Signed Update Feed: reads feed (evidence: `strata_control/updater.py`)
- Signed Update Feed → Signature Verification: verifies signature (evidence: `strata_control/feed.py`)
- Component Updater → Package Transfer: fetches packages (evidence: `strata_control/updater.py`)
- Component Updater → Component Activation: activates package (evidence: `strata_control/updater.py`)
- Package Transfer → Component Activation: provides archive
