vtcode

App Listed

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers

Checked · Sources

Downloads
56
Dependents
Not applicable
Stars
903
Forks
98
Contributors
33
Commits
10,180
Latest release
0.181.5 ·

About

From the project README ·

VT Code

Terminal-first. Desktop-ready.
Explore, plan, edit, and verify with your model of choice.

VT Code Desktop Desktop app

Terminal TUI demo
Terminal TUI

Overview

VT Code is a terminal-first coding agent for your repository, in the CLI and its native macOS app. It owns context, tool calls, and execution policy so long tasks stay auditable and resumable.

At a glanceWhat you get
PlanningPlan read-only, then review turn diffs.
SafetyAuditable command policy with sandboxing.
Self-correctHOVER loop on mismatch.
Long runsHeadless exec with resume and compaction.
IntegrationsMCP, skills, plugins, and editor bridges.
ModelsHosted or local providers per task.

Quick start

Runs on macOS, Linux, or Windows/WSL. Building from source needs Rust 1.99.1+ (edition 2024); the installation guide covers prerequisites and optional search tools.

1. Install
# 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 | bash

Or install the CLI with Homebrew or Cargo (the desktop cask lives in Desktop app):

brew trust vinhnx/tap && brew install vinhnx/tap/vtcode

# Or install from crates.io
cargo install vtcode
Read the full README

On Windows (best-effort artifacts; may lag behind macOS/Linux):

irm https://raw.githubusercontent.com/vinhnx/VTCode/main/scripts/install.ps1 | iex

Verify with vtcode --version. The installation guide covers other install methods, desktop flags, and optional search tools.

2. Configure your project

In your project directory, scaffold configuration 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 storage

Replace openai with your provider. Keys use secure storage (OS keyring or encrypted file); alternatives are environment variables, a workspace .env file, or vtcode login where supported. See getting started and the provider guides for provider-specific setup.

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: Keep API keys out of Git and vtcode.toml; never commit a workspace .env file.

3. Run your first task
vtcode   # open the interactive TUI in your project

Ask a focused question, then review proposed changes and test results before committing. See Usage for automation and session commands.

Usage

Common commands (see the command reference):

GoalCommand
Start the TUIvtcode
Ask without toolsvtcode ask "explain Rc vs Arc"
Run a task headlesslyvtcode exec "refactor main.rs"
Review pending changesvtcode review
Schedule recurring workvtcode schedule create --prompt "..." --every 1h
Resume the last sessionvtcode continue
Inspect a run logvtcode 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.

Modes
  • ask is tool-free: it prints one reply and exits.
  • exec runs the full tool loop under explicit workspace trust (full_auto plus [automation.full_auto]). Terminals prompt for trust; non-TTY runs need VTCODE_TRUST_WORKSPACE=full-auto. Allow-lists, denies, and execution policy still apply.
  • review inspects uncommitted changes.

Schedule recurring work on the same exec runtime. Resume or fork with vtcode continue (or --session-id <id>), resume headless runs with vtcode exec resume --last, and inspect logs with vtcode trajectory. See exec mode and full automation.

Desktop app

The native macOS app shares the CLI runloop, providers, tool policy, sandboxing, sessions, configuration, and credentials. Configure a provider first (see Quick start).

Install (macOS 15+)

On Apple Silicon, install it with Homebrew (update with brew upgrade --cask vinhnx/tap/vtcode-desktop):

brew install --cask vinhnx/tap/vtcode-desktop

Without Homebrew, download it from the latest release or run vtcode desktop --install. Launch it with vtcode desktop or from Finder. Intel Macs build from source.

[!WARNING] First launch needs a one-time macOS security approval. Builds are ad hoc signed, not notarized, so macOS blocks the first launch (Homebrew cask installs included). Open the app once, click Open Anyway in System Settings › Privacy & Security, then open it again. The button shows for about an hour after a block.

See the desktop workspace guide for requirements, source builds, and troubleshooting.

Documentation

Start from the documentation index or Wiki; integrations below are optional.

Get started
Work in the TUI
Automate
Extend and integrate
Develop and evaluate

Development

graph LR
    BIN[vtcode binary] --> CORE[vtcode-core harness]
    CORE --> LLM[vtcode-llm]
    CORE --> SAFETY[vtcode-safety]
    CORE --> EVENTS[vtcode-exec-events]
    CORE --> MEMORY[vtcode-memory]
    CORE --> UI[vtcode-ui]

Build with Rust 1.99.1+ (edition 2024) and install cargo-nextest to run tests. The architecture guide maps all 25 crates, including the context and compaction design.

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 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.

Contributing

Contributions are welcome: code, docs, evals, and bug reports (include vtcode trajectory output). Read the contribution guide before opening a PR; MCP maintainers should also see the interop guide.

Security

Report vulnerabilities privately with GitHub private vulnerability reporting. See the security policy.

Community

The Code of Conduct keeps review constructive. Contact: vinhnguyen2308 [at] gmail [dot] com.

Thanks to our contributors

Thank you to everyone below. You are the reason this project keeps moving.

