Terminal-first coding agent. Desktop-ready on macOS.
Explore, plan, edit, and verify with your model of choice.
VT Code is a terminal-first coding agent for your repo, in the CLI and native macOS app. Context, tool calls, and execution policy stay auditable and resumable across long tasks. It is open source under MIT OR Apache-2.0; see Contributing and License.
| At a glance | What you get |
|---|---|
| Planning | Plan read-only, review turn diffs; HOVER revises on mismatch. |
| Safety | Auditable command policy with sandboxing. |
| Long runs | Headless exec with resume and compaction; snapshots roll back state; subagents for parallel work. |
| Extensions | MCP, skills, plugins, hooks, editor bridges; A2A, ACP, WebMCP, Companion. |
| Models | Hosted or local providers per task; evals measure behavior before release. |
Details live in Documentation; the table above is the short map.
Three steps on macOS, Linux, or Windows/WSL. Source builds need Rust 1.99.1+ (edition 2024). VT Code ships its own search engine; see the installation guide for prerequisites.
# Review the installer script before running it: https://github.com/vinhnx/vtcode/blob/main/scripts/install.sh
curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bashOr install with Homebrew or Cargo (desktop cask: see Desktop app):
brew trust vinhnx/tap
brew install vinhnx/tap/vtcode
# Or install from crates.io (published; see the installation guide)
cargo install vtcodeOn Windows (best-effort artifacts; may lag behind macOS/Linux and may not appear in every release):
irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iexVerify with vtcode --version. The installation guide covers remaining
methods and desktop flags.
In your project directory, scaffold config and add credentials:
cd path/to/your/project
vtcode init # scaffolds config + AGENTS.md; review before committing
vtcode secret add openai # stores your OpenAI API key in secure storageReplace openai with your provider. Keys use secure storage (OS keyring or encrypted file); environment
variables, a workspace .env file, or vtcode login work where supported. See
getting started and the provider guides.
Note: ChatGPT users can also run
vtcode login openaifor in-process OAuth, or reuse the Codex CLI login withvtcode login openai --from-codex; GitHub Copilot uses the officialcopilotCLI. See OAuth authentication.Caution: Keep API keys out of Git and
vtcode.toml; never commit a workspace.envfile.
vtcode # open the interactive TUIAsk one focused question, review the proposed changes and test results, then commit. Usage covers automation and session commands.
Common commands (full list in the command reference):
| Goal | Command |
|---|---|
| Start the TUI | vtcode |
| Ask without tools | vtcode ask "explain Rc vs Arc" |
| Run a task headlessly | vtcode exec "refactor main.rs" |
| Review pending changes | vtcode review |
| Schedule recurring work | vtcode schedule create --prompt "..." --every 1h |
| Resume the last session | vtcode continue |
| Resume a headless run | vtcode exec resume --last "prompt" |
| Roll back a snapshot | vtcode snapshots / vtcode revert |
| Inspect a run log | vtcode trajectory |
For larger tasks, start read-only, review the turn diff before committing, and use /explain for a
summary without another model call. See the interactive guide.
askis tool-free: it prints one reply and exits.execruns the full tool loop and needs explicit workspace trust (approve the TTY prompt or setVTCODE_TRUST_WORKSPACE=full-autofor non-TTY runs;denyrefuses trust instead of prompting).[automation.full_auto]allow-lists, denies, and execution policy still apply.reviewinspects uncommitted changes without running the agent loop.
Scheduled work reuses the same exec runtime. Resume or fork with vtcode continue (or --session-id <id>),
and resume headless runs with vtcode exec resume --last "<prompt>". See exec mode
and full automation.
The native macOS app shares the CLI runloop, providers, tool policy, sandboxing, sessions, configuration, and credentials. Configure a provider first (see Quick start).
On Apple Silicon macOS 15+ (update with brew upgrade --cask vinhnx/tap/vtcode-desktop):
brew trust vinhnx/tap
brew install --cask vinhnx/tap/vtcode-desktopWithout Homebrew, use the latest release or
vtcode desktop --install, then launch with vtcode desktop or from Finder.
Warning
First launch needs a one-time approval for ad hoc-signed builds (Homebrew cask included): open once, click Open Anyway in System Settings › Privacy & Security, then reopen. Notarized releases skip this. See the desktop workspace guide for requirements and troubleshooting.
Start from the documentation index or Wiki. Curated entry points by task:
- Installation and getting started
- Providers and OAuth login
- FAQ and compatibility
- Skills, plugins, and MCP (interop)
- Editors (ACP), WebMCP (deployment), A2A, and Companion
- Development, testing, and evals
- Architecture, desktop app, and loop engineering, and protocols
Non-exhaustive sketch of the 25-crate workspace (the architecture guide covers the
full crate list; default-members build only the root binary, vtcode-core, and vtcode-ui):
graph LR
BIN[vtcode binary] --> CORE[vtcode-core harness]
CORE --> LLM[vtcode-llm]
CORE --> SAFETY[vtcode-safety]
CORE --> EVENTS[vtcode-exec-events (crates/common)]
CORE --> MEMORY[vtcode-memory]
CORE --> UI[vtcode-ui]
Build with Rust 1.99.1+ (edition 2024; workspace version 0.182.0).
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 (add --test for tests)
cargo nextest run # tests via nextest (see testing guide)CI builds with --locked and RUSTFLAGS="-D warnings"; match locally with
RUSTFLAGS="-D warnings" cargo check --locked. See the development overview and
testing guide.
Release binaries and notes live on GitHub releases.
VT Code is open source and community-driven. Forking, modifying, and contributing are all welcome.
- Fork and modify: keep changes in your fork or send them back as a pull request.
- Contribute upstream: code, docs, evals, bug fixes, and features are welcome;
bug reports should include
vtcode trajectoryoutput where possible. - Before you open a PR: read the contribution guide; start with a good first issue or help wanted item.
If you fork and ship your own variant, keep the license and third-party notices intact (see License).
Report vulnerabilities privately via GitHub private vulnerability reporting. See the security policy.
The Code of Conduct keeps review constructive.
Contact: vinhnguyen2308 [at] gmail [dot] com.
Thank you to everyone below. You are the reason this project keeps moving.
Want to see your avatar here? Every bit counts: a one-line fix, a bug report, or a thoughtful comment. Not sure where to begin? Say hello on a good first issue and we will figure it out together.
Current sponsors: Codemod and CodeRabbit.
If you like VT Code, please star the repo and share it — starring helps discovery and brings in new users, contributors, and sponsors. Thank you for growing the community.
First-party code is MIT OR Apache-2.0, available under either LICENSE-MIT or LICENSE (Apache-2.0). You are welcome to fork, use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the code, for personal or commercial use, under either license. Keep the license and copyright notices when you distribute copies. Third-party code keeps its original licenses, listed in THIRD-PARTY-NOTICES.

