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

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.2
File Size Uploaded
vtx_coding_agent-1.2.2.tar.gz 3.9 MB Details

Built distribution (wheel)

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

Total release size: 5.1 MB

Release files / vtx_coding_agent-1.2.2.tar.gz

Download URL vtx_coding_agent-1.2.2.tar.gz
Size 3.9 MB
Tags Source
SHA-256 checksum
How to use checksums
96573e6617fc7462d508488536592311507f874698f8e8a9dfecdefe2660cd5b
BLAKE2b-256 checksum
How to use checksums
466ae3b9c5d0e8bbf3b79a24a85992aa27d0459995cd176dfe34ca5284d022e4
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.2-py3-none-any.whl

Download URL vtx_coding_agent-1.2.2-py3-none-any.whl
Size 1.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
6cc9e937c0534f804802259ca6effea218629c6e9ae18dc1d1bd5fe8c2084db0
BLAKE2b-256 checksum
How to use checksums
1af5d2b6c6f464488848662746921b589f9671a987961212677ae19faad88f0b
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

This release

1.2.2 This release

2 release files

1.2.1

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