Skip to main content

Vtx

A coding agent harness: a keyboard-driven terminal UI, a headless CLI for scripts and CI, and a Python SDK, built on one agent runtime that ships ten packages under a single vtx-coding-agent distribution. The base system prompt is 665 tokens.

  • vtx.coding_agent: Product layer. CLI entry point, headless runner, filesystem tools, the TUI app
  • vtx.agent: Product-neutral harness. Agent loop, turn engine, sessions, tool registry, prompts, extensions, goals, SDK
  • vtx.ai: LLM layer. Provider catalog, OAuth, SDK adapters, model catalog, tool parsing

To learn more:

All Packages

Package Description
@vtx.protocol Leaf. Message, stream, and tool-contract types. Imports nothing from vtx
@vtx.telemetry Leaf. Spans, processors, console and JSONL exporters
@vtx.git Git and GitHub integration: gh CLI wrapper, GitHub App auth
@vtx.core Agent events, permission gate, compaction, config schema and paths, theme registry
@vtx.ai The LLM layer: provider catalog, OAuth, SDK adapters, model catalog, tool parsing
@vtx.codemode The script sandbox and its tool discovery layer
@vtx.agent Product-neutral harness: loop, turn engine, sessions, tool registry, prompts, extensions, goals, SDK
@vtx.mcp MCP client: server config, transports, tool exposure, trust prompt
@vtx.tui Base terminal-UI toolkit: editing, fuzzy matching, overlays, block renderers. Knows nothing about the agent
@vtx.coding_agent Product layer: CLI entry point, headless runner, concrete filesystem tools, the TUI app

Dependencies flow protocol and telemetry into core, git, and ai; those into agent; agent into coding_agent, with mcp and tui sitting above. Each package carries its own README with the public surface and internal notes.

Ten tools are registered by default: read, edit, write, bash, find, skill, web, ask_user, delegate_subagent, goal. The harness also registers codemode and tool_search. The sub-agent tool is defined internally as task and exposed to the model under the name delegate_subagent. Agent profiles are only ever loaded from .vtx/agent/<name>.py; none ship built in. There are 62 built-in providers: 59 declared in src/vtx/ai/provider.yaml plus github-copilot, codex, and cline, which are constructed in code because they need host OAuth. Configuration lives in ~/.vtx/config.yml.

Install

uv tool install vtx-coding-agent
vtx                              # terminal UI
vtx -p "add tests for vtx.git"   # headless, one task

Python 3.12 or newer. The console script is vtx.

Permissions

Vtx gates the mutating tools (bash, edit, write) behind a permission mode. prompt asks before each one; auto does not. The default is set in ~/.vtx/config.yml under permissions.mode, switched in the TUI with /permissions, or cycled with Alt+Ctrl+P. Known-destructive shell commands are blocked in both modes unless the session explicitly authorizes them. See docs/permissions.md.

The codemode sandbox

A codemode script is ordinary Python executed by a separate worker process as the user who launched vtx. It gets full builtins, the full standard library, installed packages, the filesystem, subprocesses, and the network. There is no interpreter-level confinement, and none is attempted: restricting the interpreter would cost the model every library it might have used while stopping short of what actually matters, which is the host's own state.

That state is out of reach because it lives in another process. The worker imports nothing from vtx except through the tool call channel, so the running agent, the session, and every registered tool are unreachable by direct access. The boundary is load-bearing for one reason: a deadline has to be a kill, not a cooperative request. An infinite loop, a pathological regex, a blocking read, and a runaway C extension all terminate the same way.

What a script can reach is governed by per-tool exposure, not by the interpreter:

Exposure Declared to the model Callable from a script Listed in the catalog Found by tool_search
direct yes yes no no
codemode - yes yes yes
codemode-deferred - yes - yes
deferred - yes - yes
hidden - - - -

Servers default to codemode; tool_exposure overrides per tool by exact name or * pattern. See docs/codemode.md and docs/mcp.md.

If you need a stronger boundary than "your own permissions", containerize vtx.

Contributing

AGENTS.md holds the project rules for humans and agents alike.

Development

uv run ruff format .
uv run ruff check .
uvx ty check .
uv run --no-sync python -m pytest -p no:cacheprovider path/to/test_file.py  # one file
uv run --no-sync python -m pytest -q -n auto                                # larger runs

Run a single file's tests rather than the full suite; it is slow and resource intensive. See docs/development.md.

License

Apache License 2.0

Metadata

Release files for vtx-coding-agent 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vtx-coding-agent 1.2.1
File Size Uploaded
vtx_coding_agent-1.2.1.tar.gz 3.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for vtx-coding-agent 1.2.1
File Interpreter ABI Platform
vtx_coding_agent-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 5.1 MB

Release files / vtx_coding_agent-1.2.1.tar.gz

Download URL vtx_coding_agent-1.2.1.tar.gz
Size 3.9 MB
Tags Source
SHA-256 checksum
How to use checksums
91c662b99f80032358256c16da2cf897e36b3f551cf12a1241f5123aa5220db3
BLAKE2b-256 checksum
How to use checksums
6be1d5087a2bf77ab488459a18a94df5a8912191e5a7d39a9a69d9306c65a591
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release files / vtx_coding_agent-1.2.1-py3-none-any.whl

Download URL vtx_coding_agent-1.2.1-py3-none-any.whl
Size 1.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
1740a29b972bc0c87c7a4223a00f54f9b44a0a23cdeaa4d7c51a6b8e1206cbad
BLAKE2b-256 checksum
How to use checksums
13126da65a5a67aef9b8abac8900564d7d3c3d7d214eaba6122d2c355debf539
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release history Release notifications | RSS feed

1.3.0

2 release files

1.2.2

2 release files

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page