readseek
readseek is a structural source and PDF reader for scripts, editors, and coding agents.
It emits compact JSON with stable line/hash anchors, structural symbol maps, parse
diagnostics, AST search matches, references, and rename plans.
Installation
Install the npm wrapper and a prebuilt binary:
Install the native program from crates.io:
Prebuilt binaries are available for macOS ARM64; Linux ARM64 and x64; and Windows x64. The Linux binaries are static glibc PIE executables.
To build and install from source:
Source builds require CMake, Clang/libclang, and a C++ compiler because image
inference uses llama-cpp-2.
GPU acceleration can be enabled at build time with the metal, opencl, rocm,
or vulkan Cargo feature.
Plugins
Pi extension
The bundled pi-readseek extension exposes ReadSeek's anchored file and structural-code tools in Pi:
OpenCode plugin
The opencode-readseek plugin provides the same anchored and structural tools in OpenCode.
Add the plugin to opencode.json:
Common commands
To write JSON output to a file instead of stdout, place the global option before the command:
Use a stdin: target prefix with detect, read, map, check, symbol,
and identify to analyze unsaved editor buffers while still providing a path
for language detection and a cursor address:
|
Images and PDFs
detect reports image metadata and PDF page counts. read returns bounded
base64 images by default; use --image for a local analysis mode:
PDF reads return page-tagged Markdown and page-associated embedded images. Use
--page to select one page; the same image mode applies to each embedded image.
After initializing .readseek/, view creates or reuses a persistent structural
PDF index and returns an overview that can be narrowed by page, node, kind, or
depth. Line/hash suffixes, --end, --limit, and --language do not apply to
visual files.
The Qwen3-VL GGUF model and multimodal projector download lazily into the user
cache and run through llama-cpp-2 on the CPU. Captioning can take substantial
time.
Cache
readseek init [path] creates and populates .readseek/maps/ and
.readseek/def-index/. Map-dependent commands update entries on demand and
discover .readseek/ by walking up from the target path, or use the directory
passed by --readseek-dir. view creates PDF structure indexes and extracted
assets under .readseek/documents/ on demand. Image analysis caches results
under the .readseek/ found from the current working directory.
Documentation
The manual page provides the full CLI reference:
Pass --help to any command for command-specific usage.
Licensing
The native readseek crate is licensed under LGPL-2.1-or-later. The
@jarkkojs/readseek wrapper and platform packages declare
Apache-2.0 AND LGPL-2.1-or-later.
The downloaded Qwen/Qwen3-VL-2B-Instruct-GGUF model is licensed under
Apache-2.0.