Skip to content

CLI commands

wdpkr is a single binary with a handful of subcommands. All output is JSON on stdout; errors go to stderr.

wdpkr <command> [options]
CommandPurpose
searchConceptual search — returns tiered JSON
indexBuild or refresh the index (full or incremental)
deleteRemove vectors from the index by path glob
initSet up wdpkr for a repository
configManage configuration
evalMeasure search quality and compression

Embed a natural-language query, search the vector store, and return matching files with their top symbols.

Terminal window
wdpkr search "release commission payments"
wdpkr search "how is rate limiting implemented" --pretty
wdpkr search "auth flow" --scope src/auth/ -k 10
FlagDefaultDescription
<query>(required)Natural-language query
-k, --top-k5Max file-level results
--symbols-per-file3Max symbols returned per file
--no-symbolsoffFile-level results only, omit symbol nesting
--scope <path>Limit search to subtree(s); repeatable
--filter <glob>Glob filter on result paths; repeatable (OR logic)
--provider <name>allLimit search to these tap sources (e.g. files, linear); repeatable
--terseoffCompact output: paths + one-sentence summaries
--prettyoffHuman-readable output instead of JSON

Results from a non-files tap carry a source field (e.g. "source": "linear") and a scheme-prefixed path (e.g. linear://ENG-123). See Taps for indexing data sources beyond code.

Walk the repo, chunk with tree-sitter, summarize, embed, and upsert to the vector store. Incremental by default — only changed files are reprocessed.

Terminal window
wdpkr index # incremental
wdpkr index --full # rebuild everything
wdpkr index --dry-run # estimate cost, no API calls
wdpkr index --tap linear # index only the configured Linear tap
FlagDefaultDescription
--fulloffIgnore the high-water mark and reindex everything
--dry-runoffEstimate cost without API calls or writes
--concurrency <n>4Bound parallel file processing
--from <sha>Override the starting SHA for the diff (manual recovery)
--max-cost <usd>Abort if estimated remaining cost exceeds this cap
--skip-summariesoffRe-chunk and rebuild call-graph edges with zero API calls, reusing existing vectors
--tap <name>allRun only this configured tap

Remove indexed vectors whose file paths match a glob.

Terminal window
wdpkr delete "src/legacy/**"
ArgumentDescription
<pattern>Glob matching file paths to remove from the index

Set wdpkr up in a repository — writes a CLAUDE.md section, a .wdpkrignore, and a CI workflow that reindexes on merge to main.

Terminal window
wdpkr init

Manage the configuration that the other commands resolve from. See Configuration for the full key reference.

Terminal window
wdpkr config init # write a default config file
wdpkr config list # show all values and their sources
wdpkr config get embedder.model # read one value
wdpkr config set indexer.concurrency 16 # set one value
wdpkr config path # print the resolved config file path
wdpkr config edit # open the config file in $EDITOR
SubcommandPurpose
initWrite a default config file to ~/.config/wdpkr/config.yaml
get <key>Get a config value by dotted key
set <key> <value>Set a config value by dotted key
listShow all config values and their sources
pathPrint the resolved config file path
editOpen the config file in $EDITOR

Run the evaluation suite to measure search quality and how much context wdpkr saves versus reading source directly.

Terminal window
wdpkr eval