An open-source terminal coding agent built in Rust.
Plan, run, and review coding work from your terminal — with hosted or local models, sandboxed execution, and resumable sessions.
Plan, run, and review coding work from your terminal.
Contents
VT Code is an open-source terminal coding agent built in Rust. Explore a codebase, plan changes, run tools, and review
edits in the interactive TUI, or run vtcode exec headless. You pick the model and permissions; the runtime handles
context, tools, and execution policy.
| At a glance | What you get |
|---|---|
| Planning | Read-only planning, then reviewable turn diffs. |
| Safety | Command policy and sandboxing you can audit. |
| Long runs | Headless exec, compaction, resumption, and logs. |
| Integrations | MCP, Skills, plugins, and editor bridges. |
| Models | Hosted or local providers, chosen per task. |
Requirements: macOS, Linux, or Windows/WSL. The Cargo path also needs Rust 1.98.1+ (edition 2024).
curl -fsSL https://raw.githubusercontent.com/vinhnx/VTCode/main/scripts/install.sh | bashThe installer also sets up ripgrep and ast-grep on macOS/Linux. Or use Homebrew or Cargo:
brew trust vinhnx/tap
brew install vinhnx/tap/vtcode
# Or install with Rust (requires Rust 1.98.1+)
cargo install vtcodeVerify the install with vtcode --version, then see the installation guide for
prerequisites, other methods, and the installer script you can review before running.
Note
Windows artifacts are best-effort and may lag behind macOS/Linux.
In your project, initialize configuration and instructions, then add provider credentials. For example, with OpenAI:
cd path/to/your/project
vtcode init # scaffolds config + AGENTS.md; review before committing
vtcode secret add openai # stores an OpenAI API key in your OS keyringReplace openai with your supported provider. Credentials can also come from environment variables or a workspace
.env; vtcode login handles supported login flows. See Getting started and
Provider guides.
Note
ChatGPT OAuth reuses the Codex CLI's public client identity via an unofficial compatibility flow; prefer your
own OpenAI API key. GitHub Copilot uses the official copilot CLI. See
OAuth authentication.
Caution
Never commit API keys or put them in vtcode.toml.
vtcode # open the interactive TUI in your projectStart with a focused request, such as “Explain how this project handles authentication,” then review the diff and test results before committing. For automation and session commands, see Usage.
Use vtcode to explore, plan, and implement changes in the TUI. For larger tasks, start with
read-only planning, then review
turn diffs before committing. See the
interactive guide for controls.
After a task, enter /explain to review its outcome, changes, recorded decisions, verification, and review priorities
without another model call. Use /explain --details to inspect evidence, /explain diagram for execution relationships,
or /explain --web for the browser view with an offline fallback. /explain --export html saves a standalone report.
See explanation usage for scopes and report options.
Run tasks without the TUI: ask for a tool-free answer, exec for a tool-enabled coding task, and review for
uncommitted changes:
vtcode ask "explain Rc vs Arc" # one-shot answer, no session, no tools
vtcode exec "refactor main.rs" # headless task with the full tool loop
vtcode review # agent review of uncommitted changesexec requires autonomous execution enabled in [automation.full_auto] plus full_auto workspace trust: a terminal
prompts for trust, while non-TTY runs fail unless you set VTCODE_TRUST_WORKSPACE=full-auto. Full-auto's tool
allow-list, explicit denies, and execution policy still apply. See exec mode for trust
and output options and full automation for configuration.
For repeatable, environment-checked results, use the eval framework — a completion message alone is not verification.
For recurring work, use scheduled tasks: durable prompt jobs on the same exec runtime.
# Weekly dependency audit (Mondays 09:00)
vtcode schedule create --name "weekly-dep-audit" \
--cron "0 9 * * 1" \
--prompt "Check for outdated dependencies and report known vulnerabilities"Resume or inspect earlier work:
# Resume the most recent interactive session
vtcode continue
# Continue the last headless run with a follow-up prompt
vtcode exec resume --last "continue the refactor"
# Inspect the execution log
vtcode trajectoryUse vtcode continue --session-id <id> to fork an earlier session.
Enable these only when you need them; none are required for the quick start.
MCP servers, Agent Skills, and Plugins.
ACP with Zed for editor integration. WebMCP pairs the TUI with an authenticated browser editor:
/webmcp pair <origin> # inside the TUIThe hosted app at vtcode.vinhnx.chatgpt.site (mirror) uses this workspace-scoped bridge. See the WebMCP user guide and deployment reference.
Memcode MCP carries context between tasks; see the write-up.
Guides by task; the full catalog lives in the documentation index, the docs overview, and the Wiki:
| Goal | Guides |
|---|---|
| Get started | Installation · Getting started · Providers · OAuth login · FAQ · Compatibility |
| Work in the TUI | TUI · Command reference · Planning · Turn diffs · Configuration · Safety |
| Automate | Exec mode · Full automation · Scheduled tasks · Hooks |
| Extend and integrate | Skills · Plugins · MCP · Editors (ACP) · WebMCP · Memcode |
| Develop and evaluate | Development · Testing · Evals · Architecture · Protocols · Loop engineering |
graph LR
BIN[vtcode binary] --> CORE[vtcode-core harness]
BIN --> EVAL[vtcode-eval]
CORE --> LLM[vtcode-llm]
CORE --> SAFETY[vtcode-safety]
CORE --> EVENTS[vtcode-exec-events]
CORE --> CONFIG[vtcode-config]
CORE --> MEMORY[vtcode-memory]
CORE --> UI[vtcode-ui]
Full 23-crate map: Architecture guide. Requires Rust 1.98.1+ (edition 2024) and
cargo-nextest for tests:
git clone https://github.com/vinhnx/VTCode.git
cd VTCode
./scripts/run-debug.sh # build and launch a debug binary
./scripts/check-dev.sh # fast gate: clippy, fmt, check
cargo nextest run # tests (requires cargo-nextest)CI sets RUSTFLAGS="-D warnings" and builds with --locked; match locally with
RUSTFLAGS="-D warnings" cargo check --locked. Setup and checks: development overview ·
testing guide.
Release binaries and notes: GitHub releases.
Contributions are welcome:
- Code — pick or propose an issue; keep changes surgical and tested.
- Docs — every user-facing feature lands with its documentation.
- Evals — new suites and regression cases are high-leverage; see the eval guide.
- Bug reports — include
vtcode trajectoryoutput when possible.
Before a PR, see the contribution guide: Conventional Commits (type(scope): subject),
./scripts/check-dev.sh + cargo nextest run, and a focused diff.
Thanks to everyone who builds, tests, and improves VT Code.
Want to see your avatar here? Every bit counts: one-line fixes, bug reports, and feedback are all welcome.
Report a bug · Request a feature · Share feedback · Star the repo · Contribute
Partnerships and collaboration: vinhnguyen2308 [at] gmail [dot] com. Bugs and feature requests:
GitHub Issues. Security vulnerabilities: report privately via
GitHub private vulnerability reporting; never open a public
issue. Details: security policy.
- Building VT Code, a year in: harness design, evals, security, lessons learned.
- Podcast · Video
If VT Code helped you ship something, telling other developers is the easiest way to support it:
Share on X · Share on Hacker News · Share on LinkedIn · Share via Email · Share via SMS
VT Code is maintained in spare time; a sponsorship keeps it independent.
First-party code is MIT OR Apache-2.0 (LICENSE); third-party code keeps its original licenses (THIRD-PARTY-NOTICES).
