npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@reductoai/cli

v0.2.0

Published

Reducto CLI: parse, extract, split, classify and edit documents from the shell

Readme

Reducto CLI

The Reducto document platform in your shell: parse, extract, split, classify and edit documents from the command line, in scripts, and inside agent workflows.

One static binary. No runtime. Every field of the Reducto API is reachable without waiting for a CLI release.

curl -fsSL https://reducto.ai/cli | sh
reducto login
reducto parse report.pdf

Table of Contents

Why Reducto

Reducto is the agentic document platform for leading AI teams who demand enterprise performance at scale. We provide a comprehensive toolkit for working with documents the way a human would, combining custom in-house and leading frontier models to power efficient and accurate document workflows.

The CLI brings that platform directly into your shell, scripts, and agent workflows.

Performance for you

Zero-shot accuracy on complex documents where other solutions aren't production-ready. Reducto orchestrates multiple models under the hood — routing, probes, and agentic VLM multipasses — and continuously updates them so you don't have to chase the frontier. Handles the long tail: tables, charts, figures, handwriting, scans.

Enterprise ready

Hosted, VPC, on-premises, and air-gapped deployments to meet any data residency or security requirement. SOC 2 and HIPAA compliant with zero data retention by default.

Complete toolkit

One platform for every document task — parse, classify, split, extract, edit. 30+ filetypes, not just PDFs. Agent-ready tooling (CLI, MCP, plugins, integrations).


Installation

| Method | Command | |---|---| | Shell (macOS, Linux) | curl -fsSL https://reducto.ai/cli \| sh | | PowerShell (Windows) | irm https://reducto.ai/cli.ps1 \| iex | | npm | npm install -g @reductoai/cli | | pip / pipx / uv | pip install reducto-cli · pipx install reducto-cli · uv tool install reducto-cli | | Go | go install github.com/reductoai/cli/cmd/reducto@latest | | Binaries | GitHub Releases (darwin, linux, windows · amd64, arm64) |

The npm and PyPI packages carry the same binary as the release; they do not download anything at install time. The shell installer writes to ~/.local/bin, the PowerShell installer to %LOCALAPPDATA%\Programs\reducto (set REDUCTO_INSTALL_DIR to change either); both verify the release checksum.

Check the install:

reducto version

Authentication

reducto login

This opens a browser for a device-code sign in and saves the key to ~/.reducto/config.yaml (mode 0600). Without a browser, pass the key in: reducto login --api-key <key> or echo $KEY | reducto login --api-key -.

The key is resolved in this order: --api-key, $REDUCTO_API_KEY, ~/.reducto/config.yaml.

Quick Start

# Parse a PDF into Markdown
reducto parse report.pdf

# Parse a folder, one output file per input
reducto parse ./invoices --out-dir parsed/

# Extract structured data with a JSON Schema
reducto extract invoice.pdf -s schema.json

# Or with a quick inline schema
reducto extract invoice.pdf -f vendor,total:number,due_date

# Edit a document with natural language
reducto edit w9.pdf -i "Name: Jane Doe. Check the Individual box." --save w9.filled.pdf

# Chain: parse once, reuse the job for extract
reducto parse contract.pdf -o id | reducto extract - -s terms.json

Commands

| Command | What it does | |---|---| | parse | Document → markdown, chunks, tables, figures | | extract | Document → JSON that matches your schema | | split | Find sections or sub-documents by description | | classify | Assign one of your categories to each document | | edit | Fill forms and change text with instructions; returns a PDF | | upload | Upload a file and print its reducto:// handle | | job, jobs, cancel | Inspect, list, and cancel async jobs | | studio | Open a job in Reducto Studio | | search, schema, docs | Find and inspect API fields; open the docs | | login, version | Sign in; print CLI, SDK and API versions |

reducto <command> --help lists the flags and examples for each command.

Common flags on every API command:

-o <fmt>        auto | pretty | md | json | payload | id
-p <pages>      page selection, e.g. 1-5,8
--save <path>   write the output to a file (edit: download the PDF)
--out-dir <dir> with many inputs, one file per input
--async         submit and print the job id; do not wait
-j <n>          parallel requests for many inputs (default 4)
--dry-run       print the request body and exit; no network call
-q / -v         quiet / verbose

