# liuqihonggit/joincode architecture

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

- Interactive diagram: https://gitdiagram.com/liuqihonggit/joincode
- Repository: https://github.com/liuqihonggit/joincode

## Overview

JoinCode is an AI coding agent with CLI, full-screen TUI, and GUI entry points. The central workflow accepts a prompt, runs an agent query against an LLM, executes tools as needed, then streams results to the user. The README also documents session management, MCP tool discovery, browser and web capabilities, multi-agent work, and adversarial reasoning. The graph combines documented capabilities with sampled implementations; paths for unsampled subsystems use existing enclosing directories, and uncertain internal call wiring is omitted.

Main entry points: [`kit/brain/query/query2/token_budget/core/QueryEngine.cs`](https://github.com/liuqihonggit/joincode/blob/main/kit/brain/query/query2/token_budget/core/QueryEngine.cs) (Agent query engine), [`app/cli/entry/runners`](https://github.com/liuqihonggit/joincode/tree/main/app/cli/entry/runners) (CLI runners), [`app/gui/hosting/JccChatSession.cs`](https://github.com/liuqihonggit/joincode/blob/main/app/gui/hosting/JccChatSession.cs) (GUI chat session), [`llm/core/Adapters/LLM/QueryServices`](https://github.com/liuqihonggit/joincode/tree/main/llm/core/Adapters/LLM/QueryServices) (LLM client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_cli["CLI runners"]
  node_tui["Terminal UI"]
  node_gui["Desktop UI"]
  node_cli_adapters["CLI presentation"]
  node_tui_interaction["TUI interaction"]
  node_gui_session["GUI chat session<br/>[JccChatSession.cs]"]
end

subgraph group_runtime["Agent runtime"]
  node_app_builder["Application builder"]
  node_engine_factory["Engine session factory"]
  node_query_engine["Agent query engine<br/>[QueryEngine.cs]"]
  node_multi_agent["Goal and agents"]
  node_reasoning["Adversarial reasoning"]
end

subgraph group_models["LLM integration"]
  node_llm_client["LLM client"]
  node_openai_api(("OpenAI-compatible API"))
  node_anthropic_api(("Anthropic API"))
end

subgraph group_tools["Tools and integrations"]
  node_core_tools["Built-in tools"]
  node_mcp_search["MCP tool search"]
  node_mcp_services["MCP client and server"]
  node_browser["Browser automation<br/>[BrowserModule.cs]"]
  node_web["Web requests"]
end

subgraph group_sessions["Sessions and state"]
  node_session_state[("Session management<br/>[CliSession.cs]")]
  node_gui_store[("GUI session store<br/>[GuiSessionStore.cs]")]
  node_pipe_sessions["Pipe code sessions"]
end

node_user(("User or script"))

node_user -->|"submits prompt"| node_cli
node_user -->|"submits prompt"| node_tui
node_user -->|"submits prompt"| node_gui
node_cli -->|"starts runtime"| node_app_builder
node_app_builder -->|"builds session"| node_engine_factory
node_engine_factory -->|"provides chat service"| node_query_engine
node_cli -->|"presents output"| node_cli_adapters
node_tui -->|"handles interaction"| node_tui_interaction
node_gui -->|"uses chat session"| node_gui_session
node_gui_session -->|"creates engine session"| node_engine_factory
node_query_engine -->|"queries model"| node_llm_client
node_llm_client -->|"sends protocol requests"| node_openai_api
node_llm_client -->|"sends protocol requests"| node_anthropic_api
node_query_engine -->|"dispatches tools"| node_core_tools
node_query_engine -->|"searches deferred tools"| node_mcp_search
node_query_engine -->|"invokes browser tools"| node_browser
node_query_engine -->|"invokes web tools"| node_web
node_query_engine -->|"uses MCP tools"| node_mcp_services
node_cli -->|"resumes sessions"| node_session_state
node_gui_session -->|"persists sessions"| node_gui_store
node_cli -.->|"serves code sessions"| node_pipe_sessions
node_query_engine -.->|"supports agent tasks"| node_multi_agent
node_query_engine -.->|"supports reasoning modes"| node_reasoning

click node_cli "https://github.com/liuqihonggit/joincode/tree/main/app/cli/entry/runners"
click node_tui "https://github.com/liuqihonggit/joincode/tree/main/app/tui/core/tui"
click node_gui "https://github.com/liuqihonggit/joincode/tree/main/app/gui/views/core"
click node_cli_adapters "https://github.com/liuqihonggit/joincode/tree/main/app/cli/adapters"
click node_tui_interaction "https://github.com/liuqihonggit/joincode/tree/main/app/tui/interaction"
click node_gui_session "https://github.com/liuqihonggit/joincode/blob/main/app/gui/hosting/JccChatSession.cs"
click node_app_builder "https://github.com/liuqihonggit/joincode/blob/main/app/cli/app/builder/ApplicationBuilder.cs"
click node_engine_factory "https://github.com/liuqihonggit/joincode/blob/main/app/cli/app/builder/EngineSessionFactory.cs"
click node_query_engine "https://github.com/liuqihonggit/joincode/blob/main/kit/brain/query/query2/token_budget/core/QueryEngine.cs"
click node_llm_client "https://github.com/liuqihonggit/joincode/tree/main/llm/core/Adapters/LLM/QueryServices"
click node_core_tools "https://github.com/liuqihonggit/joincode/tree/main/app/cli/app/modules"
click node_mcp_search "https://github.com/liuqihonggit/joincode/blob/main/kit/mcp/skill/ToolSearchEngine.cs"
click node_mcp_services "https://github.com/liuqihonggit/joincode/tree/main/app/cli/core/commands/core"
click node_browser "https://github.com/liuqihonggit/joincode/blob/main/app/cli/app/modules/BrowserModule.cs"
click node_web "https://github.com/liuqihonggit/joincode/tree/main/app/cli/app/modules"
click node_session_state "https://github.com/liuqihonggit/joincode/blob/main/app/cli/core/services/CliSession.cs"
click node_gui_store "https://github.com/liuqihonggit/joincode/blob/main/app/gui/persistence/GuiSessionStore.cs"
click node_pipe_sessions "https://github.com/liuqihonggit/joincode/blob/main/app/cli/pipe/code_session/CodeSessionManager.cs"
click node_multi_agent "https://github.com/liuqihonggit/joincode/blob/main/app/gui/view_models/a_to_c/BackgroundAgentsPanelViewModel.cs"
click node_reasoning "https://github.com/liuqihonggit/joincode/tree/main/kit/brain/query"

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_cli,node_tui,node_gui,node_cli_adapters,node_tui_interaction,node_gui_session,node_user toneBlue
class node_app_builder,node_engine_factory,node_query_engine,node_multi_agent,node_reasoning toneAmber
class node_llm_client,node_openai_api,node_anthropic_api toneMint
class node_core_tools,node_mcp_search,node_mcp_services,node_browser,node_web toneRose
class node_session_state,node_gui_store,node_pipe_sessions toneIndigo
```

## Components

### User interfaces

- [CLI runners](https://github.com/liuqihonggit/joincode/tree/main/app/cli/entry/runners): `app/cli/entry/runners`
- [Terminal UI](https://github.com/liuqihonggit/joincode/tree/main/app/tui/core/tui): `app/tui/core/tui`
- [Desktop UI](https://github.com/liuqihonggit/joincode/tree/main/app/gui/views/core): `app/gui/views/core`
- [CLI presentation](https://github.com/liuqihonggit/joincode/tree/main/app/cli/adapters): `app/cli/adapters`
- [TUI interaction](https://github.com/liuqihonggit/joincode/tree/main/app/tui/interaction): `app/tui/interaction`
- [GUI chat session](https://github.com/liuqihonggit/joincode/blob/main/app/gui/hosting/JccChatSession.cs): `app/gui/hosting/JccChatSession.cs`

### Agent runtime

- [Application builder](https://github.com/liuqihonggit/joincode/blob/main/app/cli/app/builder/ApplicationBuilder.cs): `app/cli/app/builder/ApplicationBuilder.cs`
- [Engine session factory](https://github.com/liuqihonggit/joincode/blob/main/app/cli/app/builder/EngineSessionFactory.cs): `app/cli/app/builder/EngineSessionFactory.cs`
- [Agent query engine](https://github.com/liuqihonggit/joincode/blob/main/kit/brain/query/query2/token_budget/core/QueryEngine.cs): `kit/brain/query/query2/token_budget/core/QueryEngine.cs`
- [Goal and agents](https://github.com/liuqihonggit/joincode/blob/main/app/gui/view_models/a_to_c/BackgroundAgentsPanelViewModel.cs): `app/gui/view_models/a_to_c/BackgroundAgentsPanelViewModel.cs`
- [Adversarial reasoning](https://github.com/liuqihonggit/joincode/tree/main/kit/brain/query): `kit/brain/query`

### LLM integration

- [LLM client](https://github.com/liuqihonggit/joincode/tree/main/llm/core/Adapters/LLM/QueryServices): `llm/core/Adapters/LLM/QueryServices`
- **OpenAI-compatible API**
- **Anthropic API**

### Tools and integrations

- [Built-in tools](https://github.com/liuqihonggit/joincode/tree/main/app/cli/app/modules): `app/cli/app/modules`
- [MCP tool search](https://github.com/liuqihonggit/joincode/blob/main/kit/mcp/skill/ToolSearchEngine.cs): `kit/mcp/skill/ToolSearchEngine.cs`
- [MCP client and server](https://github.com/liuqihonggit/joincode/tree/main/app/cli/core/commands/core): `app/cli/core/commands/core`
- [Browser automation](https://github.com/liuqihonggit/joincode/blob/main/app/cli/app/modules/BrowserModule.cs): `app/cli/app/modules/BrowserModule.cs`
- [Web requests](https://github.com/liuqihonggit/joincode/tree/main/app/cli/app/modules): `app/cli/app/modules`

### Sessions and state

- [Session management](https://github.com/liuqihonggit/joincode/blob/main/app/cli/core/services/CliSession.cs): `app/cli/core/services/CliSession.cs`
- [GUI session store](https://github.com/liuqihonggit/joincode/blob/main/app/gui/persistence/GuiSessionStore.cs): `app/gui/persistence/GuiSessionStore.cs`
- [Pipe code sessions](https://github.com/liuqihonggit/joincode/blob/main/app/cli/pipe/code_session/CodeSessionManager.cs): `app/cli/pipe/code_session/CodeSessionManager.cs`

### Other components

- **User or script**

## Connections

- User or script → CLI runners: submits prompt
- User or script → Terminal UI: submits prompt
- User or script → Desktop UI: submits prompt
- CLI runners → Application builder: starts runtime
- Application builder → Engine session factory: builds session
- Engine session factory → Agent query engine: provides chat service
- CLI runners → CLI presentation: presents output
- Terminal UI → TUI interaction: handles interaction
- Desktop UI → GUI chat session: uses chat session
- GUI chat session → Engine session factory: creates engine session
- Agent query engine → LLM client: queries model
- LLM client → OpenAI-compatible API: sends protocol requests
- LLM client → Anthropic API: sends protocol requests
- Agent query engine → Built-in tools: dispatches tools
- Agent query engine → MCP tool search: searches deferred tools
- Agent query engine → Browser automation: invokes browser tools
- Agent query engine → Web requests: invokes web tools
- Agent query engine → MCP client and server: uses MCP tools
- CLI runners → Session management: resumes sessions
- GUI chat session → GUI session store: persists sessions
- CLI runners → Pipe code sessions: serves code sessions
- Agent query engine → Goal and agents: supports agent tasks
- Agent query engine → Adversarial reasoning: supports reasoning modes
