PaperPilot – Zero-Cloud, Pure-Rust PDF Engine with WASM and MCP
PaperPilot: The Local-First, Rust-Powered PDF Engine
PaperPilot is a comprehensive toolkit for PDF and document manipulation, engineered entirely in Rust. It is designed to function as a local AI copilot for your documents, ensuring that your data never leaves your machine.
The core philosophy of PaperPilot is expressed as:
Cloud-based processing Zero-Cloud Architecture. No Chromium dependencies, no C++ runtimes, and absolutely no external API calls for core processing.
🛠️ Versatile Deployment "Surfaces"
The same high-performance Rust engine powers multiple interfaces depending on your workflow:
| Interface | Primary Use Case | Key Characteristic |
|---|---|---|
| MCP Server | AI Agents (Claude, Cursor, etc.) | Enables agents to merge, split, and OCR PDFs |
| CLI | Automation & Scripting | High-speed batch processing |
| WASM | Browser-based Tools | Zero-install; processed in browser memory |
| Desktop App | Visual Management | Tauri + Svelte GUI with markup and diffing |
| Local REST API | Third-party Integration | Accessible via Python, Node, or n8n |
🤖 AI Agent Integration (MCP)
PaperPilot leverages the Model Context Protocol (MCP) to give coding agents like Codex, Claude Code, Kimi Code, Pi, and Cursor direct access to PDF manipulation tools via a local stdio server.
Quick Setup
You can generate the necessary configuration for your specific client using the following command:
paperpilot-mcp --client-config codex
(Replace codex with claude-code, kimi-code, pi, claude-desktop, or cursor).
To manually integrate with Claude Desktop, append the following to your claude_desktop_config.json:
{ "mcpServers": { "paperpilot": { "command": "/path/to/paperpilot-mcp" } } }
Once restarted, you can simply tell your AI: "Merge these two PDFs and compress the result."
💻 Command Line Interface (CLI)
For those who prefer the terminal, PaperPilot offers powerful one-liners:
# Combine multiple documents
paperpilot merge --inputs doc1.pdf doc2.pdf --output merged.pdf
# Reduce file size (75% quality)
paperpilot compress --input in.pdf --quality 75 --output compressed.pdf
# Rotate specific pages (1, 3, 4, 5) by 90 degrees
paperpilot rotate --input in.pdf --pages 1,3-5 --angle 90 --output out.pdf
🏗️ Build and Installation
Prerequisites
- Rust 1.75+
- Node.js
- pnpm
From Source
git clone https://github.com/KrushnaVardhanReddy/PaperPilot.git
cd PaperPilot
cargo build --release -p paperpilot-cli -p paperpilot-mcp -p paperpilot-gateway
For the Desktop GUI:
cd apps/desktop
pnpm install
pnpm tauri dev
🚀 Capabilities & Roadmap
Current Features (v0.6)
- Organization: Merge, split, rotate, delete, reorder, extract, N-up grid, and booklet imposition.
- Optimization: Advanced compression.
- Extraction: Plain text and OCR (utilizing pure-Rust PaddleOCR via
rten). - Security: PII scanning, deep sanitization, watermarking, and signature validation/removal.
- Office Data: Conversion of Excel files to
JSONorCSV.
Future Milestones
- v0.7:
- v0.8: Export to Word, Excel, and PowerPoint.
- v0.9: Encryption, decryption, redaction, and form annotations.
- v1.0: Rendering, flattening, repair, PDF/A compliance, and Bates numbering.
📐 System Architecture
PaperPilot uses a modular workspace to ensure consistent behavior across all platforms.
🔌 Integration Options
Web Embedding
Integrate PDF tools directly into your website with a simple script:
<script src="https://cdn.usepaperpilot.com/embed.js" data-tools="merge,compress,ocr"></script>
<div id="paperpilot-widget"></div>
Local REST API
Start the server: paperpilot serve --port 7823.
Example request:
curl -X POST http://localhost:7823/api/v1/pdf/merge \
-H "Content-Type: application/json" \
-d '{"inputs": ["a.pdf", "b.pdf"], "output": "out.pdf"}'
Full documentation is available via Swagger at http://localhost:7823/docs.
🤝 Contribution & Enterprise
- Open Source: Contributions are welcome! Please provide bug reports with sample PDFs or suggest new tools.
- Enterprise Edition: A separate version is under development featuring SSO, RBAC, Audit Logs, and DLP.