# prabuselvamnatarajan/continue architecture

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

- Interactive diagram: https://gitdiagram.com/prabuselvamnatarajan/continue
- Repository: https://github.com/prabuselvamnatarajan/continue

## Overview

#### Purpose and Deliverables
Continue is an archived, final-2.0.0 open-source coding agent delivered through a Node CLI, VS Code extension, and JetBrains plugin. The shared TypeScript core supplies model access, agent tools, configuration, context retrieval, editing, and IDE protocol contracts. Primary entry points are `extensions/cli/src/index.ts`, `extensions/vscode/src/extension.ts`, and `extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/activities/ContinuePluginStartupActivity.kt`.

#### Host Integration and Process Boundary
IDE hosts collect editor/workspace state, render native UI, apply edits, and communicate with the core through a typed bidirectional protocol. VS Code activates its extension and messenger; JetBrains starts/manages a bundled binary process and socket/core messenger. The binary provides IPC/TCP transport and launches the core-facing runtime. Key boundaries: `extensions/vscode/src/activation/activate.ts`, `extensions/vscode/src/extension/VsCodeMessenger.ts`, `extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessengerManager.kt`, `binary/src/index.ts`, and `core/protocol/ideCore.ts`.

#### Shared Agent Core
`core/core.ts` is the principal orchestration layer behind interactive chat/agent workflows. It composes normalized configuration, instructions, context, LLM streaming, and tools; adapters keep host-specific filesystem, terminal, editor, and UI operations outside the core. Rules and prompt files contribute user/workspace instructions. Core contracts are concentrated in `core/protocol/core.ts`, `core/rules/InstructionConstructor.ts`, and `core/promptFiles/parsePromptFile.ts`.

#### Configuration, Models, and LLM Boundary
Configuration supports local profiles, JSON/YAML sources, markdown rules/skills, model-role selection, and MCP definitions. The config layer resolves these into runtime configuration before requests begin. The LLM layer abstracts streaming chat, token handling, templates, retries, and a broad provider catalog, including cloud and local services such as OpenAI, Anthropic, Bedrock, Gemini, Azure, Ollama, and LM Studio. Relevant paths: `core/config/ConfigHandler.ts`, `core/config/profile/doLoadConfig.ts`, `core/llm/streamChat.ts`, and `core/llm/llms/index.ts`. Provider protocol adaptation is also packaged in `packages/openai-adapters/src/index.ts`.

#### Context and Retrieval Pipeline
Agent requests are augmented from IDE/workspace state and optional remote sources. Context providers can access files, diffs, terminals, Git, web/docs, databases, issue trackers, and MCP resources. Workspace indexing chunks code and supports full-text/vector-style retrieval; documentation can be crawled and indexed. Retrieval then ranks selected material for prompts. Major stages: `core/context/providers/index.ts`, `core/context/retrieval/retrieval.ts`, `core/indexing/CodebaseIndexer.ts`, `core/indexing/LanceDbIndex.ts`, and `core/indexing/docs/DocsService.ts`.

#### Tools, Edits, and Safety
Models invoke a defined tool surface for read/search/write, shell execution, diffs, MCP calls, web access, tasks, and mode switching. Tool definitions are separated from host-dependent implementations and can be overridden by policy. Generated edits are applied through search/replace, unified diff, or lazy streaming application paths; hosts render/apply resulting file changes. Core paths: `core/tools/definitions/index.ts`, `core/tools/callTool.ts`, `core/tools/policies/fileAccess.ts`, `core/edit/lazy/streamLazyApply.ts`, and `core/edit/searchAndReplace/performReplace.ts`. CLI adds explicit permission precedence and terminal command security through `extensions/cli/src/permissions/permissionChecker.ts` and `packages/terminal-security/src/evaluateTerminalCommandSecurity.ts`.

#### Client Experiences and Runtime Stack
The CLI is a Node/TypeScript terminal application with a React TUI, service container, streaming/tool-call loop, MCP connections, local session/config services, and optional platform API/auth/storage clients. VS Code and JetBrains embed the shared GUI webview, a Vite React/Redux application that sends protocol requests and renders streams, tool calls, configuration, indexing, and edit acceptance. Core runtime is TypeScript/Node; JetBrains is Kotlin/Gradle; sync is a Rust library with Merkle-based workspace synchronization. Paths: `extensions/cli/src/stream/streamChatResponse.ts`, `extensions/cli/src/services/ServiceContainer.ts`, `gui/src/context/IdeMessenger.tsx`, `gui/src/redux/thunks/streamResponse.ts`, and `sync/src/sync/merkle.rs`.

