# nolane-x/nolane-localview architecture

> Architecture diagram of the GitHub repository nolane-x/nolane-localview, 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/nolane-x/nolane-localview
- Repository: https://github.com/nolane-x/nolane-localview

## Overview

LocalView is a local-first runtime for inspecting localhost applications and verifying bounded interactions. Its documented workflow discovers an app, observes semantic, visual, and runtime state, correlates evidence with source, then permits planned actions and checks fresh post-action evidence. The README documents additional diagnostics, analysis, and trusted-fix capabilities. Sampled code confirms daemon discovery/session reconciliation, MCP control-plane requests, and native-executor polling; subsystem links beyond those excerpts follow the README’s stated responsibilities.

Main entry points: [`crates/observation/src/lib.rs`](https://github.com/nolane-x/nolane-localview/blob/main/crates/observation/src/lib.rs) (Semantic observation), [`crates/control/src/lib.rs`](https://github.com/nolane-x/nolane-localview/blob/main/crates/control/src/lib.rs) (Control plane), [`apps/desktop/src/App.tsx`](https://github.com/nolane-x/nolane-localview/blob/main/apps/desktop/src/App.tsx) (Desktop UI), [`crates/verification/src/lib.rs`](https://github.com/nolane-x/nolane-localview/blob/main/crates/verification/src/lib.rs) (Post-action verification)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_desktop["Desktop UI<br/>[App.tsx]"]
  node_cli["CLI<br/>[main.rs]"]
  node_mcp["MCP bridge<br/>[main.rs]"]
end

subgraph group_runtime["Discovery and runtime"]
  node_daemon["Local daemon<br/>[main.rs]"]
  node_discovery["App discovery<br/>[lib.rs]"]
  node_sessions[("Session identity<br/>[lib.rs]")]
  node_control["Control plane<br/>[lib.rs]"]
end

subgraph group_observe["Observation and analysis"]
  node_observation["Semantic observation<br/>[lib.rs]"]
  node_native["Native providers<br/>[lib.rs]"]
  node_capture["Visual capture<br/>[lib.rs]"]
  node_analysis["Layout and responsive<br/>[lib.rs]"]
  node_source["Source correlation<br/>[lib.rs]"]
  node_diagnostics["Runtime diagnostics<br/>[lib.rs]"]
end

subgraph group_actions["Bounded actions"]
  node_planner["Action planning<br/>[lib.rs]"]
  node_bridge["Action bridge<br/>[lib.rs]"]
end

subgraph group_proof["Evidence and verification"]
  node_verification["Post-action verification<br/>[lib.rs]"]
  node_evidence[("Evidence artifacts<br/>[lib.rs]")]
  node_trustedfix["Trusted Fix<br/>[trusted_fix.rs]"]
end

node_developer(("Developer"))
node_agent(("Coding agent"))
node_localhost["Localhost app"]

node_developer -->|"inspect through"| node_desktop
node_developer -->|"automate with"| node_cli
node_agent -->|"request tools"| node_mcp
node_desktop -->|"use control plane"| node_control
node_cli -->|"send requests"| node_control
node_mcp -->|"send requests"| node_control
node_daemon -->|"serve"| node_control
node_daemon -->|"scan apps"| node_discovery
node_daemon -->|"reconcile sessions"| node_sessions
node_localhost -->|"probe"| node_discovery
node_control -->|"resolve session"| node_sessions
node_control -->|"publish state"| node_observation
node_observation -->|"acquire semantics"| node_native
node_observation -->|"capture pixels"| node_capture
node_observation -->|"analyze state"| node_analysis
node_observation -->|"correlate ownership"| node_source
node_observation -->|"analyze events"| node_diagnostics
node_desktop -->|"plan action"| node_planner
node_cli -->|"plan action"| node_planner
node_mcp -->|"plan action"| node_planner
node_planner -->|"authorize dispatch"| node_bridge
node_bridge -->|"dispatch action"| node_native
node_bridge -->|"request fresh check"| node_verification
node_verification -->|"observe afterward"| node_observation
node_verification -->|"record receipt"| node_evidence
node_observation -->|"retain evidence"| node_evidence
node_desktop -->|"review fix"| node_trustedfix
node_trustedfix -->|"verify fix"| node_verification

click node_desktop "https://github.com/nolane-x/nolane-localview/blob/main/apps/desktop/src/App.tsx"
click node_cli "https://github.com/nolane-x/nolane-localview/blob/main/apps/cli/src/main.rs"
click node_mcp "https://github.com/nolane-x/nolane-localview/blob/main/integrations/mcp/src/main.rs"
click node_daemon "https://github.com/nolane-x/nolane-localview/blob/main/apps/daemon/src/main.rs"
click node_discovery "https://github.com/nolane-x/nolane-localview/blob/main/crates/discovery/src/lib.rs"
click node_sessions "https://github.com/nolane-x/nolane-localview/blob/main/crates/sessions/src/lib.rs"
click node_control "https://github.com/nolane-x/nolane-localview/blob/main/crates/control/src/lib.rs"
click node_observation "https://github.com/nolane-x/nolane-localview/blob/main/crates/observation/src/lib.rs"
click node_native "https://github.com/nolane-x/nolane-localview/blob/main/crates/native-provider/src/lib.rs"
click node_capture "https://github.com/nolane-x/nolane-localview/blob/main/crates/native-capture/src/lib.rs"
click node_analysis "https://github.com/nolane-x/nolane-localview/blob/main/crates/live-analysis/src/lib.rs"
click node_source "https://github.com/nolane-x/nolane-localview/blob/main/crates/source-map/src/lib.rs"
click node_diagnostics "https://github.com/nolane-x/nolane-localview/blob/main/crates/diagnostics/src/lib.rs"
click node_planner "https://github.com/nolane-x/nolane-localview/blob/main/crates/planner/src/lib.rs"
click node_bridge "https://github.com/nolane-x/nolane-localview/blob/main/crates/live-bridge/src/lib.rs"
click node_verification "https://github.com/nolane-x/nolane-localview/blob/main/crates/verification/src/lib.rs"
click node_evidence "https://github.com/nolane-x/nolane-localview/blob/main/crates/evidence/src/lib.rs"
click node_trustedfix "https://github.com/nolane-x/nolane-localview/blob/main/apps/desktop/src-tauri/src/trusted_fix.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_cli,node_mcp toneBlue
class node_daemon,node_discovery,node_sessions,node_control toneAmber
class node_observation,node_native,node_capture,node_analysis,node_source,node_diagnostics toneMint
class node_planner,node_bridge toneRose
class node_verification,node_evidence,node_trustedfix,node_developer,node_agent,node_localhost toneIndigo
```

## Components

### User interfaces

- [Desktop UI](https://github.com/nolane-x/nolane-localview/blob/main/apps/desktop/src/App.tsx): `apps/desktop/src/App.tsx`
- [CLI](https://github.com/nolane-x/nolane-localview/blob/main/apps/cli/src/main.rs): `apps/cli/src/main.rs`
- [MCP bridge](https://github.com/nolane-x/nolane-localview/blob/main/integrations/mcp/src/main.rs): `integrations/mcp/src/main.rs`

### Discovery and runtime

- [Local daemon](https://github.com/nolane-x/nolane-localview/blob/main/apps/daemon/src/main.rs): `apps/daemon/src/main.rs`
- [App discovery](https://github.com/nolane-x/nolane-localview/blob/main/crates/discovery/src/lib.rs): `crates/discovery/src/lib.rs`
- [Session identity](https://github.com/nolane-x/nolane-localview/blob/main/crates/sessions/src/lib.rs): `crates/sessions/src/lib.rs`
- [Control plane](https://github.com/nolane-x/nolane-localview/blob/main/crates/control/src/lib.rs): `crates/control/src/lib.rs`

### Observation and analysis

- [Semantic observation](https://github.com/nolane-x/nolane-localview/blob/main/crates/observation/src/lib.rs): `crates/observation/src/lib.rs`
- [Native providers](https://github.com/nolane-x/nolane-localview/blob/main/crates/native-provider/src/lib.rs): `crates/native-provider/src/lib.rs`
- [Visual capture](https://github.com/nolane-x/nolane-localview/blob/main/crates/native-capture/src/lib.rs): `crates/native-capture/src/lib.rs`
- [Layout and responsive](https://github.com/nolane-x/nolane-localview/blob/main/crates/live-analysis/src/lib.rs): `crates/live-analysis/src/lib.rs`
- [Source correlation](https://github.com/nolane-x/nolane-localview/blob/main/crates/source-map/src/lib.rs): `crates/source-map/src/lib.rs`
- [Runtime diagnostics](https://github.com/nolane-x/nolane-localview/blob/main/crates/diagnostics/src/lib.rs): `crates/diagnostics/src/lib.rs`

### Bounded actions

- [Action planning](https://github.com/nolane-x/nolane-localview/blob/main/crates/planner/src/lib.rs): `crates/planner/src/lib.rs`
- [Action bridge](https://github.com/nolane-x/nolane-localview/blob/main/crates/live-bridge/src/lib.rs): `crates/live-bridge/src/lib.rs`

### Evidence and verification

- [Post-action verification](https://github.com/nolane-x/nolane-localview/blob/main/crates/verification/src/lib.rs): `crates/verification/src/lib.rs`
- [Evidence artifacts](https://github.com/nolane-x/nolane-localview/blob/main/crates/evidence/src/lib.rs): `crates/evidence/src/lib.rs`
- [Trusted Fix](https://github.com/nolane-x/nolane-localview/blob/main/apps/desktop/src-tauri/src/trusted_fix.rs): `apps/desktop/src-tauri/src/trusted_fix.rs`

### Other components

- **Developer**
- **Coding agent**
- **Localhost app**

## Connections

- Developer → Desktop UI: inspect through
- Developer → CLI: automate with
- Coding agent → MCP bridge: request tools
- Desktop UI → Control plane: use control plane
- CLI → Control plane: send requests
- MCP bridge → Control plane: send requests
- Local daemon → Control plane: serve
- Local daemon → App discovery: scan apps
- Local daemon → Session identity: reconcile sessions
- Localhost app → App discovery: probe
- Control plane → Session identity: resolve session
- Control plane → Semantic observation: publish state
- Semantic observation → Native providers: acquire semantics
- Semantic observation → Visual capture: capture pixels
- Semantic observation → Layout and responsive: analyze state
- Semantic observation → Source correlation: correlate ownership
- Semantic observation → Runtime diagnostics: analyze events
- Desktop UI → Action planning: plan action
- CLI → Action planning: plan action
- MCP bridge → Action planning: plan action
- Action planning → Action bridge: authorize dispatch
- Action bridge → Native providers: dispatch action
- Action bridge → Post-action verification: request fresh check
- Post-action verification → Semantic observation: observe afterward
- Post-action verification → Evidence artifacts: record receipt
- Semantic observation → Evidence artifacts: retain evidence
- Desktop UI → Trusted Fix: review fix
- Trusted Fix → Post-action verification: verify fix
