# dalaoyuan2020/claude-science-assistant architecture

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

- Interactive diagram: https://gitdiagram.com/dalaoyuan2020/claude-science-assistant
- Repository: https://github.com/dalaoyuan2020/claude-science-assistant

## Overview

CSA is a Windows desktop control panel for configuring providers and operating a Claude Science runtime in WSL; its local Bridge translates Claude-style API traffic to upstream services. The main user workflow is configure/test a provider, apply a single route or three-role mapping, then launch Claude Science and use it through the Bridge. Separate workflows cover Connect messaging and artifacts, Subagent approval/results, and read-only WSL storage diagnostics. The README documents several capabilities whose implementation is not sampled here, so those are represented at their documented enclosing paths; uncertain internal wiring is omitted.

Main entry points: [`launcher/src/App.tsx`](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/App.tsx) (CSA panel), [`connect-gateway/internal/gateway/gateway.go`](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/connect-gateway/internal/gateway/gateway.go) (Connect Gateway), [`connect-gateway/internal/channels`](https://github.com/dalaoyuan2020/claude-science-assistant/tree/main/connect-gateway/internal/channels) (Chat channels), [`launcher/src-tauri/src/lib.rs`](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src-tauri/src/lib.rs) (Desktop commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop control"]
  node_app["CSA panel<br/>[App.tsx]"]
  node_tauri["Desktop commands<br/>[lib.rs]"]
end

subgraph group_runtime["WSL and Bridge"]
  node_wsl["WSL runtime"]
  node_claude["Claude Science"]
  node_bridge["API Bridge<br/>[proxy.py]"]
  node_providers["Model providers"]
end

subgraph group_connect["Connect messaging"]
  node_gateway["Connect Gateway<br/>[gateway.go]"]
  node_channels["Chat channels"]
  node_connectdb[("Connect state<br/>[store.go]")]
  node_mcp["MCP tools<br/>[server.go]"]
  node_browser["Browser connector<br/>[content.js]"]
end

subgraph group_collaboration["Agent collaboration"]
  node_subagent["Subagent panel<br/>[App.tsx]"]
  node_skill["External Agent Skill<br/>[SKILL.md]"]
  node_outbox["Result outbox<br/>[lib.rs]"]
  node_research["Research OS<br/>[App.tsx]"]
end

subgraph group_operations["Operations and health"]
  node_migration["Storage guidance"]
  node_storage["WSL storage status<br/>[lib.rs]"]
end

node_user(("Windows user"))
node_telegram(("Telegram"))
node_feishu(("Feishu"))
node_claudecode["Claude Code"]

node_user -->|"operates"| node_app
node_app -->|"invokes commands"| node_tauri
node_tauri -->|"manages runtime"| node_wsl
node_wsl -->|"hosts"| node_claude
node_claude -->|"sends API requests"| node_bridge
node_bridge -->|"translates and forwards"| node_providers
node_app -->|"requests guidance"| node_migration
node_tauri -->|"collects status"| node_storage
node_app -->|"displays status"| node_storage
node_telegram -->|"sends messages"| node_channels
node_feishu -->|"sends messages"| node_channels
node_channels -->|"delivers inbound"| node_gateway
node_gateway -->|"stores queue and state"| node_connectdb
node_gateway -->|"sends replies"| node_channels
node_mcp -->|"calls message tools"| node_gateway
node_browser -->|"injects tasks"| node_claude
node_app -->|"manages requests"| node_subagent
node_skill -->|"submits request"| node_subagent
node_subagent -->|"opens approved session"| node_claudecode
node_claudecode -->|"writes result"| node_outbox
node_subagent -->|"reads result"| node_outbox
node_app -->|"opens feature"| node_research

click node_app "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/App.tsx"
click node_tauri "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src-tauri/src/lib.rs"
click node_migration "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/storageMigration.ts"
click node_bridge "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/proxy.py"
click node_gateway "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/connect-gateway/internal/gateway/gateway.go"
click node_channels "https://github.com/dalaoyuan2020/claude-science-assistant/tree/main/connect-gateway/internal/channels"
click node_connectdb "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/connect-gateway/internal/store/store.go"
click node_mcp "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/connect-gateway/internal/mcpserver/server.go"
click node_browser "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/extensions/csa-claude-science-connector/content.js"
click node_subagent "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/App.tsx"
click node_skill "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/skills/csa-external-agent/SKILL.md"
click node_outbox "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src-tauri/src/lib.rs"
click node_research "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/App.tsx"
click node_storage "https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src-tauri/src/lib.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_app,node_tauri,node_user toneBlue
class node_wsl,node_claude,node_bridge,node_providers toneAmber
class node_gateway,node_channels,node_connectdb,node_mcp,node_browser toneMint
class node_subagent,node_skill,node_outbox,node_research toneRose
class node_migration,node_storage,node_telegram,node_feishu,node_claudecode toneIndigo
```

## Components

### Desktop control

- [CSA panel](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/App.tsx): `launcher/src/App.tsx`
- [Desktop commands](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src-tauri/src/lib.rs): `launcher/src-tauri/src/lib.rs`

### WSL and Bridge

- **WSL runtime**
- **Claude Science**
- [API Bridge](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/proxy.py): `proxy.py`
- **Model providers**

### Connect messaging

- [Connect Gateway](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/connect-gateway/internal/gateway/gateway.go): `connect-gateway/internal/gateway/gateway.go`
- [Chat channels](https://github.com/dalaoyuan2020/claude-science-assistant/tree/main/connect-gateway/internal/channels): `connect-gateway/internal/channels`
- [Connect state](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/connect-gateway/internal/store/store.go): `connect-gateway/internal/store/store.go`
- [MCP tools](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/connect-gateway/internal/mcpserver/server.go): `connect-gateway/internal/mcpserver/server.go`
- [Browser connector](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/extensions/csa-claude-science-connector/content.js): `extensions/csa-claude-science-connector/content.js`

### Agent collaboration

- [Subagent panel](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/App.tsx): `launcher/src/App.tsx`
- [External Agent Skill](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/skills/csa-external-agent/SKILL.md): `skills/csa-external-agent/SKILL.md`
- [Result outbox](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src-tauri/src/lib.rs): `launcher/src-tauri/src/lib.rs`
- [Research OS](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/App.tsx): `launcher/src/App.tsx`

### Operations and health

- [Storage guidance](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src/storageMigration.ts): `launcher/src/storageMigration.ts`
- [WSL storage status](https://github.com/dalaoyuan2020/claude-science-assistant/blob/main/launcher/src-tauri/src/lib.rs): `launcher/src-tauri/src/lib.rs`

### Other components

- **Windows user**
- **Telegram**
- **Feishu**
- **Claude Code**

## Connections

- Windows user → CSA panel: operates
- CSA panel → Desktop commands: invokes commands
- Desktop commands → WSL runtime: manages runtime
- WSL runtime → Claude Science: hosts
- Claude Science → API Bridge: sends API requests
- API Bridge → Model providers: translates and forwards
- CSA panel → Storage guidance: requests guidance
- Desktop commands → WSL storage status: collects status
- CSA panel → WSL storage status: displays status
- Telegram → Chat channels: sends messages
- Feishu → Chat channels: sends messages
- Chat channels → Connect Gateway: delivers inbound
- Connect Gateway → Connect state: stores queue and state
- Connect Gateway → Chat channels: sends replies
- MCP tools → Connect Gateway: calls message tools
- Browser connector → Claude Science: injects tasks
- CSA panel → Subagent panel: manages requests
- External Agent Skill → Subagent panel: submits request
- Subagent panel → Claude Code: opens approved session
- Claude Code → Result outbox: writes result
- Subagent panel → Result outbox: reads result
- CSA panel → Research OS: opens feature
