[package]
name = "vtcode"
version = "0.88.0"
edition = "2024"
rust-version = "1.88"
authors = ["Vinh Nguyen <vinhnguyen2308@gmail.com>"]
description = "A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers"
license = "MIT"
readme = "README.md"
homepage = "https://github.com/vinhnx/vtcode"
repository = "https://github.com/vinhnx/vtcode"
documentation = "https://docs.rs/vtcode"
keywords = ["ai", "coding", "agent", "llm", "cli"]
categories = ["command-line-utilities", "development-tools", "api-bindings"]
exclude = [
"target/",
".github/",
"docs/**",
"!docs/config/CONFIG_FIELD_REFERENCE.md",
"scripts/",
"screenshots/",
"logs/",
"prompts/",
"dist/",
"npm/",
"vtcode-core/embedded_assets_source/",
"resources/",
]
default-run = "vtcode"
[workspace.dependencies]
base64 = "0.22.1"
crossterm = "0.29"
schemars = "1.2"
thiserror = "2.0.18"
unicode-width = "0.2.0"
serde_json = "1.0"
tempfile = "3.25"
tokio = { version = "1.49", features = ["full"] }
anyhow = "1.0"
serde = { version = "1.0", features = ["derive"] }
regex = "1.12"
num_cpus = "1.16"
clap = { version = "4.5", features = ["derive"] }
pretty_assertions = "1.4"
libc = "0.2"
rand = "0.10"
semver = "1.0"
fs2 = "0.4"
mimalloc = { version = "0.1", default-features = false }
hashbrown = { version = "0.15", features = ["serde"] }
rustc-hash = "2.1"
keyring = "3"
libloading = "0.8"
tracing = "0.1"
chrono = { version = "0.4", features = ["serde"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "stream"] }
assert_fs = "1.1"
futures = "0.3"
once_cell = "1.19"
indexmap = { version = "2.13", features = ["serde"] }
async-trait = "0.1.89"
anstyle = "1.0"
ratatui = { version = "0.30", default-features = false, features = ["crossterm"] }
toml = "0.9.11"
sha2 = "0.10"
anstyle-git = "1.1"
tokio-util = "0.7"
tracing-subscriber = "0.3"
criterion = "0.8"
serde_yaml = "0.9"
serial_test = "3.4"
dotenvy = "0.15"
dirs = "6.0"
anstyle-crossterm = "4.0"
path-clean = "1.0"
shell-words = "1.1"
dialoguer = "0.12.0"
walkdir = "2.5"
itertools = "0.14.0"
memchr = "2.7"
url = "2.5"
agent-client-protocol = "0.9.4"
uuid = "1.21.0"
ignore = "0.4"
ring = "0.17"
[workspace.package]
version = "0.88.0"
edition = "2024"
license = "MIT"
[workspace]
resolver = "2"
members = [
"vtcode-acp",
"vtcode-acp-client",
"vtcode-core",
"vtcode-tui",
"vtcode-commons",
"vtcode-config",
"vtcode-llm",
"vtcode-lmstudio",
"vtcode-markdown-store",
"vtcode-indexer",
"vtcode-tools",
"vtcode-bash-runner",
"vtcode-exec-events",
"vtcode-file-search",
]
default-members = [".", "vtcode-core", "vtcode-tui"]
exclude = ["zed-extension", "vtcode-process-hardening"]
[patch.crates-io]
vtcode-commons = { path = "vtcode-commons" }
vtcode-markdown-store = { path = "vtcode-markdown-store" }
vtcode-indexer = { path = "vtcode-indexer" }
vtcode-bash-runner = { path = "vtcode-bash-runner" }
vtcode-exec-events = { path = "vtcode-exec-events" }
vtcode-file-search = { path = "vtcode-file-search" }
[workspace.lints]
rust.unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin)'] }
rust.unused_extern_crates = "warn"
rust.unused_import_braces = "warn"
rust.unused_qualifications = "warn"
rust.unused_results = "allow"
rust.trivial_numeric_casts = "warn"
rust.unsafe_code = "warn"
rust.unstable_features = "warn"
[workspace.lints.clippy]
dbg_macro = "warn"
todo = "warn"
undocumented_unsafe_blocks = "warn"
multiple_unsafe_ops_per_block = "warn"
[dependencies]
vtcode-acp = { path = "vtcode-acp", version = "0.88.0" }
vtcode-commons = { path = "vtcode-commons", version = "0.88.0" }
vtcode-config = { path = "vtcode-config", version = "0.88.0" }
vtcode-core = { path = "vtcode-core", version = "0.88.0", default-features = false }
vtcode-tui = { path = "vtcode-tui", version = "0.88.0" }
anyhow = { workspace = true }
clap = { workspace = true }
serde_json = { workspace = true }
tokio = { workspace = true }
webbrowser = "1.0"
notify = "6.1.1"
home = "0.5.9"
tokio-util = { workspace = true, features = ["compat"] }
serde = { workspace = true }
toml = { workspace = true }
futures = { workspace = true }
walkdir = { workspace = true }
itertools = { workspace = true }
memchr = { workspace = true }
mimalloc = { workspace = true }
tempfile = { workspace = true }
once_cell = { workspace = true }
libc = { workspace = true }
chrono = { workspace = true }
path-clean = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true, features = ["env-filter"] }
async-trait = { workspace = true }
dotenvy = { workspace = true }
dirs = { workspace = true }
sha2 = { workspace = true }
anstyle = { workspace = true }
anstyle-git = { workspace = true }
anstyle-crossterm = { workspace = true }
colorchoice = "1.0"
agent-client-protocol = { workspace = true }
percent-encoding = "2.3"
url = { workspace = true }
shell-words = { workspace = true }
dialoguer = { workspace = true }
crossterm = { workspace = true }
hashbrown = { workspace = true }
ratatui = { workspace = true }
regex = { workspace = true }
rustc-hash = { workspace = true }
unicode-width = { workspace = true }
smallvec = "1.13"
self_update = { version = "0.42", default-features = false, features = ["archive-tar", "compression-flate2", "rustls"] }
reqwest = { workspace = true }
semver = { workspace = true }
thiserror = { workspace = true }
axum = { version = "0.8", optional = true }
zip = { version = "8.1", default-features = false, features = ["deflate"] }
[features]
default = ["tool-chat", "a2a-server"]
tool-chat = []
profiling = []
anthropic-api = ["vtcode-core/anthropic-api", "dep:axum"]
a2a-server = ["vtcode-core/a2a-server"]
desktop-notifications = ["vtcode-core/desktop-notifications"]
[profile.dev]
debug = 0
lto = false
incremental = false
opt-level = 0
split-debuginfo = "unpacked"
[profile.test]
inherits = "dev"
[profile.dev.build-override]
opt-level = 3
codegen-units = 16
[profile.dev.package."*"]
opt-level = 1
debug = false
[profile.dev-optimized]
inherits = "dev"
lto = "thin"
codegen-units = 1
opt-level = 2
[profile.release-fast]
inherits = "release"
lto = "thin"
codegen-units = 4
[profile.release]
codegen-units = 1
lto = true
opt-level = 3
strip = true
panic = "abort"
incremental = false
[profile.ci]
inherits = "dev"
debug = 0
incremental = false
overflow-checks = false
[profile.bench]
codegen-units = 1
lto = true
opt-level = 3
debug = false
incremental = false
[profile.bloaty]
inherits = "release"
debug = true
strip = false
[[bin]]
name = "vtcode"
path = "src/main.rs"
[dev-dependencies]
tempfile = { workspace = true }
assert_fs = { workspace = true }
indexmap = { workspace = true }
rand = "0.9"
regex = { workspace = true }
assert_cmd = "2.1"
predicates = "3.1"
insta = "1.39"
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61", features = [
"Win32_Foundation",
"Win32_System_SystemServices",
"Win32_System_Threading",
] }
[package.metadata.cargo-machete]
ignored = ["anstyle-crossterm"]
[package.metadata.unmaintained]
ignore = []
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]