Any API field

Named flags cover the common options. Everything else in the API is reachable too:

reducto search "merge tables"                 # find the field and its docs page
reducto schema parse formatting               # types and defaults for a section
reducto parse doc.pdf -S formatting.merge_tables=true -S retrieval.chunking.chunk_mode=section
reducto parse doc.pdf -c body.json            # a whole request body; flags layer on top
reducto parse doc.pdf --dry-run               # see exactly what would be sent

-S path=value takes a dotted path and a JSON value (bare words are strings). Before anything is uploaded, the body is checked against the CLI's copy of the API spec: unknown paths, values outside an enum and wrong primitive types are errors with a hint, so a typo never costs a request. Fields newer than the CLI's spec go through with --force.

Inputs and outputs

Inputs can be local files, directories (recursed, supported types only), https:// URLs, reducto:// upload handles, jobid:// handles from a previous command, or - for stdin.

Output goes to stdout. -o picks the shape: md for text, json for the full response, payload for just the result, id for a handle you can pipe into the next command. Status lines go to stderr, so reducto parse a.pdf > a.md is clean.

Supported File Types

PDF, images (PNG, JPG, TIFF, WEBP), Word (DOC, DOCX), PowerPoint (PPT, PPTX), Excel (XLS, XLSX, CSV), Apple Numbers, and more. See the docs for the full list.

Use Cases

Invoice and Receipt Processing

reducto parse ./invoices --out-dir parsed/
reducto extract ./invoices -s schemas/invoice.json --out-dir extracted/

Contract and Legal Document Review

reducto parse contract.pdf --agentic -S formatting.include='["change_tracking","comments"]'
reducto extract contract.pdf -s schemas/contract_terms.json --citations

Form Processing and Auto-Fill

reducto edit onboarding.pdf -i "Employee: Alex Chen. Start date: 2025-04-01. Select Full-time." --save onboarding.filled.pdf

Financial Statement Analysis

reducto extract quarterly_report.pdf -s schemas/financial_statement.json --deep

Feeding Agents and LLM Pipelines

reducto parse spec.pdf --chunk section > spec.md
reducto parse spec.pdf -o json | jq '.result.chunks[].content'

Configuration

| Setting | Source | |---|---| | API key | --api-key, $REDUCTO_API_KEY, ~/.reducto/config.yaml | | Base URL | --base-url, $REDUCTO_BASE_URL (default https://platform.reducto.ai) | | Color | --color auto\|always\|never, $NO_COLOR | | Telemetry headers | DO_NOT_TRACK=1 or REDUCTO_TELEMETRY=0 turns off the X-Reducto-* request headers |

The CLI only talks to the Reducto API (and to Reducto Studio during login). Nothing is sent anywhere else.

Upgrading from 0.1.x

Version 0.2.0 replaces the Python CLI with a single Go binary. The package names are the same (pip install reducto-cli), the config file is the same, and login, parse, extract and edit still exist. What changed:

  • Output goes to stdout instead of a <file>.parse.md next to the input. Use --save for one file or --out-dir for a folder.
  • parse --change-tracking/--highlights/--hyperlinks/--comments became -S formatting.include='["change_tracking",...]'.
  • edit writes the PDF where --save points instead of <file>.edited.pdf.
  • New: split, classify, upload, job, jobs, cancel, studio, search, schema, docs, and -S for any API field.

Development

make build          # bin/reducto
make test           # gofmt, vet, tests
make spec           # refresh the embedded OpenAPI document (cmd/reducto/openapi.json)
make packages       # snapshot release + npm packages + wheels, for local checks

Releases: push a vX.Y.Z tag. The Publish workflow builds the binaries with GoReleaser, creates the GitHub release, and publishes the PyPI wheels and npm packages from those same binaries. See CHANGELOG.md.

Related Projects

| Project | Description | |---------|-------------| | Reducto Python SDK | Python client for the Reducto API (pip install reductoai) | | Reducto Node.js SDK | Node.js client for the Reducto API (npm install reductoai) | | Reducto Go SDK | Go client for the Reducto API; the CLI is built on it | | Reducto Claude Code Plugins | Official Reducto plugins for Claude Code | | Reducto Studio | No-code web interface for document processing |

Resources