|
The minimalist, modular coding agent harness
Maximum capability. Minimum overhead.
A coding agent that keeps its system prompt lean — around ~2,600 tokens for the whole runtime — so your context window stays free for what matters: your code.
Why Vtx?
Most coding agents bury you in thousands of hidden prompt tokens before you type a single line. Vtx is transparent about its footprint. The full runtime — base system prompt, tool guidelines, environment block, and all tool definitions — fits in roughly 2,600 tokens (o200k_base). That means:
- More of the model's context is spent on your files, not boilerplate instructions.
- Faster, cheaper turns with any provider you choose.
- A prompt you can actually read, audit, and shrink.
Vtx is also modular: a keyboard-driven TUI, a headless CLI, a Python SDK, and an optional extension manager — pick the surface that fits the job.
Features
- Lean by design — ~2,600-token runtime; no hidden prompt bloat.
- 10 surgical default tools —
read,edit,write,bash,find,skill,web,ask_user,task,goal. (grepis a built-in but not enabled by default.) - TUI & CLI — a Textual-powered terminal UI, plus a non-interactive headless mode for scripts and CI.
- Any model, any endpoint — 50+ built-in providers (OpenAI, Anthropic, Azure, DeepSeek, Copilot, Zhipu, Groq, Mistral, Together, Ollama, …) plus OpenAI/Anthropic-compatible custom providers and local models (Ollama, llama.cpp, vLLM).
- Dynamic context — auto-loads
AGENTS.md/CLAUDE.mdguidelines and triggers modularSkills. - Switchable handoff agents — named profiles (review, security audit, fast impl) cycled live with
Shift+Tab, or activated with/agent <name>. - Task sub-agents — delegate self-contained work to isolated sessions that stream progress back.
- Persistent goals — give the agent a durable, file-backed objective with a task tree, live status widget, auto-continue checkpoints, and an independent completion audit. See docs/goals.md.
- Safe by default —
promptpermission mode gates mutating tools; destructive commands are blocked. - Self-extensible — drop a Python file to add tools, intercept calls, register slash commands, or hook lifecycle events.
- YAML hooks — declarative
.vtx/hooks.ymlfor shell and HTTP lifecycle automation. - Extension manager — install extensions and agent packages from PyPI or GitHub with
vtx install <name>.
Quick start
# Install with uv (recommended)
uv tool install vtx-coding-agent
# Or the one-liner installer
curl -fsSL https://raw.githubusercontent.com/OEvortex/vtx-coding-agent/main/scripts/install.sh | bash
Launch the terminal UI:
vtx
Run a single task headlessly:
vtx -p "Write unit tests for src/ai/agent/tools/task.py"
The toolset
| Tool | Does | Tool | Does |
|---|---|---|---|
read |
Read/paginate files, view images | web |
Web search (Exa neural) |
edit |
Precise search-and-replace | ask_user |
Ask a clarifying question |
write |
Create/overwrite files | task |
Dispatch a sub-agent |
find |
Glob file discovery | skill |
Manage skill workflows |
bash |
Run shell commands | goal |
Persistent goals: plan, track, complete w/ audit |
See docs/tools.md for full parameter specs.
Permissions & switching agents
Toggle permission mode on the fly. Vtx gates mutating tools (bash, edit, write) behind a permission system. In the TUI:
- Press
Alt+Ctrl+Pto cycle betweenprompt(asks before mutating) andauto(unrestricted) mode. - Type
/permissionsto open the permission menu and switch mode explicitly. - Set the default in
config.yml(permissions.mode: prompt | auto).
Destructive commands (rm -rf, git reset --hard, force-push, dropping tables) are blocked unless you explicitly ask. See docs/permissions.md.
Switch handoff agents with Shift+Tab. Define named profiles in .vtx/agent/<name>.py (e.g. security-audit, code-review, explorer) and cycle between them live — each bundles its own instructions, tool allow/deny list, and optional model override. See docs/agents.md.
Bring your own provider
Point Vtx at any OpenAI- or Anthropic-compatible endpoint — no source edits required:
# .vtx/providers/acme.yaml
slug: acme
display_name: "Acme AI Gateway"
family: openai_compat
base_url: "https://ai.acme.internal/v1"
api_key_env: ACME_API_KEY
fetch_models: true
export ACME_API_KEY=sk-...
vtx --provider acme -m acme-large
Custom providers show up in the /model picker and auto-fetch their model catalog. Full reference in docs/providers.md.
Build agents programmatically
from vtx.ai.agent.sdk import Agent, Runner, tool
@tool
def get_weather(city: str) -> str:
"""Return the current weather for a city."""
return f"Sunny in {city}"
agent = Agent(
name="Weather bot",
instructions="Be concise.",
model="gpt-4o-mini",
tools=[get_weather],
)
result = Runner.run_sync(agent, "Weather in Tokyo?")
print(result.final_output)
See the SDK docs.
Documentation
| Topic | Link |
|---|---|
| Documentation index | docs/index.md |
| Monorepo structure | docs/developer/monorepo.md |
License
Apache License 2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vtx_coding_agent-1.1.0.tar.gz.
File metadata
- Download URL: vtx_coding_agent-1.1.0.tar.gz
- Upload date:
- Size: 42.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e0df0615ce150c90f740ecfbd1894b78ab3ac1925211a58b8c4373c448b4ef5
|
|
| MD5 |
72b0b9868cfaf49322ca561a4774a33a
|
|
| BLAKE2b-256 |
355d1cc6a8c09db212cddfa27eef55d15ca34bd5766cc6b2c7684247b0c51caf
|
File details
Details for the file vtx_coding_agent-1.1.0-py3-none-any.whl.
File metadata
- Download URL: vtx_coding_agent-1.1.0-py3-none-any.whl
- Upload date:
- Size: 841.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0336fddc6a5ed9980646075f0e4b3728be9c03b4a1571790dd97a1170ad0244
|
|
| MD5 |
53007a06d738d4bd8b458f7f11ae5f9c
|
|
| BLAKE2b-256 |
0d01d901dbbb11766375cac3582f730d2ec22aa196f59632ef17b57defc6ef05
|