Main entry points: [`core/core.ts`](https://github.com/prabuselvamnatarajan/continue/blob/main/core/core.ts) (Agent orchestration), [`core/protocol/ideCore.ts`](https://github.com/prabuselvamnatarajan/continue/blob/main/core/protocol/ideCore.ts) (IDE ↔ core protocol), [`core/context/retrieval/retrieval.ts`](https://github.com/prabuselvamnatarajan/continue/blob/main/core/context/retrieval/retrieval.ts) (Context retrieval), [`core/tools/callTool.ts`](https://github.com/prabuselvamnatarajan/continue/blob/main/core/tools/callTool.ts) (Tool execution)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client experiences"]
  node_cli["Node CLI<br/>CLI entry point<br/>[index.ts]"]
  node_cli_stream["CLI stream loop<br/>stream controller"]
  node_cli_permissions["CLI permissions<br/>security policy"]
  node_gui["Shared GUI webview<br/>React/Redux client<br/>[streamResponse.ts]"]
end

subgraph group_host["Host integration"]
  node_vscode["VS Code extension<br/>IDE entry point<br/>[extension.ts]"]
  node_vscode_activation["VS Code activation<br/>host adapter<br/>[activate.ts]"]
  node_vscode_messenger["VS Code messenger<br/>protocol bridge<br/>[VsCodeMessenger.ts]"]
  node_jetbrains["JetBrains plugin<br/>IDE entry point"]
  node_jb_messenger["JetBrains core manager<br/>process and socket bridge"]
  node_binary{{"Bundled binary<br/>IPC/TCP runtime<br/>[index.ts]"}}
end

subgraph group_core["Shared agent core"]
  node_ide_protocol["IDE ↔ core protocol<br/>typed bidirectional contract<br/>[ideCore.ts]"]
  node_agent_core["Agent orchestration<br/>workflow engine<br/>[core.ts]"]
  node_instructions["Rules and prompt files<br/>instruction builder"]
end

subgraph group_services["Model, context &amp; tools"]
  node_runtime_config["Runtime configuration<br/>configuration resolver<br/>[ConfigHandler.ts]"]
  node_llm_streaming["LLM streaming layer<br/>model abstraction<br/>[streamChat.ts]"]
  node_providers["Model providers<br/>provider catalog<br/>[index.ts]"]
  node_context_retrieval["Context retrieval<br/>retrieval pipeline<br/>[retrieval.ts]"]
  node_code_index["Code and docs indexing<br/>indexing service<br/>[CodebaseIndexer.ts]"]
  node_tools["Tool execution<br/>tool dispatcher<br/>[callTool.ts]"]
  node_tool_definitions["Tool surface<br/>tool definitions<br/>[index.ts]"]
  node_edit_apply["Edit application<br/>edit engine<br/>[streamLazyApply.ts]"]
  node_terminal_security["Terminal command security<br/>security evaluator"]
  node_sync["Workspace sync<br/>Rust sync library<br/>[merkle.rs]"]
end

node_cli -->|"starts"| node_cli_stream
node_cli_stream -->|"runs agent requests"| node_agent_core
node_cli_permissions -->|"authorizes CLI tool use"| node_tools
node_cli_permissions -->|"checks shell commands"| node_terminal_security
node_vscode -->|"activates"| node_vscode_activation
node_vscode_activation -->|"creates"| node_vscode_messenger
node_vscode_messenger -->|"communicates via"| node_ide_protocol
node_jetbrains -->|"starts"| node_jb_messenger
node_jb_messenger -->|"manages"| node_binary
node_binary -->|"transports"| node_ide_protocol
node_gui -->|"sends requests and renders events"| node_ide_protocol
node_ide_protocol -->|"routes host requests"| node_agent_core
node_agent_core -->|"builds prompts from"| node_instructions
node_agent_core -->|"uses"| node_runtime_config
node_agent_core -->|"augments requests with"| node_context_retrieval
node_agent_core -->|"streams through"| node_llm_streaming
node_agent_core -->|"invokes"| node_tools
node_agent_core -->|"produces edits through"| node_edit_apply
node_runtime_config -->|"selects model roles"| node_providers
node_llm_streaming -->|"adapts requests to"| node_providers
node_context_retrieval -->|"queries indexed workspace"| node_code_index
node_tools -->|"dispatches defined tools"| node_tool_definitions
node_edit_apply -->|"returns file changes to hosts"| node_ide_protocol
node_sync -.->|"supplies synchronized workspace state"| node_context_retrieval

click node_cli "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/cli/src/index.ts"
click node_cli_stream "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/cli/src/stream/streamChatResponse.ts"
click node_cli_permissions "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/cli/src/permissions/permissionChecker.ts"
click node_vscode "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/vscode/src/extension.ts"
click node_vscode_activation "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/vscode/src/activation/activate.ts"
click node_vscode_messenger "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/vscode/src/extension/VsCodeMessenger.ts"
click node_jetbrains "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/activities/ContinuePluginStartupActivity.kt"
click node_jb_messenger "https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessengerManager.kt"
click node_binary "https://github.com/prabuselvamnatarajan/continue/blob/main/binary/src/index.ts"
click node_gui "https://github.com/prabuselvamnatarajan/continue/blob/main/gui/src/redux/thunks/streamResponse.ts"
click node_ide_protocol "https://github.com/prabuselvamnatarajan/continue/blob/main/core/protocol/ideCore.ts"
click node_agent_core "https://github.com/prabuselvamnatarajan/continue/blob/main/core/core.ts"
click node_instructions "https://github.com/prabuselvamnatarajan/continue/blob/main/core/rules/InstructionConstructor.ts"
click node_runtime_config "https://github.com/prabuselvamnatarajan/continue/blob/main/core/config/ConfigHandler.ts"
click node_llm_streaming "https://github.com/prabuselvamnatarajan/continue/blob/main/core/llm/streamChat.ts"
click node_providers "https://github.com/prabuselvamnatarajan/continue/blob/main/core/llm/llms/index.ts"
click node_context_retrieval "https://github.com/prabuselvamnatarajan/continue/blob/main/core/context/retrieval/retrieval.ts"
click node_code_index "https://github.com/prabuselvamnatarajan/continue/blob/main/core/indexing/CodebaseIndexer.ts"
click node_tools "https://github.com/prabuselvamnatarajan/continue/blob/main/core/tools/callTool.ts"
click node_tool_definitions "https://github.com/prabuselvamnatarajan/continue/blob/main/core/tools/definitions/index.ts"
click node_edit_apply "https://github.com/prabuselvamnatarajan/continue/blob/main/core/edit/lazy/streamLazyApply.ts"
click node_terminal_security "https://github.com/prabuselvamnatarajan/continue/blob/main/packages/terminal-security/src/evaluateTerminalCommandSecurity.ts"
click node_sync "https://github.com/prabuselvamnatarajan/continue/blob/main/sync/src/sync/merkle.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_cli,node_cli_stream,node_cli_permissions,node_gui toneBlue
class node_vscode,node_vscode_activation,node_vscode_messenger,node_jetbrains,node_jb_messenger,node_binary toneAmber
class node_ide_protocol,node_agent_core,node_instructions toneMint
class node_runtime_config,node_llm_streaming,node_providers,node_context_retrieval,node_code_index,node_tools,node_tool_definitions,node_edit_apply,node_terminal_security,node_sync toneRose
```

## Components

### Client experiences

- [Node CLI](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/cli/src/index.ts): CLI entry point · Terminal agent with permissions and sessions. · `extensions/cli/src/index.ts`
- [CLI stream loop](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/cli/src/stream/streamChatResponse.ts): stream controller · `extensions/cli/src/stream/streamChatResponse.ts`
- [CLI permissions](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/cli/src/permissions/permissionChecker.ts): security policy · `extensions/cli/src/permissions/permissionChecker.ts`
- [Shared GUI webview](https://github.com/prabuselvamnatarajan/continue/blob/main/gui/src/redux/thunks/streamResponse.ts): React/Redux client · Renders streams, tool calls, configuration, indexing, and edit review. · `gui/src/redux/thunks/streamResponse.ts`

### Host integration

- [VS Code extension](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/vscode/src/extension.ts): IDE entry point · `extensions/vscode/src/extension.ts`
- [VS Code activation](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/vscode/src/activation/activate.ts): host adapter · `extensions/vscode/src/activation/activate.ts`
- [VS Code messenger](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/vscode/src/extension/VsCodeMessenger.ts): protocol bridge · `extensions/vscode/src/extension/VsCodeMessenger.ts`
- [JetBrains plugin](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/activities/ContinuePluginStartupActivity.kt): IDE entry point · `extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/activities/ContinuePluginStartupActivity.kt`
- [JetBrains core manager](https://github.com/prabuselvamnatarajan/continue/blob/main/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessengerManager.kt): process and socket bridge · `extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessengerManager.kt`
- [Bundled binary](https://github.com/prabuselvamnatarajan/continue/blob/main/binary/src/index.ts): IPC/TCP runtime · Launches the core-facing runtime for JetBrains. · `binary/src/index.ts`

### Shared agent core

- [IDE ↔ core protocol](https://github.com/prabuselvamnatarajan/continue/blob/main/core/protocol/ideCore.ts): typed bidirectional contract · `core/protocol/ideCore.ts`
- [Agent orchestration](https://github.com/prabuselvamnatarajan/continue/blob/main/core/core.ts): workflow engine · Composes instructions, context, streaming, and tools. · `core/core.ts`
- [Rules and prompt files](https://github.com/prabuselvamnatarajan/continue/blob/main/core/rules/InstructionConstructor.ts): instruction builder · Builds user and workspace instructions. · `core/rules/InstructionConstructor.ts`

### Model, context & tools

- [Runtime configuration](https://github.com/prabuselvamnatarajan/continue/blob/main/core/config/ConfigHandler.ts): configuration resolver · Resolves profiles, sources, model roles, and MCP definitions. · `core/config/ConfigHandler.ts`
- [LLM streaming layer](https://github.com/prabuselvamnatarajan/continue/blob/main/core/llm/streamChat.ts): model abstraction · Handles templates, tokens, retries, and provider streaming. · `core/llm/streamChat.ts`
- [Model providers](https://github.com/prabuselvamnatarajan/continue/blob/main/core/llm/llms/index.ts): provider catalog · Cloud and local LLM integrations. · `core/llm/llms/index.ts`
- [Context retrieval](https://github.com/prabuselvamnatarajan/continue/blob/main/core/context/retrieval/retrieval.ts): retrieval pipeline · Selects workspace, IDE, remote, and MCP material for prompts. · `core/context/retrieval/retrieval.ts`
- [Code and docs indexing](https://github.com/prabuselvamnatarajan/continue/blob/main/core/indexing/CodebaseIndexer.ts): indexing service · Chunks workspace code and supports retrieval. · `core/indexing/CodebaseIndexer.ts`
- [Tool execution](https://github.com/prabuselvamnatarajan/continue/blob/main/core/tools/callTool.ts): tool dispatcher · Invokes defined tools through host-dependent implementations. · `core/tools/callTool.ts`
- [Tool surface](https://github.com/prabuselvamnatarajan/continue/blob/main/core/tools/definitions/index.ts): tool definitions · Read, search, write, shell, diff, MCP, web, task, and mode tools. · `core/tools/definitions/index.ts`
- [Edit application](https://github.com/prabuselvamnatarajan/continue/blob/main/core/edit/lazy/streamLazyApply.ts): edit engine · Applies generated changes through lazy streaming paths. · `core/edit/lazy/streamLazyApply.ts`
- [Terminal command security](https://github.com/prabuselvamnatarajan/continue/blob/main/packages/terminal-security/src/evaluateTerminalCommandSecurity.ts): security evaluator · `packages/terminal-security/src/evaluateTerminalCommandSecurity.ts`
- [Workspace sync](https://github.com/prabuselvamnatarajan/continue/blob/main/sync/src/sync/merkle.rs): Rust sync library · Merkle-based workspace synchronization. · `sync/src/sync/merkle.rs`

## Connections

- Node CLI → CLI stream loop: starts
- CLI stream loop → Agent orchestration: runs agent requests
- CLI permissions → Tool execution: authorizes CLI tool use
- CLI permissions → Terminal command security: checks shell commands
- VS Code extension → VS Code activation: activates
- VS Code activation → VS Code messenger: creates
- VS Code messenger → IDE ↔ core protocol: communicates via
- JetBrains plugin → JetBrains core manager: starts
- JetBrains core manager → Bundled binary: manages
- Bundled binary → IDE ↔ core protocol: transports
- Shared GUI webview → IDE ↔ core protocol: sends requests and renders events
- IDE ↔ core protocol → Agent orchestration: routes host requests
- Agent orchestration → Rules and prompt files: builds prompts from
- Agent orchestration → Runtime configuration: uses
- Agent orchestration → Context retrieval: augments requests with
- Agent orchestration → LLM streaming layer: streams through
- Agent orchestration → Tool execution: invokes
- Agent orchestration → Edit application: produces edits through
- Runtime configuration → Model providers: selects model roles
- LLM streaming layer → Model providers: adapts requests to
- Context retrieval → Code and docs indexing: queries indexed workspace
- Tool execution → Tool surface: dispatches defined tools
- Edit application → IDE ↔ core protocol: returns file changes to hosts
- Workspace sync → Context retrieval: supplies synchronized workspace state
