vctx
vctx compiles video URLs, local video/audio, and SRT/VTT subtitles into a
durable context pack. A pack keeps canonical transcript, evidence, summary, and
provenance data beside readable Markdown so people and AI agents can inspect the
same source-grounded result.
It is a one-shot CLI, not a chat application, RAG database, or background
service. Video frames are decoded in-process with PyAV; no host ffmpeg
executable is required.
Subtitle-backed transcript preparation needs no configuration or AI account.
Evidence planning and summaries do require an admitted AI route: authenticate
once with vctx auth openrouter login, provide OPENROUTER_API_KEY, or configure
your own OpenAI-compatible endpoint. vctx never provides anonymous AI access.
Installation
Python 3.14 or newer is required. The full profile includes local ASR, frame extraction, and OCR:
uv tool install "vctx[full]"
Smaller installs are available:
uv tool install vctx # subtitles, URL acquisition, compatible AI
uv tool install "vctx[asr]" # core + faster-whisper
uv tool install "vctx[visual]" # core + PyAV + RapidOCR
The equivalent pip command is python -m pip install "vctx[full]" inside a
Python 3.14 environment.
Usage
Prepare local model assets once, compile a source, verify the resulting pack, then render the view needed by a person or agent:
vctx auth openrouter login
vctx models pull asr ocr
vctx prepare ./lecture.mp4 --out ./lecture-pack --to summary
vctx verify ./lecture-pack
vctx render ./lecture-pack --format read --out ./lecture.md
prepare defaults to --to transcript. --to evidence adds transcript-anchored
frame planning and observations; --to summary adds a citation-constrained
summary. The stages are monotonic, so a later target retains all safe earlier
products. Multiple inputs become independent source directories and are never
combined into one summary.
For an agent-oriented view:
vctx render ./lecture-pack --format context
vctx prompt
Simple configuration
Create vctx.toml in the working directory:
[cache]
source_dir = ".cache/vctx/source"
model_dir = ".cache/vctx/models"
[transforms.asr]
use = "instance:local"
[instances.asr.local]
type = "local-faster-whisper"
model = "small"
device = "auto"
compute = "auto"
cache = "persistent"
[evidence]
planner = "auto"
ocr = "auto"
vision = "auto"
[summary]
use = "auto"
language = "native"
[output]
projections = ["context", "read"]
retain_media = true
For zero-TOML online planning and summaries, authenticate once with vctx auth openrouter login; auto then admits the free zero-data-retention OpenRouter
route. OPENROUTER_API_KEY provides the same automatic route without keyring
login. Without either credential, auto does not make an AI call and the pack
records unavailable evidence/summary outcomes while retaining safe earlier
products. You may instead configure any suitable OpenAI-compatible /v1
endpoint. Secrets stay in an environment variable or system keyring.
Inspect the effective setup without downloading or creating anything:
vctx doctor --to summary --json
More runnable configurations are under docs/examples. The complete command behavior, every configuration field, path precedence, pack layout, and exit status are documented in docs/api.md.
Workflow
INPUT...
-> admit and acquire each source
-> transcript -> evidence -> summary
-> canonical schema-3 JSON + selected Markdown projections
-> atomic PACK publication
-> verify PACK
-> render context | read | transcript
The pack is the integration boundary. Begin with manifest.json; it records
source identities, revisions, artifacts, product outcomes, provider/model
effects, omissions, upload/cost facts, and integrity digests. Re-running
prepare reuses matching verified lanes. Use --overwrite only when you intend
to refresh or rebuild them.
License
MIT License. See LICENSE.
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 vctx-0.3.0.tar.gz.
File metadata
- Download URL: vctx-0.3.0.tar.gz
- Upload date:
- Size: 83.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
535d9f72a879b8d91ae3b8ea184c905f5f96c73b18802ddcd2ba65c7caa4e8d6
|
|
| MD5 |
7084f14bfc6fbea329e5fab2622d1de4
|
|
| BLAKE2b-256 |
e70faf08fd16cd1572315330741661e1cf5bc75a10577c6f5586074d17721d6e
|
File details
Details for the file vctx-0.3.0-py3-none-any.whl.
File metadata
- Download URL: vctx-0.3.0-py3-none-any.whl
- Upload date:
- Size: 94.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30582332a159a1df62722ea7c47ff8e2728ac7ed610f28d132ed27de9a11ab0e
|
|
| MD5 |
7a3ae7bbacb08c7cf43a13305fba407f
|
|
| BLAKE2b-256 |
ad49e8743a01337f14e0dcfec048894bee6518326393e444bbf7b6cc0505ced4
|