vtcode 0.146.6

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
<p align="center">
  <img src="./resources/logo/vt_code_adaptive.svg" alt="VT Code" style="border-radius: 12px" width="300"/>
</p>

<p align="center">
<a href="https://agentskills.io/"><img src="https://img.shields.io/badge/Agent%20Skills-BFB38F?style=flat-square&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTYgMC41TDI5LjQyMzQgOC4yNVYyMy43NUwxNiAzMS41TDIuNTc2NjEgMjMuNzVWOC4yNUwxNiAwLjVaIiBmaWxsPSIjZmZmZmZmIi8%2BPC9zdmc%2B&logoColor=white" alt="Agent Skills" /></a>
<a href="./docs/guides/zed-acp.md"><img src="https://img.shields.io/badge/ACP-Zed-383B73?style=flat-square&logo=zedindustries" alt="Zed ACP" /></a>
<a href="./docs/guides/mcp-integration.md"><img src="https://img.shields.io/badge/MCP-A63333?style=flat-square&logo=modelcontextprotocol" alt="MCP" /></a>
<a href="./docs/guides/agent-plugins.md"><img src="https://img.shields.io/badge/Agent%20Plugins-v1.0.0-5865F2?style=flat-square&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxOCAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8c3R5bGU%2BCiAgICBwYXRoIHsgZmlsbDogI2ZmZjsgfQogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgeyBwYXRoIHsgZmlsbDogI2ZmZjsgfSB9CiAgPC9zdHlsZT4KICA8cGF0aCBkPSJNMi44OTUwMiAxMi43NjA3VjEzLjg5ODRMMy41NjAwNiAxNC41MzgxSDE0LjQzOTlMMTUuMTA0IDEzLjg5OTRWMTIuNzYwN0gxNi43NDE3VjE0LjU5NjdMMTUuMzM2NCAxNS45NDczTDE1LjA5ODEgMTYuMTc1OEgyLjkwMDg4TDIuNjYzNTcgMTUuOTQ3M0wxLjUwOTI4IDE0LjgzODlMMS4yNTgzIDE0LjU5NjdWMTIuNzYwN0gyLjg5NTAyWk0xNS4wOTgxIDBMMTUuMzM2NCAwLjIyODUxNkwxNi40ODk3IDEuMzM2OTFMMTYuNzQxNyAxLjU3ODEyVjMuNDE0MDZIMTUuMTA0VjIuMjc1MzlMMTQuNDM5IDEuNjM2NzJIMy41NjAwNkwyLjg5NTAyIDIuMjc1MzlWMy40MTQwNkgxLjI1ODNWMS41NzgxMkwyLjY2MzU3IDAuMjI4NTE2TDIuOTAwODggMEgxNS4wOTgxWiIvPgogIDxwYXRoIGQ9Ik0xNi4zNjI4IDguMTIwMzZDMTYuMzYyOCA3LjI0Mjc3IDE1LjY1MTUgNi41MzE1NyAxNC43NzM5IDYuNTMxNDlDMTMuODk2MyA2LjUzMTQ5IDEzLjE4NTEgNy4yNDI3MiAxMy4xODUxIDguMTIwMzZDMTMuMTg1MSA4Ljk5NzkzIDEzLjg5NjMgOS43MDkyMyAxNC43NzM5IDkuNzA5MjNWMTEuMzQ2OUwxNC42MDc5IDExLjM0MkMxMi45NTgxIDExLjI1ODUgMTEuNjM1IDkuOTM2MTIgMTEuNTUxMyA4LjI4NjM4TDExLjU0NzQgOC4xMjAzNkMxMS41NDc0IDYuMzM4NDYgMTIuOTkyIDQuODkzOCAxNC43NzM5IDQuODkzOEwxNC45Mzk5IDQuODk3NzFDMTYuNjQ0NiA0Ljk4NDE4IDE4LjAwMDUgNi4zOTQxOSAxOC4wMDA1IDguMTIwMzZMMTcuOTk1NiA4LjI4NjM4QzE3LjkwOTEgOS45OTEgMTYuNSAxMS4zNDY4IDE0Ljc3MzkgMTEuMzQ2OVY5LjcwOTIzQzE1LjY1MTQgOS43MDkxNSAxNi4zNjI3IDguOTk3ODggMTYuMzYyOCA4LjEyMDM2WiIvPgogIDxwYXRoIGQ9Ik02LjQ1MjgzIDguMTIwMjFDNi40NTI4MyA5LjkwMjExIDUuMDA4MzEgMTEuMzQ2NiAzLjIyNjQxIDExLjM0NjZDMS40NDQ1MSAxMS4zNDY2IDAgOS45MDIxMSAwIDguMTIwMjFDMCA2LjMzODMxIDEuNDQ0NTEgNC44OTM4IDMuMjI2NDEgNC44OTM4QzUuMDA4MzEgNC44OTM4IDYuNDUyODMgNi4zMzgzMSA2LjQ1MjgzIDguMTIwMjFaIi8%2BCiAgPHBhdGggZD0iTTUuMTQyNTggOC4xMjAzNkM1LjE0MjU4IDcuMDYyMjUgNC4yODQ2NiA2LjIwNDQzIDMuMjI2NTYgNi4yMDQzNUMyLjE2ODQgNi4yMDQzNSAxLjMxMDU1IDcuMDYyMiAxLjMxMDU1IDguMTIwMzZDMS4zMTA2MyA5LjE3ODQ2IDIuMTY4NDUgMTAuMDM2NCAzLjIyNjU2IDEwLjAzNjRWMTEuMzQ2OUwzLjA2MDU1IDExLjM0MkMxLjQxMDc3IDExLjI1ODUgMC4wODc1OTIgOS45MzYxMiAwLjAwMzkwNjI1IDguMjg2MzhMMCA4LjEyMDM2QzAgNi4zMzg0NiAxLjQ0NDY2IDQuODkzOCAzLjIyNjU2IDQuODkzOEwzLjM5MjU4IDQuODk3NzFDNS4wOTcyNiA0Ljk4NDE4IDYuNDUzMTIgNi4zOTQxOSA2LjQ1MzEyIDguMTIwMzZMNi40NDgyNCA4LjI4NjM4QzYuMzYxNzUgOS45OTEgNC45NTI2NiAxMS4zNDY4IDMuMjI2NTYgMTEuMzQ2OVYxMC4wMzY0QzQuMjg0NjEgMTAuMDM2MyA1LjE0MjUgOS4xNzg0MSA1LjE0MjU4IDguMTIwMzZaIi8%2BCiAgPHBhdGggZD0iTTEwLjM4NCA3LjMxNTE5TDEwLjM4NCA4Ljk1Mjg4TDQuODQ1OTUgOC45NTI4OEw0Ljg0NTk1IDcuMzE1MTlMMTAuMzg0IDcuMzE1MTlaIi8%2BCjwvc3ZnPgo%3D&logoColor=white" alt="Agent Plugins" /></a>
<a href="https://ratatui.rs/highlights/v030/"><img src="https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff" alt="Built with Ratatui" /></a>
<a href="https://deepwiki.com/vinhnx/VTCode"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" /></a>