View all contributors (30)

Security Advisors
Main Contributor
Core Contributors
Contributors

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.

Resources

Support VT Code

Thanks to current sponsors: Codemod and CodeRabbit.

Thank you

License

First-party code is MIT OR Apache-2.0, available under either LICENSE-MIT or LICENSE (Apache-2.0). Third-party code keeps its original licenses, listed in THIRD-PARTY-NOTICES.

Runs on
GPU support unknown
What shows it
  • no dependency or feature matches a backend row
Native code
Required
  • Binds native code: ring, tree-sitter, vtcode-ghostty-vt-sys, libdbus-sys, libmimalloc-sys and 4 more
Python bindings
No Python binding crate found
License
Apache-2.0 OR MIT

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

vtcode beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
vtcode This page App Listed

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers

56 binary downloads per release Not applicable 903 0.181.5 GPU support unknown Binds native code: ring, tree-sitter, vtcode-ghostty-vt-sys, libdbus-sys, libmimalloc-sys and 4 more Apache-2.0 OR MIT
llm Featured

A Rust library unifying multiple LLM backends.

7,669 downloads over 30 days 34 365 1.3.8 GPU support unknown Binds native code: alsa-sys (feature audio-example) MIT
liter-llm Listed

Universal LLM API client — 174 providers, streaming, tool calling. Rust-powered, type-safe, compiled.

13,151 downloads over 30 days 8 264 2.7.0 GPU support unknown Binds native code: libmimalloc-sys (feature mimalloc), tikv-jemalloc-sys (feature jemalloc) MIT
oatmeal App Listed Dormant

Terminal UI to chat with large language models (LLM) using different model backends, and integrations with your favourite editors!

5,642 binary downloads per release Not applicable 772 0.13.0 GPU support unknown No native code found MIT
rllm Listed

Unifies multiple LLM backends in Rust.

60 downloads over 30 days 0 137 1.1.9 GPU support unknown No native code found MIT
ollamaMQ App Listed

High-performance LLM backends proxy with per-user fair-share queuing, round-robin scheduling, and a real-time TUI dashboard. Built in Rust.

8 downloads over 30 days Not applicable 133 0.5.0 GPU support unknown No native code found MIT
axp App Listed

An open protocol that gives AI agents a secure, sandboxed place to run code and use tools — with lean context usage. AXP works alongside MCP

Not measured Not applicable 3 Not measured Not measured Not measured Apache-2.0
Why ListedNo archive, New or Featured rule places it, so it is Listed.

What it lacks for Featured

  • The check holds no value for Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days. A gate that lacks its signal does not pass.

What else the check found

  • The last activity is on 8 Nov 2026, 1 day ago. The rules expect an update within 365 days. Dormancy rule

Not measured: Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days.

Exact rules: Listed, Featured app. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: app: E = 365 days
  • dormancy: last activity 2026-11-08, 1 days ago, E = 365: active
  • featured: not featured: unknown homebrew_on_request_365d, repology_families, docker_pull_growth_90d
  • listed: listed: no archive, new or featured rule applies
Crates37 crates

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources6 sources
Adoption56 binary downloads per release4 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependentsNot measuredYes
New dependents (365 days)Not measuredYes
Peak active dependentsNot measuredYes
Active dependents as a share of the peakNot measuredYes
Binary downloads per release56GitHub releasesYes
MaintenanceLatest human commit: 1 day ago4 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-11-08GitHub repositoryYes
Latest release2026-11-08GitHub releasesYes
First release2025-09-18crates.io database dumpYes
Latest version0.181.5crates.io database dumpNo
Days the oldest outside issue waits for a reply49GitHub repositoryYes
Maintainer replies over 365 days185GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruecrates.io packageNo
Published docsNot measuredYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityNot measured
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windowNot measuredYes
RustSec unmaintained advisoryNot measuredYes
Deprecation noticeNot measuredYes
Deprecated requirementNot measuredYes
Distribution534 releases, 393 downloads over 30 days6 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases534crates.io database dumpNo
Downloads over 30 days393crates.io database dumpNo
Binary downloads over the last 3 releases168GitHub releasesYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedNot measuredYes
Crate deleted from crates.ioNot measuredYes
Repository903 stars, 98 forks, 33 contributors, 10,180 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars903GitHub repositoryYes — one part of the repository route
GitHub forks98GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account33GitHub contributorsYes — one part of the repository route
Commits on the default branch10180GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseApache-2.0 OR MITcrates.io database dumpNo
Runs on, from listed crates and their direct dependenciesGPU support unknowncrates.io database dumpNo
What shows each backendno dependency or feature matches a backend rowcrates.io database dumpNo
Native code, from listed crates and their dependenciesBinds native code: ring, tree-sitter, vtcode-ghostty-vt-sys, libdbus-sys, libmimalloc-sys and 4 morecrates.io database dumpNo
Python bindings, from direct dependencies of listed cratesNo Python binding crate foundcrates.io database dumpNo
Crates that depend on a listed crate directlyNot measuredNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.