oneport-context
Code Contextualizer — NotebookLM for your codebase, that never leaves your machine.
Point it at any repo (however large — no upload) and it builds a hierarchical understanding locally, then turns it into a narrated architecture walkthrough, a narrated MP4 video, a PDF handbook, a chat that knows your code, and hover-to-explain in your editor. Runs on your own model key (Google Gemini free tier) or fully local — your code never leaves the machine.
Try it in 60 seconds (no setup)
pip install oneport-context
oneport-context demo
Opens a narrated, animated walkthrough of a bundled sample repo in your browser — no API key needed.
Use it on your own repo
onp account login <op_live_...> # 0-BYOK: managed models, metered to your account
# token: https://www.oneport.co.in/console
oneport-context index ./my-repo # build the understanding (cached in .context/)
oneport-context show ./my-repo # narrated walkthrough in the browser
oneport-context video ./my-repo # narrated MP4 (>= 8 min) -> needs [video]
oneport-context pdf ./my-repo # PDF handbook, opens in browser -> needs [pdf]
oneport-context chat ./my-repo # ask questions in the terminal
oneport-context lsp ./my-repo # editor hover-to-explain -> needs [lsp]
Without a login it still works in heuristic mode (structure + docstrings) — free and offline, just less prose.
Keeping the index fresh
The index is cached in .context/ so show/video/pdf/chat are instant — but a
cached index is a snapshot, and a stale snapshot drives a wrong tour. oneport-context
checks the cache against your repo as it is now and tells you when it has drifted:
oneport-context index ./my-repo --check # "index is stale — 3 added, 1 modified"; exit 1 if stale
oneport-context show ./my-repo --fresh # rebuild before showing (any command takes --fresh)
show/video/pdf/chat print a clear warning when they're driven by a stale index,
rather than presenting it as current. index --check exits non-zero when stale, so you
can wire it into a pre-commit hook or CI.
Tuning the scan
By default the walker skips the usual noise (node_modules, .venv, build output),
respects your repo's .gitignore, and caps at 4000 files. Override any of that in an
optional .oneport-context.yml at the repo root:
scan:
ignore: ["generated/**", "*.pb.go"] # extra glob patterns to skip
languages: {".astro": "Astro"} # index extra extensions as a language
max_files: 12000 # raise the cap for a big monorepo
respect_gitignore: true # (default) honor .gitignore
If the file cap truncates the scan, that's surfaced — a partial index is never presented as a complete one.
Commands
| Command | What it does | Extra |
|---|---|---|
demo |
Zero-config narrated walkthrough of a bundled repo | — |
index ./repo |
Build the hierarchical understanding (cached); --check reports staleness |
— |
show ./repo |
Localhost narrated architecture walkthrough | — |
video ./repo |
Narrated MP4 (--minutes, --voice) |
[video] |
pdf ./repo |
Styled PDF handbook, served in the browser | [pdf] |
chat ./repo |
Terminal Q&A grounded in your code | — |
lsp ./repo |
Hover-to-explain Language Server (VS Code / Neovim / JetBrains) | [lsp] |
Install with the features you want
pip install 'oneport-context[video,pdf,lsp]'
[video]— pillow, moviepy (ffmpeg), gTTS voice[pdf]— reportlab[lsp]— pygls
Why CLI, not upload
Big repos don't fit an upload box. The CLI walks the tree locally and builds a
file -> module -> repo summary (module summaries are batched, so a large repo
costs only a handful of model calls). Everything is cached in .context/; your code
never leaves the machine.
Notes
video/pdf/chatproduce their best output when logged in (oneport-account login); heuristic mode works without it.- Only structure travels to the model — file paths, symbol names, docstrings and the README, never raw file contents. Your code stays on your machine.
License
Apache-2.0
Metadata
Release files for oneport-context 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| oneport_context-0.3.0.tar.gz | 59.5 kB | Without provenance | Details for oneport_context-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| oneport_context-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for oneport_context-0.3.0-py3-none-any.whl |
Total release size: 122.3 kB
Release files / oneport_context-0.3.0.tar.gz
| Download URL | oneport_context-0.3.0.tar.gz |
|---|---|
| Size | 59.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f64f90fc3662c8dfac36fc6a143b714769b25fd5929910803c50e786f6a84e5e
|
|
BLAKE2b-256 checksum How to use checksums |
86b32a98a87985d99f5a1df65e4e85e506edbbe8bc3d0ac6aab8d05a7d4fd044
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|
Release files / oneport_context-0.3.0-py3-none-any.whl
| Download URL | oneport_context-0.3.0-py3-none-any.whl |
|---|---|
| Size | 62.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5da5d7ebcd232072569c181b256362f7090bd42458c3f61b66c68075d99edd94
|
|
BLAKE2b-256 checksum How to use checksums |
46812304b045a46a0bd22efc7635c52c5a5f449ddc6fbd968e21dc78d64b4bd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|
Security for oneport-context 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.