Skip to content

Command line

Generated from the commands themselves, so this page cannot describe a flag the tool does not have.

complydoc assist

Draft quick wins from a finished report with a hosted chat model.

Sends the report to model. Everything else complydoc computes stays on this machine; --classifier jev is the only other command that leaves it, and only with the passages it judges. This one sends the report's findings, signals, loaders, costs and limitations, including masked identifiers and document paths. The page pictures and the text read off each page are held back. It never runs as part of audit or check; run it on its own, against a report one of those already wrote.

complydoc assist
Option Default What it does
--report — A report JSON already written by an audit.
--model gpt-5.6-luna Chat model id, passed to langchain's init_chat_model.
--quiet, -q off Suppress progress output.

complydoc audit

Run every check: cost, readiness, identifiers and hidden content.

complydoc audit {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc Base filename for the reports.
--monthly-volume — Documents per month, to extrapolate cost.
--vision-resolution medium Headline vision resolution preset.
--reveal off Print sensitive values in full. Off by default, and the report says so.
--model, -m — Model id to price, repeatable. Defaults to every priced model. See: complydoc models.
--page-images, --no-page-images off Embed a picture of each page beside what was extracted from it. Off by default: a picture shows every value on the page, so a report built with it carries the identifiers the rest of the report masks.
--extracted-text, --no-extracted-text on Include the text read off each page, with its identifiers masked, so it can be read beside the page it came from. On by default; --no-extracted-text leaves the report carrying no document content.
--ocr-compare off Also OCR pages that already have a text layer, so the text layer and what OCR reads can be compared. Implies --extracted-text.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--ocr-engine — Which local OCR engine to read scans with.
--compare-ocr-engine — Also read every rasterised page with this engine and keep what it read, repeatable. It never changes a finding.
--compare-extractor — Also read every page with this one and report where the two disagree, repeatable. It never changes a finding.
--save-text — Also write the text read off each document into this folder, one file per document, with identifiers masked unless --reveal is set. Reading a scanned folder is the slow part; this keeps the result so nothing has to OCR it again.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--detail summary How much the JSON report carries. summary, the default, keeps every finding and score and the folder's cost on each model, and leaves out the price of every document on every model and the page geometry the HTML draws with. full writes every field; use it for anything that reprocesses reports.
--quiet, -q off Suppress progress output.
--classifier — Score passages for hidden instructions with a classifier as well as the patterns. 'jev' is TypeSafe's hosted model and SENDS THE PASSAGES IT JUDGES to api.typesafe.ai; 'module:function' is code of your own. The report names where anything was sent. Nothing is registered by default.
--classifier-threshold — Score at or above which a passage is reported, 0 to 1. Defaults to the value in hidden.yaml, except for 'jev', which uses the 0.5 measured for it.
--verify — Read pages again with a vision model of your own, 'vision:module:function', and report where it disagrees with the text kept. Your code makes the call with your key, and SENDS EACH PAGE IMAGE to wherever it calls; the report names the hosts. Nothing is verified by default.
--verify-scope flagged Which pages --verify reads: 'flagged' (routing sent them to vision, they had no usable reading, or two readers disagreed) or 'all' (every page).

complydoc benchmark

Measure what identifier detection finds and what it wrongly flags.

complydoc benchmark
Option Default What it does
--config-dir — Override the config directory.
--json — Write the scores as JSON to this path.
--verbose off List every miss and every wrongly flagged value.

complydoc check

Check documents against a policy file, and exit non-zero when they fail it.

Each rule is one of the checks cd.expect offers, named in YAML. Every rule runs, so one run lists everything that failed rather than the first thing. Exits 1 when a rule of level error fails, 2 when the policy or the path cannot be read.

complydoc check {target}
Argument What it is
target A file or folder to audit. Omit it when passing --report.
Option Default What it does
--policy — A YAML file of rules the documents must meet.
--report — Check a report JSON already written, instead of auditing.
--markdown — Write the result as Markdown, for a pull request.
--sarif — Write the result as SARIF, for code scanning.
--out, -o .complydoc Directory for the reports.
--name complydoc-check Base filename for the reports.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--quiet, -q off Suppress progress output.
--classifier — Score passages for hidden instructions with a classifier as well as the patterns. 'jev' is TypeSafe's hosted model and SENDS THE PASSAGES IT JUDGES to api.typesafe.ai; 'module:function' is code of your own. The report names where anything was sent. Nothing is registered by default.
--classifier-threshold — Score at or above which a passage is reported, 0 to 1. Defaults to the value in hidden.yaml, except for 'jev', which uses the 0.5 measured for it.

complydoc chunks

Split a folder's text with one or more splitters and inspect the chunks.

Each page's text is read as extract_text reads it and passed to the splitter as documents with source and page metadata. Every chunk is scanned for identifiers and hidden passages and flagged when it is tiny, oversized, cut mid-sentence or mid-table, ends on a heading or repeats another chunk. With --questions, each question reports whether the chunk holding its answer ranks within --top-k. The reports hold masked previews only.

complydoc chunks {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--splitter, -s — A text splitter as module:attribute, followed by key=value arguments, e.g. 'langchain_text_splitters:RecursiveCharacterTextSplitter chunk_size=800'. A class is created with the arguments; a function is called with the documents. Repeat to compare several.
--fact — Text a chunk should contain whole, repeatable.
--questions — A YAML list of questions, each with question, fact and optionally document. Chunks are ranked for each question with BM25 keyword search.
--top-k 5 How many top-ranked chunks count as retrieved.
--model, -m — Model whose tokenizer counts tokens.
--min-tokens 20 Flag chunks with fewer tokens as tiny.
--max-tokens — Flag chunks with more tokens as oversized.
--out, -o .complydoc Directory for the reports.
--name complydoc-chunks Base filename for the reports.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--quiet, -q off Suppress progress output.

complydoc clean

Copy documents with their identifiers masked and their metadata removed.

complydoc clean {target}
Argument What it is
target A file or folder to copy safely.
Option Default What it does
--out — Where the copies are written.
--rasterise off PDFs only: render each page to an image, so no text layer survives.
--show off List what each copy changed, and where it was.
--recurse, --no-recurse on Descend into subfolders.
--config-dir — Override the config directory.
--quiet, -q off Suppress progress output.

complydoc compare

Read every page with every reader and every OCR engine installed.

The same audit, with each library's reading of each page kept beside the others. Only the first still reaches a finding; the rest are there to be compared against it, and the report marks the pages where they parted company.

complydoc compare {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc-compare Base filename for the reports.
--page-images, --no-page-images off Embed a picture of each page beside what was extracted from it. Off by default: a picture shows every value on the page, so a report built with it carries the identifiers the rest of the report masks.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--ocr-engine — Which local OCR engine to read scans with.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--save-text — Also write the text read off each document into this folder, one file per document, with identifiers masked unless --reveal is set. Reading a scanned folder is the slow part; this keeps the result so nothing has to OCR it again.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--quiet, -q off Suppress progress output.

complydoc compare-loaders

Run several document loaders on the same documents and report their differences.

The file names each loader as module:attribute or a parser preset, the documents, and optionally the facts each loader's text should contain. The first loader is the baseline. Loaders run with network access blocked unless the file sets allow_network: true. See the Comparing loaders guide for the format.

--verify vision:module:function reads the baseline's pages again with a vision model of your own, and puts its reading beside every loader's.

complydoc compare-loaders {spec}
Argument What it is
spec A YAML file naming the loaders, the documents and the expected facts.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc-loaders Base filename for the reports.
--config-dir — Override the config directory.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--quiet, -q off Suppress progress output.
--verify — Read pages again with a vision model of your own, 'vision:module:function', and report where it disagrees with the text kept. Your code makes the call with your key, and SENDS EACH PAGE IMAGE to wherever it calls; the report names the hosts. Nothing is verified by default.
--verify-scope flagged Which pages --verify reads: 'flagged' (routing sent them to vision, they had no usable reading, or two readers disagreed) or 'all' (every page).

complydoc compare-readers

Read every page with every reader and every OCR engine installed.

The same audit, with each library's reading of each page kept beside the others. Only the first still reaches a finding; the rest are there to be compared against it, and the report marks the pages where they parted company.

complydoc compare-readers {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc-compare Base filename for the reports.
--page-images, --no-page-images off Embed a picture of each page beside what was extracted from it. Off by default: a picture shows every value on the page, so a report built with it carries the identifiers the rest of the report masks.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--ocr-engine — Which local OCR engine to read scans with.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--save-text — Also write the text read off each document into this folder, one file per document, with identifiers masked unless --reveal is set. Reading a scanned folder is the slow part; this keeps the result so nothing has to OCR it again.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--quiet, -q off Suppress progress output.

complydoc cost

Estimate LLM processing cost only.

complydoc cost {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc-cost Base filename for the reports.
--monthly-volume — Documents per month, to extrapolate cost.
--vision-resolution medium Headline vision resolution preset.
--model, -m — Model id to price, repeatable. Defaults to every priced model. See: complydoc models.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--ocr-engine — Which local OCR engine to read scans with.
--compare-ocr-engine — Also read every rasterised page with this engine and keep what it read, repeatable. It never changes a finding.
--compare-extractor — Also read every page with this one and report where the two disagree, repeatable. It never changes a finding.
--save-text — Also write the text read off each document into this folder, one file per document, with identifiers masked unless --reveal is set. Reading a scanned folder is the slow part; this keeps the result so nothing has to OCR it again.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--detail summary How much the JSON report carries. summary, the default, keeps every finding and score and the folder's cost on each model, and leaves out the price of every document on every model and the page geometry the HTML draws with. full writes every field; use it for anything that reprocesses reports.
--quiet, -q off Suppress progress output.

complydoc demo

Audit the sample documents, so you can see a report without finding a folder.

The samples ship with the tool and are synthetic: every identifier in them was invented. Between them they carry a scan with no text layer, a two-column page the readers disagree about, a whitespace table, and identifiers of several kinds — the problems this exists to find.

complydoc demo
Option Default What it does
--out, -o .complydoc Directory for the reports.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--open, --no-open on Open the report when it is written.

complydoc diff

Compare two report JSON files and list what got worse and what got better.

Documents are matched by relative path. A regression is an identifier, metadata finding or hidden passage that appeared, a score or text similarity that fell, a fact a loader no longer finds, a new network attempt or failed file, or a new important limitation. Exits 1 when there is a regression, 2 when a file cannot be read.

complydoc diff {old} {new}
Argument What it is
old The earlier report JSON, such as a baseline.
new The later report JSON.
Option Default What it does
--tolerance 0.5 Ignore score changes smaller than this many points.
--fail-on-regression, --no-fail-on-regression on Exit with status 1 when anything got worse. On by default, for CI.
--out, -o — Also write the changes as JSON and HTML here.
--name complydoc-diff Base filename for the reports.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--quiet, -q off Suppress progress output.

complydoc doctor

Report what is installed, what is not, and what that costs you.

complydoc doctor
Option Default What it does
--config-dir — Override the config directory.

complydoc engines

List the local OCR engines.

complydoc engines

complydoc extractors

List the libraries that can read a PDF's text layer, and what each provides.

complydoc extractors

complydoc models

List the models available to price against, and where each price came from.

The default comparison uses prices verified against the provider's own page. Several hundred more from the vendored table can be named with --model.

complydoc models {match}
Argument What it is
match Show only models whose id contains this.
Option Default What it does
--provider — Show only one provider's models.
--all off Include every model in the vendored price table.
--new — Show the N most recently released models instead.
--config-dir — Override the config directory.

complydoc pricing-import

Print pricing.yaml entries generated from litellm's price table.

complydoc will not invent a price, so the shipped config leaves non-Anthropic models as empty templates. This fills them in from a maintained source and stamps each with the date you ran the import.

litellm is not a runtime dependency and is never imported during an audit — only its data file is read, and only when you run this.

complydoc pricing-import
Option Default What it does
--from — Path to litellm's model_prices_and_context_window JSON.
--model, -m — Model id to import, repeatable.
--provider — Import every vision model from one provider.
--limit 20 Cap how many are printed.

complydoc readiness

Measure extraction readiness signals only.

complydoc readiness {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc-readiness Base filename for the reports.
--extracted-text, --no-extracted-text on Include the text read off each page, with its identifiers masked, so it can be read beside the page it came from. On by default; --no-extracted-text leaves the report carrying no document content.
--ocr-compare off Also OCR pages that already have a text layer, so the text layer and what OCR reads can be compared. Implies --extracted-text.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--ocr-engine — Which local OCR engine to read scans with.
--compare-ocr-engine — Also read every rasterised page with this engine and keep what it read, repeatable. It never changes a finding.
--compare-extractor — Also read every page with this one and report where the two disagree, repeatable. It never changes a finding.
--save-text — Also write the text read off each document into this folder, one file per document, with identifiers masked unless --reveal is set. Reading a scanned folder is the slow part; this keeps the result so nothing has to OCR it again.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--quiet, -q off Suppress progress output.

complydoc routing

Plan how each page should be read: its text layer, local OCR, or a vision model.

Writes a manifest an ingestion job can read, with a route and a reason for every page, and prices that mix against sending everything one way. Pages go to a vision model when plain text would lose them: a table with merged or stacked headers, a page that is mostly picture, a scan too coarse for OCR, or one OCR read poorly. The thresholds are in readiness.yaml under routing.

complydoc routing {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc-routing Base filename for the reports.
--model, -m — Model id to price, repeatable. Defaults to every priced model. See: complydoc models.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--quiet, -q off Suppress progress output.

complydoc schema

Print the JSON schema of the report, for a caller that needs to parse it.

complydoc schema

complydoc sensitive

Scan for personal and financial identifiers only.

complydoc sensitive {target}
Argument What it is
target A file or folder to audit.
Option Default What it does
--out, -o .complydoc Directory for the reports.
--name complydoc-sensitive Base filename for the reports.
--reveal off Print sensitive values in full. Off by default, and the report says so.
--page-images, --no-page-images off Embed a picture of each page beside what was extracted from it. Off by default: a picture shows every value on the page, so a report built with it carries the identifiers the rest of the report masks.
--extracted-text, --no-extracted-text on Include the text read off each page, with its identifiers masked, so it can be read beside the page it came from. On by default; --no-extracted-text leaves the report carrying no document content.
--password — Password to try on encrypted PDFs. Passed on the command line, so it will be in your shell history.
--jobs, -j — Documents to process at once. The default reads the size of the folder and decides; 1 forces one process. Changes how long the run takes and nothing about what it finds.
--sample — Audit at most this many documents, keeping each file type's share of the folder. The report says it is a sample.
--timeout — Seconds to give each document. A document still being read when the time passes is stopped and listed as skipped. 0 means no limit. Reading happens in a worker process when this is set, even with --jobs 1.
--config-dir — Override the config directory.
--ocr, --no-ocr on Read scanned pages with local OCR. On by default, so a scanned page is still readable; --no-ocr is faster.
--recurse, --no-recurse on Descend into subfolders.
--extractor — Which library reads the text layer. Defaults to pdfplumber, the richest; pdfium is far quicker and reads no table structure. See: complydoc extractors.
--ocr-engine — Which local OCR engine to read scans with.
--compare-ocr-engine — Also read every rasterised page with this engine and keep what it read, repeatable. It never changes a finding.
--compare-extractor — Also read every page with this one and report where the two disagree, repeatable. It never changes a finding.
--save-text — Also write the text read off each document into this folder, one file per document, with identifiers masked unless --reveal is set. Reading a scanned folder is the slow part; this keeps the result so nothing has to OCR it again.
--print-json off Write the JSON report to stdout and nothing else, for piping into another tool or an agent. Progress goes to stderr.
--quiet, -q off Suppress progress output.
--classifier — Score passages for hidden instructions with a classifier as well as the patterns. 'jev' is TypeSafe's hosted model and SENDS THE PASSAGES IT JUDGES to api.typesafe.ai; 'module:function' is code of your own. The report names where anything was sent. Nothing is registered by default.
--classifier-threshold — Score at or above which a passage is reported, 0 to 1. Defaults to the value in hidden.yaml, except for 'jev', which uses the 0.5 measured for it.

complydoc skill

Print the agent skill, or install it so an agent picks complydoc up on its own.

complydoc skill
Option Default What it does
--install off Copy the skill into ~/.claude/skills/complydoc.
--to — Install somewhere other than ~/.claude/skills.