paperless-cli is now a Rust application with three output modes for
Paperless-ngx:
tui: interactive Ratatui dashboard and inspectormarkdown: LLM-friendly summaries for humans and agentsjson: structured machine-readable output
The Rust binary is now the primary runtime and CI target.
cargo build --release
./target/release/paperless --helpConfigure access with a token:
paperless login --url https://paperless.example.com --token YOUR_TOKENOr exchange username and password for a token:
paperless login --url https://paperless.example.com --username admin --password secretIf you omit the URL or auth fields, paperless login will prompt for them interactively.
Launch the TUI:
paperlessLaunch the built-in demo mode for fast UI feedback without a live Paperless server or local config:
paperless --demo
paperless --demo document list
paperless --demo --output json statusRequest markdown or JSON output:
paperless --output markdown document list --query "invoice 2024"
paperless --output json search query "invoice acme"
paperless statusThe default TUI is a two-pane document browser:
Tabswitches focus between the Documents list and the Inspectorj/kor arrows move within the focused panePgUp/PgDnpage through the focused paneg/Gjump to the top or bottom of the focused panerreloads the document list
For fast iteration on layout and keyboard behavior, use paperless --demo.
| Area | Commands |
|---|---|
| top level | login, status, default TUI |
config |
set-url, set-token |
pdf |
read, info |
project |
login, info, ping |
document |
list, get, content, upload, download, preview, thumb, edit, update, delete, search |
search |
query, autocomplete |
task |
list, get |
tag |
list, get, create, edit, delete |
correspondent |
list, get, create, delete |
doctype |
list, get, create, delete |
export |
bulk |
The CLI now includes the main compatibility commands and inputs people expect
from julianfbeck/paperless-cli:
document content <id>for extracted text onlydocument edit <id> --add-tag ... --remove-tag ...with exact tag names or IDstag edit <id> --name ...pdf read <file>andpdf info <file>config set-url ...andconfig set-token ...PAPERLESS_URLandPAPERLESS_TOKENsupport- global
--json,-q/--quiet,--no-color, and-u/--urlcompatibility flags
See docs/cli-parity.md for the current compatibility notes.
- Config and session state are stored as TOML under the user config/state directories with restricted permissions on Unix.
- Downloaded filenames are sanitized before writing to disk.
- A background security reviewer polls shared runtime state and feeds findings
back to the main app. Its default model profile is
gpt-5.4. - The app avoids shelling out for Paperless operations; all API calls go through the Rust client.
- Migration notes
- Architecture overview
- Testing strategy
- CLI parity notes
- Release process
- Static docs site
This repo now ships installable repo-local skills:
- SKILL.md
- skills/paperless-documents/SKILL.md
- skills/paperless-pdf/SKILL.md
- skills/paperless-admin/SKILL.md
cargo fmt
cargo clippy --all-targets --all-features -- -D warnings
cargo test