Skip to content

Developer reference

Build around local document facts.

Install the OctoDoc CLI and use its account-free commands for local document facts. They create no hosted file and perform no signing act.

Input

Start with exact bytes

Local review reads the exact PDF once through the shared bounded-file contract. It rejects a file that changes while it is being read.

Install

curl -fsSL https://octodoc.org/install | sh

For macOS on Apple silicon and Linux on x86-64. The script installs nothing unless the download matches its published SHA-256.

Sign in

octodoc login

Opens your browser to approve this computer. Login never creates an account; the local tools below need none.

Add it to Claude Code

claude plugin marketplace add 8bittts/OctoDoc-Pluginclaude plugin install octodoc@octodoc

One skill that drives the command line above, from a public repository. It declares no server of its own, and does nothing until the command line is installed.

Add it to Codex

codex plugin marketplace add 8bittts/OctoDoc-Plugincodex plugin add octodoc@octodoc

The same bundle, from the same repository, read through the portable manifest beside the first rather than a second copy.

  1. Bound the input

    The command reads one stable local file under fixed byte, page, field, and object ceilings.

  2. Read one result

    Stdout carries one TOON document by default, or one JSON document when requested.

  3. Branch on the verdict

    Exit status and structured fields distinguish success, refusal, negative verification, and usage error.

octodoc <file.pdf> review [--json]

Output

Choose the output your caller needs

The output is one stable machine-readable document. TOON is the terminal default, and --json is the pipeline escape hatch.

Exit 0

The requested local operation finished successfully.

Exit 1

An operational error or negative verification verdict occurred.

Exit 2

The invocation was invalid before a document dependency ran.

Exit 3

Work is waiting for authorization, processing, or another signer. Read blockedOn for the next step.

Structured success and error documents use stdout. Human-readable progress and the model disclosure use stderr. Unknown flags are usage errors rather than ignored input.

Model work

Keep model work separate

Review is deterministic and offline. Summarize is a separate network command with a required party perspective and labeled model output.

Summary contract

octodoc <file.pdf> summarize --party <role> [--json]

Every overview, clause, risk flag, and citation carries its model source. A cited span must match the canonical local representation exactly.

Verification

Treat verification as a bounded verdict

Verification consumes local evidence and returns a bounded verdict. A digest mismatch exits non-zero so automation cannot mistake it for success.

Sealed bytes

octodoc verify --sealed <file.pdf> --sha256 <hex>

Ledger evidence

octodoc verify --ledger <bundle.json>

Account work

Continue the same document from your terminal

Sign in to prepare, send, approve, decline, sign, track, and download existing documents. The browser and CLI use the same saved version.

Login opens browser authorization for an existing account. It creates no account. With authorization, running the CLI without arguments shows your live work and the available next commands.

Import an existing PDF or fill a reviewed reusable form with supplied facts. Convert DOC or DOCX and confirm every mark in the browser. Binding commands require transaction-bound authorization or an explicit mandate; a prompt, saved signature, or bearer credential supplies no such authority.

Use each command's --help for its arguments and retry rules. Preserve the idempotency key for the same mutation. A send receipt proves dispatch; a signature receipt proves one signer's submission. Read the sealed state before claiming a sealed file, and the download receipt before claiming a local copy.

Boundary

Local commands grant no transaction authority

These local commands create no account state and grant no transaction authority. Machine identity alone never authorizes a send or signature.