# sagar-jaixwal/claude-code-clone architecture

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

- Interactive diagram: https://gitdiagram.com/sagar-jaixwal/claude-code-clone
- Repository: https://github.com/sagar-jaixwal/claude-code-clone

## Overview

Claude Code is a terminal-based developer assistant: a user submits prompts or slash commands, the query pipeline communicates with Claude and runs tool calls, and results appear in the terminal UI. Separate capabilities cover permissions, integrations, persistent work, and remote or IDE sessions. The README documents the broad product flow; sampled query code shows query-loop and tool-execution stages, while other implementation links are limited to documented relationships because their source was not sampled.

Main entry points: [`src/query.ts`](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/query.ts) (Query pipeline), [`src/commands`](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/commands) (Slash commands), [`src/tools`](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/tools) (Tool system), [`src/components/PromptInput`](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/components/PromptInput) (Prompt input)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Terminal interaction"]
  node_commands["Slash commands"]
  node_prompt["Prompt input"]
  node_terminal["Terminal UI<br/>[App.tsx]"]
end

subgraph group_agent["Agent runtime"]
  node_query["Query pipeline<br/>[query.ts]"]
  node_queryengine["Query engine<br/>[QueryEngine.ts]"]
  node_toolregistry["Tool system"]
  node_permissions["Tool permissions"]
  node_api["API client"]
  node_context["Context compression"]
end

subgraph group_capabilities["Developer capabilities"]
end

subgraph group_integrations["Integrations"]
  node_mcp["MCP servers"]
  node_lsp["Language servers"]
  node_bridge["IDE bridge<br/>[bridgeMain.ts]"]
  node_remote["Remote sessions"]
  node_plugins["Plugin system"]
end

subgraph group_continuity["Session continuity"]
  node_tasks["Task management"]
  node_memory["Persistent memory"]
  node_sessionstore["Session history<br/>[sessionHistory.ts]"]
  node_state["Runtime state<br/>[state.ts]"]
end

node_user(("Developer"))

node_user -->|"enters prompts"| node_prompt
node_user -->|"invokes commands"| node_commands
node_prompt -->|"submits input"| node_query
node_commands -->|"starts workflows"| node_query
node_query -->|"runs query loop"| node_queryengine
node_query -->|"executes tool calls"| node_toolregistry
node_query -->|"requests model responses"| node_api
node_query -->|"compresses context"| node_context
node_toolregistry -->|"checks permissions"| node_permissions
node_terminal -.->|"renders input"| node_prompt
node_query -->|"presents results"| node_terminal
node_toolregistry -->|"invokes server tools"| node_mcp
node_toolregistry -->|"uses language services"| node_lsp
node_user -->|"connects IDE"| node_bridge
node_user -->|"starts remote sessions"| node_remote
node_commands -->|"manages plugins"| node_plugins
node_commands -->|"manages tasks"| node_tasks
node_commands -->|"manages memory"| node_memory
node_commands -->|"resumes sessions"| node_sessionstore
node_query -.->|"uses runtime state"| node_state
node_remote -.->|"exchanges session events"| node_sessionstore

click node_commands "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/commands"
click node_prompt "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/components/PromptInput"
click node_terminal "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/ink/components/App.tsx"
click node_query "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/query.ts"
click node_queryengine "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/QueryEngine.ts"
click node_toolregistry "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/tools"
click node_permissions "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/hooks/toolPermission"
click node_api "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/services/api"
click node_context "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/services/compact"
click node_mcp "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/services/mcp/MCPConnectionManager.tsx"
click node_lsp "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/services/lsp/LSPServerManager.ts"
click node_bridge "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/bridge/bridgeMain.ts"
click node_remote "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/remote/RemoteSessionManager.ts"
click node_plugins "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/services/plugins/PluginInstallationManager.ts"
click node_tasks "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/tasks"
click node_memory "https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/commands/memory"
click node_sessionstore "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/assistant/sessionHistory.ts"
click node_state "https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/bootstrap/state.ts"

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_commands,node_prompt,node_terminal toneBlue
class node_query,node_queryengine,node_toolregistry,node_permissions,node_api,node_context toneAmber
class node_mcp,node_lsp,node_bridge,node_remote,node_plugins toneRose
class node_tasks,node_memory,node_sessionstore,node_state,node_user toneIndigo
```

## Components

### Terminal interaction

- [Slash commands](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/commands): `src/commands`
- [Prompt input](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/components/PromptInput): `src/components/PromptInput`
- [Terminal UI](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/ink/components/App.tsx): `src/ink/components/App.tsx`

### Agent runtime

- [Query pipeline](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/query.ts): `src/query.ts`
- [Query engine](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/QueryEngine.ts): `src/QueryEngine.ts`
- [Tool system](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/tools): `src/tools`
- [Tool permissions](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/hooks/toolPermission): `src/hooks/toolPermission`
- [API client](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/services/api): `src/services/api`
- [Context compression](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/services/compact): `src/services/compact`

### Integrations

- [MCP servers](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/services/mcp/MCPConnectionManager.tsx): `src/services/mcp/MCPConnectionManager.tsx`
- [Language servers](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/services/lsp/LSPServerManager.ts): `src/services/lsp/LSPServerManager.ts`
- [IDE bridge](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/bridge/bridgeMain.ts): `src/bridge/bridgeMain.ts`
- [Remote sessions](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/remote/RemoteSessionManager.ts): `src/remote/RemoteSessionManager.ts`
- [Plugin system](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/services/plugins/PluginInstallationManager.ts): `src/services/plugins/PluginInstallationManager.ts`

### Session continuity

- [Task management](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/tasks): `src/tasks`
- [Persistent memory](https://github.com/sagar-jaixwal/claude-code-clone/tree/main/src/commands/memory): `src/commands/memory`
- [Session history](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/assistant/sessionHistory.ts): `src/assistant/sessionHistory.ts`
- [Runtime state](https://github.com/sagar-jaixwal/claude-code-clone/blob/main/src/bootstrap/state.ts): `src/bootstrap/state.ts`

### Other components

- **Developer**

## Connections

- Developer → Prompt input: enters prompts (evidence: `README.md`)
- Developer → Slash commands: invokes commands (evidence: `README.md`)
- Prompt input → Query pipeline: submits input (evidence: `README.md`)
- Slash commands → Query pipeline: starts workflows (evidence: `README.md`)
- Query pipeline → Query engine: runs query loop (evidence: `src/query.ts`)
- Query pipeline → Tool system: executes tool calls (evidence: `src/query.ts`)
- Query pipeline → API client: requests model responses (evidence: `README.md`)
- Query pipeline → Context compression: compresses context (evidence: `src/query.ts`)
- Tool system → Tool permissions: checks permissions (evidence: `README.md`)
- Terminal UI → Prompt input: renders input
- Query pipeline → Terminal UI: presents results (evidence: `README.md`)
- Tool system → MCP servers: invokes server tools (evidence: `README.md`)
- Tool system → Language servers: uses language services (evidence: `README.md`)
- Developer → IDE bridge: connects IDE (evidence: `README.md`)
- Developer → Remote sessions: starts remote sessions (evidence: `README.md`)
- Slash commands → Plugin system: manages plugins (evidence: `README.md`)
- Slash commands → Task management: manages tasks (evidence: `README.md`)
- Slash commands → Persistent memory: manages memory (evidence: `README.md`)
- Slash commands → Session history: resumes sessions (evidence: `README.md`)
- Query pipeline → Runtime state: uses runtime state (evidence: `src/query.ts`)
- Remote sessions → Session history: exchanges session events
