# srelens/srelens architecture

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

- Interactive diagram: https://gitdiagram.com/srelens/srelens
- Repository: https://github.com/srelens/srelens

## Overview

srelens is a local-first Kubernetes control room offered as a Tauri desktop app, terminal UI, and multi-user web app. Engineers connect cluster contexts, investigate live resources and operational signals, then edit or act; the same supported capabilities can be exposed to MCP clients. The map preserves these distinct surfaces and the shared Kubernetes, streaming, and capability layers. README documents the major features; sampled source confirms selected transport, storage, stream, and authentication behavior, so unsampled subsystem links are limited to documented relationships.

Main entry points: [`apps/desktop/src/components`](https://github.com/srelens/srelens/tree/dev/apps/desktop/src/components) (Desktop views), [`apps/desktop/src-tauri/src/lib.rs`](https://github.com/srelens/srelens/blob/dev/apps/desktop/src-tauri/src/lib.rs) (Desktop backend), [`crates/capability/src/lib.rs`](https://github.com/srelens/srelens/blob/dev/crates/capability/src/lib.rs) (Capability registry), [`apps/desktop/src/App.tsx`](https://github.com/srelens/srelens/blob/dev/apps/desktop/src/App.tsx) (Desktop workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_surfaces["User surfaces"]
  node_desktop["Desktop workspace<br/>[App.tsx]"]
  node_desktop_ui["Desktop views"]
  node_tui["Terminal UI<br/>[app.rs]"]
  node_web_ui["Web workspace"]
end

subgraph group_investigation["Cluster investigation"]
  node_cluster_setup["Cluster contexts<br/>[contexts.rs]"]
  node_resource_views["Live resources<br/>[workloads.rs]"]
  node_resource_detail["Resource inspection<br/>[ResourceDetail.tsx]"]
  node_signals["Logs and metrics<br/>[logs.rs]"]
  node_topology["Topology and events<br/>[topology.rs]"]
end

subgraph group_operations["Operations"]
  node_yaml_edit["YAML editing<br/>[manifest.rs]"]
  node_actions["Cluster actions<br/>[actions.rs]"]
  node_helm["Helm releases<br/>[helm.rs]"]
  node_terminals["Exec and forwards<br/>[exec.rs]"]
  node_toolbox["Toolbox<br/>[toolbox.rs]"]
end

subgraph group_shared["Shared runtime"]
  node_core["Core transport<br/>[transport.ts]"]
  node_desktop_backend["Desktop backend<br/>[lib.rs]"]
  node_capabilities["Capability registry<br/>[lib.rs]"]
  node_streams["Stream manager<br/>[app.rs]"]
end

subgraph group_services["Web and agents"]
  node_web_server["Web server<br/>[api.rs]"]
  node_web_auth["Web authentication<br/>[routes.rs]"]
  node_server_db[("Server database<br/>[db.rs]")]
  node_mcp["MCP server<br/>[lib.rs]"]
  node_llm{{"LLM providers<br/>[client.rs]"}}
  node_extensions["Extensions<br/>[extensions.rs]"]
end

node_engineer(("Engineer"))
node_web_user(("Web user"))
node_kube_api{{"Kubernetes API"}}
node_kubeconfig["Local kubeconfig"]
node_mcp_client(("MCP client"))

node_engineer -->|"uses"| node_desktop
node_desktop -->|"renders"| node_desktop_ui
node_desktop -->|"uses"| node_core
node_core -->|"invokes"| node_desktop_backend
node_engineer -->|"uses"| node_tui
node_web_user -->|"uses"| node_web_ui
node_web_ui -->|"requests"| node_web_server
node_web_server -->|"authenticates"| node_web_auth
node_web_auth -->|"reads and writes"| node_server_db
node_desktop_backend -->|"dispatches"| node_capabilities
node_tui -->|"uses"| node_capabilities
node_web_server -->|"serves"| node_capabilities
node_capabilities -->|"resolves contexts"| node_cluster_setup
node_cluster_setup -->|"loads credentials"| node_kubeconfig
node_resource_views -->|"queries and watches"| node_kube_api
node_cluster_setup -->|"connects"| node_kube_api
node_desktop_ui -->|"browses"| node_resource_views
node_desktop_ui -->|"inspects"| node_resource_detail
node_desktop_ui -->|"views"| node_signals
node_desktop_ui -->|"views"| node_topology
node_desktop_ui -->|"edits manifests"| node_yaml_edit
node_yaml_edit -->|"applies manifests"| node_kube_api
node_desktop_ui -->|"requests actions"| node_actions
node_actions -->|"mutates resources"| node_kube_api
node_desktop_ui -->|"manages releases"| node_helm
node_helm -->|"operates on"| node_kube_api
node_desktop_ui -->|"opens sessions"| node_terminals
node_terminals -->|"streams through"| node_kube_api
node_desktop_ui -->|"manages tools"| node_toolbox
node_desktop_backend -->|"owns streams"| node_streams
node_streams -->|"emits events"| node_desktop_backend
node_mcp_client -->|"sends requests"| node_mcp
node_mcp -->|"dispatches tools"| node_capabilities
node_mcp -.->|"uses provider"| node_llm
node_desktop -.->|"starts optional server"| node_mcp
node_desktop_backend -.->|"loads extensions"| node_extensions

click node_desktop "https://github.com/srelens/srelens/blob/dev/apps/desktop/src/App.tsx"
click node_desktop_ui "https://github.com/srelens/srelens/tree/dev/apps/desktop/src/components"
click node_tui "https://github.com/srelens/srelens/blob/dev/apps/tui/src/app.rs"
click node_web_ui "https://github.com/srelens/srelens/tree/dev/packages/ui-next/src"
click node_cluster_setup "https://github.com/srelens/srelens/blob/dev/crates/kube/src/contexts.rs"
click node_resource_views "https://github.com/srelens/srelens/blob/dev/crates/kube/src/workloads.rs"
click node_resource_detail "https://github.com/srelens/srelens/blob/dev/apps/desktop/src/components/ResourceDetail.tsx"
click node_signals "https://github.com/srelens/srelens/blob/dev/crates/kube/src/logs.rs"
click node_topology "https://github.com/srelens/srelens/blob/dev/crates/kube/src/topology.rs"
click node_yaml_edit "https://github.com/srelens/srelens/blob/dev/crates/kube/src/manifest.rs"
click node_actions "https://github.com/srelens/srelens/blob/dev/crates/kube/src/actions.rs"
click node_helm "https://github.com/srelens/srelens/blob/dev/crates/kube/src/helm.rs"
click node_terminals "https://github.com/srelens/srelens/blob/dev/crates/streams/src/exec.rs"
click node_toolbox "https://github.com/srelens/srelens/blob/dev/crates/kube/src/toolbox.rs"
click node_core "https://github.com/srelens/srelens/blob/dev/packages/core/src/transport/transport.ts"
click node_desktop_backend "https://github.com/srelens/srelens/blob/dev/apps/desktop/src-tauri/src/lib.rs"
click node_capabilities "https://github.com/srelens/srelens/blob/dev/crates/capability/src/lib.rs"
click node_streams "https://github.com/srelens/srelens/blob/dev/crates/streams/src/app.rs"
click node_web_server "https://github.com/srelens/srelens/blob/dev/crates/server/src/api.rs"
click node_web_auth "https://github.com/srelens/srelens/blob/dev/crates/server/src/auth/routes.rs"
click node_server_db "https://github.com/srelens/srelens/blob/dev/crates/server/src/db.rs"
click node_mcp "https://github.com/srelens/srelens/blob/dev/crates/mcp/src/lib.rs"
click node_llm "https://github.com/srelens/srelens/blob/dev/crates/llm/src/client.rs"
click node_extensions "https://github.com/srelens/srelens/blob/dev/crates/registry/src/extensions.rs"

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_desktop_ui,node_tui,node_web_ui,node_web_user,node_mcp_client toneBlue
class node_cluster_setup,node_resource_views,node_resource_detail,node_signals,node_topology toneAmber
class node_yaml_edit,node_actions,node_helm,node_terminals,node_toolbox,node_kube_api toneMint
class node_core,node_desktop_backend,node_capabilities,node_streams toneRose
class node_web_server,node_web_auth,node_server_db,node_mcp,node_llm,node_extensions,node_engineer,node_kubeconfig toneIndigo
```

## Components

### User surfaces

- [Desktop workspace](https://github.com/srelens/srelens/blob/dev/apps/desktop/src/App.tsx): `apps/desktop/src/App.tsx`
- [Desktop views](https://github.com/srelens/srelens/tree/dev/apps/desktop/src/components): `apps/desktop/src/components`
- [Terminal UI](https://github.com/srelens/srelens/blob/dev/apps/tui/src/app.rs): `apps/tui/src/app.rs`
- [Web workspace](https://github.com/srelens/srelens/tree/dev/packages/ui-next/src): `packages/ui-next/src`

### Cluster investigation

- [Cluster contexts](https://github.com/srelens/srelens/blob/dev/crates/kube/src/contexts.rs): `crates/kube/src/contexts.rs`
- [Live resources](https://github.com/srelens/srelens/blob/dev/crates/kube/src/workloads.rs): `crates/kube/src/workloads.rs`
- [Resource inspection](https://github.com/srelens/srelens/blob/dev/apps/desktop/src/components/ResourceDetail.tsx): `apps/desktop/src/components/ResourceDetail.tsx`
- [Logs and metrics](https://github.com/srelens/srelens/blob/dev/crates/kube/src/logs.rs): `crates/kube/src/logs.rs`
- [Topology and events](https://github.com/srelens/srelens/blob/dev/crates/kube/src/topology.rs): `crates/kube/src/topology.rs`

### Operations

- [YAML editing](https://github.com/srelens/srelens/blob/dev/crates/kube/src/manifest.rs): `crates/kube/src/manifest.rs`
- [Cluster actions](https://github.com/srelens/srelens/blob/dev/crates/kube/src/actions.rs): `crates/kube/src/actions.rs`
- [Helm releases](https://github.com/srelens/srelens/blob/dev/crates/kube/src/helm.rs): `crates/kube/src/helm.rs`
- [Exec and forwards](https://github.com/srelens/srelens/blob/dev/crates/streams/src/exec.rs): `crates/streams/src/exec.rs`
- [Toolbox](https://github.com/srelens/srelens/blob/dev/crates/kube/src/toolbox.rs): `crates/kube/src/toolbox.rs`

### Shared runtime

- [Core transport](https://github.com/srelens/srelens/blob/dev/packages/core/src/transport/transport.ts): `packages/core/src/transport/transport.ts`
- [Desktop backend](https://github.com/srelens/srelens/blob/dev/apps/desktop/src-tauri/src/lib.rs): `apps/desktop/src-tauri/src/lib.rs`
- [Capability registry](https://github.com/srelens/srelens/blob/dev/crates/capability/src/lib.rs): `crates/capability/src/lib.rs`
- [Stream manager](https://github.com/srelens/srelens/blob/dev/crates/streams/src/app.rs): `crates/streams/src/app.rs`

### Web and agents

- [Web server](https://github.com/srelens/srelens/blob/dev/crates/server/src/api.rs): `crates/server/src/api.rs`
- [Web authentication](https://github.com/srelens/srelens/blob/dev/crates/server/src/auth/routes.rs): `crates/server/src/auth/routes.rs`
- [Server database](https://github.com/srelens/srelens/blob/dev/crates/server/src/db.rs): `crates/server/src/db.rs`
- [MCP server](https://github.com/srelens/srelens/blob/dev/crates/mcp/src/lib.rs): `crates/mcp/src/lib.rs`
- [LLM providers](https://github.com/srelens/srelens/blob/dev/crates/llm/src/client.rs): `crates/llm/src/client.rs`
- [Extensions](https://github.com/srelens/srelens/blob/dev/crates/registry/src/extensions.rs): `crates/registry/src/extensions.rs`

### Other components

- **Engineer**
- **Web user**
- **Kubernetes API**
- **Local kubeconfig**
- **MCP client**

## Connections

- Engineer → Desktop workspace: uses
- Desktop workspace → Desktop views: renders
- Desktop workspace → Core transport: uses
- Core transport → Desktop backend: invokes
- Engineer → Terminal UI: uses
- Web user → Web workspace: uses
- Web workspace → Web server: requests
- Web server → Web authentication: authenticates
- Web authentication → Server database: reads and writes
- Desktop backend → Capability registry: dispatches
- Terminal UI → Capability registry: uses
- Web server → Capability registry: serves
- Capability registry → Cluster contexts: resolves contexts
- Cluster contexts → Local kubeconfig: loads credentials
- Live resources → Kubernetes API: queries and watches
- Cluster contexts → Kubernetes API: connects
- Desktop views → Live resources: browses
- Desktop views → Resource inspection: inspects
- Desktop views → Logs and metrics: views
- Desktop views → Topology and events: views
- Desktop views → YAML editing: edits manifests
- YAML editing → Kubernetes API: applies manifests
- Desktop views → Cluster actions: requests actions
- Cluster actions → Kubernetes API: mutates resources
- Desktop views → Helm releases: manages releases
- Helm releases → Kubernetes API: operates on
- Desktop views → Exec and forwards: opens sessions
- Exec and forwards → Kubernetes API: streams through
- Desktop views → Toolbox: manages tools
- Desktop backend → Stream manager: owns streams
- Stream manager → Desktop backend: emits events
- MCP client → MCP server: sends requests
- MCP server → Capability registry: dispatches tools
- MCP server → LLM providers: uses provider
- Desktop workspace → MCP server: starts optional server
- Desktop backend → Extensions: loads extensions