</p>

<p align="center">
  <img src="./resources/gif/vtcode.gif" alt="VT Code demo" width="60%" style="border-radius: 10px" />
  <br><em>Secure, open, universal.</em>
</p>

VT Code is an open-source Rust terminal coding agent for interactive and
long-running autonomous workflows. It brings a responsive TUI, safe terminal
tools, multi-provider LLM support, open protocols, and extensible Skills into
one tool—so you can move from a question to a reviewed change without leaving
your terminal.

> **Project status:** Active development. VT Code is currently at version
> `0.146.4`; local inference and some automation workflows are experimental.
> Interfaces and configuration may change between releases.

## Contents

- [Features](#features)
- [Quick start](#quick-start)
- [Documentation](#documentation)
- [Providers](#providers)
- [Local models](#local-models-experimental)
- [Development](#development)
- [Contributing](#contributing)
- [Support](#support)
- [License](#license)

> New here? Start with [Installation](./docs/installation/README.md), then
> [Getting Started](./docs/user-guide/getting-started.md).

## Features

### Runtime and coding

- **Agent runtime**: interactive TUI, slash commands, streaming, `ask`/`exec` CLI, session resume, and review workflows
- **Coding tools**: safe file operations, [ripgrep](https://github.com/BurntSushi/ripgrep) search, [ast-grep](https://ast-grep.github.io/) symbol maps, fuzzy discovery, code intelligence, project indexing, and terminal execution

### Extensibility and providers

- **Extensibility**: [Agent Skills](https://agentskills.io), [MCP](https://modelcontextprotocol.io/) client/server, [Agent Plugins](https://agent-plugins.org), lifecycle hooks, subagents, custom providers, and [ACP](https://agentclientprotocol.com)
- **Model providers**: 26+ built-in providers, custom OpenAI-compatible endpoints, and **local inference via Ollama, LM Studio, and llama.cpp** (managed with `/local`)

### Safety and protocols

- **Safety**: restricted shell sandbox, tool guardrails, subprocess isolation, audit logging, and per-workspace approval before lifecycle hooks defined in workspace configuration (`vtcode.toml`, `.vtcode`, or agent-spec files) can run shell commands
- **Provider governance**: `providers_whitelist` restricts which LLM providers VT Code can access, preventing accidental data leakage to unapproved endpoints
- **Protocols**: Open Responses, Agent2Agent (A2A), ATIF, and Anthropic Messages API

### Automation and planning

- **Loop engineering**: worktree isolation for parallel agents, propose/verify sub-agent separation, durable loop state, and cost guardrails
- **Planning workflow**: iterate on a build plan with `/plan` and the `plan` primary agent, then hand off to `build`/`auto` via a structured review gate

## Quick start

### 1. Install

The native installer is recommended for macOS and Linux. It installs VT Code
and the `ripgrep` and `ast-grep` search tools used by its coding workflow.

```bash
curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash
```

Other installation methods are documented in the
[Installation Guide](./docs/installation/README.md).

```bash
# Homebrew
brew trust vinhnx/tap
brew install vinhnx/tap/vtcode

# Cargo
cargo install vtcode
```

### 2. Initialize a workspace

Run this from the project you want VT Code to work on:

```bash
cd path/to/your/project
vtcode init
```

This scaffolds project configuration and agent guidance. Review the generated
files before committing them.

### 3. Configure a provider

Set the API key for the provider you want to use (or configure an OAuth-based
provider with `vtcode login`). For example:

```bash
export OPENAI_API_KEY="sk-..."
```

See the [provider guides](./docs/providers/PROVIDER_GUIDES.md) for supported
providers, local inference options, and authentication details. Never commit
API keys or place them directly in `vtcode.toml`.

### 4. Launch VT Code

```bash
vtcode
```

VT Code opens an interactive terminal UI in the current workspace. Use `ask`,
`exec`, or `review` when you want a one-shot workflow.

### Common commands

```bash
vtcode                         # interactive TUI
vtcode init                    # scaffold project config + AGENTS.md
vtcode ask "explain Rc vs Arc" # one-shot question
vtcode exec "refactor main.rs" # headless task with full tool access
vtcode review                  # review uncommitted changes
vtcode update                  # self-update
```

## Documentation

### User guides

- [**Wiki**](https://github.com/vinhnx/VTCode/wiki): community wiki on getting started, configuration, providers, local models, skills, MCP, automation, security, and FAQ
- [**Installation**](./docs/installation/README.md): installation methods, provider setup, and troubleshooting
- [**Interactive TUI**](./docs/user-guide/interactive-mode.md): primary agents, slash commands (`/model`, `/review`, `/mcp`, `/skills`, `/theme`, `/compact`)
- [**CLI commands**](./docs/user-guide/commands.md): command reference for interactive, headless, review, and automation workflows
- [**Full automation**](./docs/guides/full-automation.md): `--full-auto` CLI, plan-build-evaluate harness, subagents, and scheduled tasks
- [**Providers**](./docs/providers/PROVIDER_GUIDES.md): setup guides for all 26+ providers
- [**Configuration**](./docs/config/CONFIG_FIELD_REFERENCE.md): `vtcode.toml`, tool config, and lifecycle hooks

### Integrations

- [**Agent Skills**](./docs/skills/SKILLS_GUIDE.md): creating, loading, and sharing skills
- [**Agent Plugins**](./docs/guides/agent-plugins.md): portable skill + MCP packages via `vtcode plugins`
- [**MCP Integration**](./docs/guides/mcp-integration.md): client and server modes
- [**Editor guides**](./docs/guides/zed-acp.md): Zed ACP, VS Code, and Claude Code

### Operations and architecture

- [**Safety**](./docs/security/SECURITY_MODEL.md): shell sandbox, security hardening, and threat model
- [**Protocols**](./docs/protocols/OPEN_RESPONSES.md): Open Responses, ATIF, A2A, and Anthropic Messages API
- [**Loop engineering**](./docs/project/PLAN-loop-engineering.md): worktree isolation, propose/verify, loop state, and cost guardrails
- [**Planning workflow**](./docs/guides/planning-workflow.md): `/plan`, review gate, and plan handoff to build/auto agents

### Reference

- [**Architecture**](./docs/ARCHITECTURE.md): workspace boundaries and runtime design
- [**Configuration field reference**](./docs/config/CONFIG_FIELD_REFERENCE.md): complete `vtcode.toml` reference
- [**Command security model**](./docs/development/COMMAND_SECURITY_MODEL.md): execution policy and sandbox boundaries
- [**Development setup**](./docs/development/DEVELOPMENT_SETUP.md): prerequisites and local workflow
- [**Testing**](./docs/development/testing.md): test profiles and verification commands

## Providers

VT Code supports 26+ built-in providers, local inference backends, and
custom OpenAI-compatible endpoints.

### Provider directory

| Category            | Providers                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cloud LLMs**      | [Anthropic](./docs/providers/PROVIDER_GUIDES.md#anthropic-claude) · [OpenAI](./docs/providers/PROVIDER_GUIDES.md#openai-gpt) · [Gemini](./docs/providers/PROVIDER_GUIDES.md#google-gemini) · [Meta AI (Muse)](./docs/providers/PROVIDER_GUIDES.md#meta-ai) · [Z.AI](./docs/providers/PROVIDER_GUIDES.md#zai-zai) · [Moonshot (Kimi)](./docs/providers/PROVIDER_GUIDES.md#moonshot-kimi) · [StepFun](./docs/providers/PROVIDER_GUIDES.md#stepfun) · [MiniMax](./docs/providers/PROVIDER_GUIDES.md#minimax) · [Mistral](./docs/providers/PROVIDER_GUIDES.md#mistral) · [Qwen](./docs/providers/PROVIDER_GUIDES.md#qwen) |
| **Foundations**     | [NVIDIA NIM](./docs/providers/PROVIDER_GUIDES.md#nvidia-nim) · [Xiaomi MiMo](./docs/providers/PROVIDER_GUIDES.md#xiaomi-mimo)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Gateways**        | [OpenRouter](./docs/providers/PROVIDER_GUIDES.md#openrouter-marketplace) · [Merge Gateway](./docs/providers/PROVIDER_GUIDES.md#merge-gateway) · [Evolink](./docs/providers/PROVIDER_GUIDES.md#evolink-multi-model-gateway) · [HuggingFace](./docs/providers/PROVIDER_GUIDES.md#huggingface) · [Atlas Cloud](./docs/providers/PROVIDER_GUIDES.md#atlas-cloud) · [OmniRoute](./docs/providers/PROVIDER_GUIDES.md#omniroute)                                                                                                                                                                                             |
| **Local inference** | [Ollama](./docs/providers/PROVIDER_GUIDES.md#ollama-local--cloud-models) · [LM Studio](./docs/providers/PROVIDER_GUIDES.md#lm-studio-local-server) · [llama.cpp](./docs/providers/PROVIDER_GUIDES.md#llamacpp-local-server)                                                                                                                                                                                                                                                                                                                                                                                           |
| **Other**           | [GitHub Copilot](./docs/providers/PROVIDER_GUIDES.md#github-copilot) · [Anthropic API Compat](./docs/providers/PROVIDER_GUIDES.md#anthropic-api-compatibility-server) · [Poolside](./docs/providers/PROVIDER_GUIDES.md#poolside)                                                                                                                                                                                                                                                                                                                                                                                      |

Additional built-in providers include [DeepSeek](./docs/providers/PROVIDER_GUIDES.md#deepseek),
[xAI](./docs/providers/PROVIDER_GUIDES.md#xai-grok), [OpenCode Zen](./docs/providers/PROVIDER_GUIDES.md#opencode-zen),
and [OpenCode Go](./docs/providers/PROVIDER_GUIDES.md#opencode-go).

See the [Provider Guides](./docs/providers/PROVIDER_GUIDES.md) for credentials,
model defaults, API capabilities, and setup details.
Merge Gateway is a built-in OpenAI-compatible gateway with curated routes and
pass-through support for valid explicit `provider/model` IDs.

### Configure a provider

List available providers and configure one from the CLI:

```bash
vtcode models list
vtcode models config
```

For a quick start, set the environment variable documented by your provider.
OAuth-based providers can use their dedicated `vtcode login` command.

### Custom providers

Use `[[custom_providers]]` to add a private gateway, an aggregator such as
Atlas Cloud or OmniRoute, or an internal inference cluster:

#### Basic configuration

```toml
[[custom_providers]]
name = "mycorp"
display_name = "MyCorp"
base_url = "https://llm.corp.example/v1"
api_key_env = "MYCORP_API_KEY"
model = "gpt-5-mini"
models = ["gpt-5-mini", "gpt-5.4"]
context_window = 256000   # optional; defaults to 128000 tokens
```

Set the corresponding environment variable before launching VT Code:

```bash
export MYCORP_API_KEY="..."
```

#### Capability settings

- `context_window`: capability size in tokens. It controls UI context sizing,
  compaction thresholds, and preflight token checks.
- `models`: optional model IDs to expose in the model picker. `model` remains
  the default selection.
- `api_format`: optional value of `auto`, `openai-chat`, `openai-responses`, or
  `anthropic-messages`. Omit it to preserve autodetection, or set it explicitly
  to prevent fallback to another format.
- Capability defaults include `supports_tools`, `supports_reasoning`,
  `supports_reasoning_effort`, `supports_vision`, `supports_structured_output`,
  `supports_parallel_tool_calls`, `supports_context_caching`,
  `supports_responses_compaction`, and `supports_context_edits`.

The separate `context.max_context_tokens` setting can impose a lower session
budget. See the [configuration reference](./docs/config/CONFIG_FIELD_REFERENCE.md),
the [custom provider configuration](./docs/config/config.md#custom_providers).

#### Model profiles

Use a profile for model-specific overrides:

```toml
[custom_providers.profiles."gpt-5.4"]
api_format = "openai-responses"
context_window = 131072
supports_tools = true
supports_vision = false
supports_structured_output = true
```

Profiles apply only to an existing model identifier. They do not add models to
the picker. Use `model` or `models` on the provider entry to control model
availability.

#### Validate the configuration

```bash
vtcode models list
vtcode models config
vtcode ask "Summarize this repository"
```

See the [worked provider examples](./docs/providers/PROVIDER_GUIDES.md#custom-providers)
for Atlas Cloud and OmniRoute.

### Provider governance

Use `providers_whitelist` in `vtcode.toml` to restrict access to approved
providers. This helps prevent accidental data leakage in corporate or
air-gapped environments.

```toml
# vtcode.toml
providers_whitelist = ["opencode-zen", "opencode-go", "gemini"]
```

Leave it empty, the default, to allow all built-in and custom providers. See
the [configuration reference](./docs/config/CONFIG_FIELD_REFERENCE.md) and
[Getting Started](./docs/user-guide/getting-started.md) for setup instructions.

## Local models (experimental)

Run models entirely on your machine for privacy, offline use, or zero token
cost. VT Code supports three local backends, all managed from the TUI:

### Supported backends

- **Ollama** (`ollama serve`), best-supported local backend; auto-loads pulled models.
- **LM Studio** (`lms server start`), OpenAI-compatible; select the loaded model in the picker.
- **llama.cpp** (`llama-server -m model.gguf`), most automated; auto-starts via `LLAMACPP_MODEL_PATH`.

### TUI commands

```text
/local                 # interactive local server manager
/local start ollama   # start a specific backend
/local troubleshoot   # diagnose connection / model issues
```

Before each generation VT Code verifies the server is up and the model is
loaded, and on failure prints the exact recovery command (e.g.
`ollama pull gpt-oss:20b`) instead of a cryptic error. Local inference is
**experimental** and depends on your hardware. See
[Local Models guide](./docs/guides/local-models.md) for trade-offs, hardware
sizing, and a reliable-setup checklist. For the full `/local` reference, see
[Local Inference Servers](./docs/providers/local-servers.md).

## Development

### Build from source

```bash
git clone https://github.com/vinhnx/vtcode.git
cd vtcode
./scripts/run-debug.sh
```

### Workspace layout

Rust stable, edition 2024, MSRV 1.93.0. The workspace contains roughly 30
crates; the root binary and core/UI crates are included in the default build:

| Layer   | Crates                                                                                                                                                                                                                       |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Binary  | `vtcode`                                                                                                                                                                                                                     |
| Common  | `vtcode-commons`, `vtcode-exec-events`, `vtcode-macros`, `vtcode-utility-tool-specs`                                                                                                                                         |
| Codegen | `vtcode-core`, `vtcode-ui`, `vtcode-config`, `vtcode-llm`, `vtcode-skills`, `vtcode-safety`, `vtcode-a2a`, `vtcode-mcp`, `vtcode-auth`, `vtcode-acp`, `vtcode-indexer`, `vtcode-bash-runner`, `vtcode-memory`, `vtcode-eval` |

### Library use

For crate-based integrations, see [`vtcode-battery-pack`](https://github.com/vinhnx/vtcode-battery-pack).

### Quality checks

```bash
./scripts/check-dev.sh   # fast quality gate: clippy, fmt, and check
cargo nextest run        # parallel test runner
```

CI runs locked dependency resolution and treats warnings as errors. For a
faster local iteration loop, use `./scripts/check-dev.sh`; use nextest rather
than `cargo test` for the project's test suite.

## Contributing

VT Code is built by an open-source community. Whether you're fixing bugs, improving docs, proposing features, reporting security issues, or shipping patches, all contributions are welcome.

### Ways to contribute

- **Security advisories**: Responsible disclosure makes everyone safer. See the [Security Policy](https://github.com/vinhnx/VTCode/security/policy) for reporting guidelines.
- **Bug fixes and patches**: Small or large, every fix matters.
- **Documentation**: Guides, examples, and improvements help the whole ecosystem.
- **Features and ideas**: Open an issue or start a discussion.
- **Code reviews and testing**: Help keep the project healthy.

### Getting started

- Browse [good first issues](https://github.com/vinhnx/vtcode/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
- Read [CONTRIBUTING.md](./docs/CONTRIBUTING.md) for humans
- Check [AGENTS.md](./AGENTS.md) for AI agents

### Contributors

Thank you to everyone who has contributed to VT Code, your work makes this project better for all of us.

<p align="center">
  <a href="https://github.com/kernitus"><img src="https://avatars.githubusercontent.com/u/2789734?s=60" width="40" height="40" alt="@kernitus" title="@kernitus 👑 Main Contributor (53 commits)" style="border-radius: 50%; border: 2px solid #FFD700;" /></a>&nbsp;
  <a href="https://github.com/raphamorim"><img src="https://avatars.githubusercontent.com/u/3630346?s=60" width="40" height="40" alt="@raphamorim" title="@raphamorim 💡 PR #708, rio-vt migration (1 commit)" style="border-radius: 50%; border: 2px solid #4A90D9;" /></a>&nbsp;
  <a href="https://github.com/nnfrog"><img src="https://avatars.githubusercontent.com/u/142202920?s=60" width="40" height="40" alt="@nnfrog" title="@nnfrog 🛡️ GHSA-r249-hpfx-x2w7 (security advisory)" style="border-radius: 50%; border: 2px solid #FF6B6B;" /></a>&nbsp;
  <a href="https://github.com/glmgbj233"><img src="https://avatars.githubusercontent.com/u/115564047?s=60" width="40" height="40" alt="@glmgbj233" title="@glmgbj233 🛡️ GHSA-wqgw-crr5-cr2p (security advisory)" style="border-radius: 50%; border: 2px solid #FF6B6B;" /></a>&nbsp;
  <a href="https://github.com/oiwn"><img src="https://avatars.githubusercontent.com/u/398035?s=60" width="40" height="40" alt="@oiwn" title="@oiwn 🚀 Core contributor (10 commits)" style="border-radius: 50%; border: 2px solid #50C878;" /></a>&nbsp;
  <a href="https://github.com/Sachin-Bhat"><img src="https://avatars.githubusercontent.com/u/25080916?s=60" width="40" height="40" alt="@Sachin-Bhat" title="@Sachin-Bhat 🚀 Core contributor (6 commits)" style="border-radius: 50%; border: 2px solid #50C878;" /></a>&nbsp;
  <a href="https://github.com/chenrui333"><img src="https://avatars.githubusercontent.com/u/1580956?s=60" width="40" height="40" alt="@chenrui333" title="@chenrui333 🚀 Core contributor (6 commits)" style="border-radius: 50%; border: 2px solid #50C878;" /></a>&nbsp;
  <a href="https://github.com/gzsombor"><img src="https://avatars.githubusercontent.com/u/66230?s=60" width="40" height="40" alt="@gzsombor" title="@gzsombor 🚀 Core contributor (4 commits)" style="border-radius: 50%; border: 2px solid #50C878;" /></a>&nbsp;
  <a href="https://github.com/leonj1"><img src="https://avatars.githubusercontent.com/u/5171829?s=60" width="40" height="40" alt="@leonj1" title="@leonj1 🚀 Core contributor (2 commits)" style="border-radius: 50%; border: 2px solid #50C878;" /></a>&nbsp;
  <a href="https://github.com/netbrah"><img src="https://avatars.githubusercontent.com/u/162479981?s=60" width="40" height="40" alt="@netbrah" title="@netbrah 🚀 Core contributor (2 commits)" style="border-radius: 50%; border: 2px solid #50C878;" /></a>&nbsp;
  <a href="https://github.com/morler"><img src="https://avatars.githubusercontent.com/u/478444?s=60" width="40" height="40" alt="@morler" title="@morler ✨ Contributor (2 commits)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/poelzi"><img src="https://avatars.githubusercontent.com/u/66107?s=60" width="40" height="40" alt="@poelzi" title="@poelzi ✨ Contributor (2 commits)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/uiYzzi"><img src="https://avatars.githubusercontent.com/u/40852301?s=60" width="40" height="40" alt="@uiYzzi" title="@uiYzzi ✨ Contributor (1 commit)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/ForrestThump"><img src="https://avatars.githubusercontent.com/u/44280834?s=60" width="40" height="40" alt="@ForrestThump" title="@ForrestThump ✨ Contributor (1 commit)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/TuanLe-bk18"><img src="https://avatars.githubusercontent.com/u/222461688?s=60" width="40" height="40" alt="@TuanLe-bk18" title="@TuanLe-bk18 ✨ Contributor (1 commit)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/RobertBorg"><img src="https://avatars.githubusercontent.com/u/1288566?s=60" width="40" height="40" alt="@RobertBorg" title="@RobertBorg ✨ Contributor (1 commit)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/diegosouzapw"><img src="https://avatars.githubusercontent.com/u/8016841?s=60" width="40" height="40" alt="@diegosouzapw" title="@diegosouzapw ✨ Contributor (1 commit)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/xcrong"><img src="https://avatars.githubusercontent.com/u/46434477?s=60" width="40" height="40" alt="@xcrong" title="@xcrong ✨ Contributor (1 commit)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>&nbsp;
  <a href="https://github.com/Sanjays2402"><img src="https://avatars.githubusercontent.com/u/51058514?s=60" width="40" height="40" alt="@Sanjays2402" title="@Sanjays2402 ✨ Contributor (1 commit)" style="border-radius: 50%; border: 2px solid #B19CD9;" /></a>
</p>

## Support

### Sponsorship

VT Code is a labor of love built in my spare time. If it's helped you ship something or learn something, a [sponsorship](https://github.com/sponsors/vinhnx) would mean the world.

<p align="center">
  <a href="https://github.com/dnhn"><img src="https://avatars.githubusercontent.com/u/2561973" width="80" height="80" alt="@dnhn" style="border-radius: 50%" /></a>
  <a href="https://github.com/codemod"><img src="https://avatars.githubusercontent.com/u/78830094" width="80" height="80" alt="@codemod" style="border-radius: 50%" /></a>
  <a href="https://github.com/coderabbitai"><img src="https://avatars.githubusercontent.com/u/132028505" width="80" height="80" alt="@coderabbitai" style="border-radius: 50%" /></a>
  <a href="https://github.com/KhaiRyth"><img src="https://avatars.githubusercontent.com/u/273723951" width="80" height="80" alt="@KhaiRyth" style="border-radius: 50%" /></a>
</p>

<p align="center">
  <a href="https://github.com/sponsors/vinhnx"><img src="https://img.shields.io/badge/%E2%9D%A4%20Sponsor-30363D?style=for-the-badge&logo=github-sponsors&logoColor=#EA4AAA" alt="GitHub Sponsors" height="33" /></a>&nbsp;&nbsp;&nbsp;
  <a href="https://buymeacoffee.com/vinhnx"><img src="./resources/screenshots/qr_donate.png" alt="Buy Me a Coffee" width="100" style="border-radius: 12px" /></a>
</p>

## License

First-party code is licensed under **MIT OR Apache-2.0**, choose whichever works best for you. See [LICENSE](LICENSE) for the full Apache-2.0 text; MIT terms are also granted under the same copyright.

Third-party and inspired-by code remains under its original licenses. See [THIRD-PARTY-NOTICES](THIRD-PARTY-NOTICES) for attributions.