{"slug": "paperpilot-zero-cloud-pure-rust-pdf-engine-with-wasm-and-mcp", "title": "PaperPilot – Zero-Cloud, Pure-Rust PDF Engine with WASM and MCP", "summary": "PaperPilot, an open-source PDF toolkit written in pure Rust by developer KrushnaVardhanReddy, ships an MCP server that lets Claude Desktop, Cursor and other MCP clients merge, split, OCR and compress PDFs locally, with the same engine also running as a CLI, a WASM browser build, a Tauri + Svelte desktop app and a local REST API on port 7823. The project, released under Apache 2.0 and built on lopdf, pdf_oxide and rten, requires Rust 1.75+ and processes files on-device with no cloud calls; the roadmap lists PDF-to-Markdown/HTML/JSON conversion in v0.7, PDF-to-Office export in v0.8, encrypt/decrypt/sign/redact in v0.9 and render, flatten, repair and PDF/A in v1.0.", "body_md": "**PDF tools for your AI agent — and for you. Pure Rust. Runs locally. Files never leave your machine.**\n\n[**Try it in your browser →**](https://usepaperpilot.com) · [Download](https://github.com/KrushnaVardhanReddy/PaperPilot/releases) · [Roadmap](https://github.com/KrushnaVardhanReddy/PaperPilot/blob/main/ROADMAP.md)\n\nPaperPilot is a PDF and document toolkit written in Rust. The same engine runs as:\n\n| Surface | Use it for | \n|---|---|\n| **MCP server** | Give Claude Desktop, Cursor, or any MCP client the ability to merge, split, OCR, and compress PDFs | \n| **CLI** | Batch and scripted workflows | \n| **Browser (WASM)** | Zero-install tools; files are processed in browser memory, nothing is uploaded | \n| **Desktop app** | Tauri + Svelte GUI with viewer, markup, and diff | \n| **Local REST API** | Call it from Python, Node, or n8n at `localhost:7823` | \n\nNo Chromium, no C++ runtime, no cloud calls.\n\nDownload `paperpilot-mcp` from [Releases](https://github.com/KrushnaVardhanReddy/PaperPilot/releases), then add it to `claude_desktop_config.json`:\n\n```\n{\n  \"mcpServers\": {\n    \"paperpilot\": {\n      \"command\": \"/path/to/paperpilot-mcp\"\n    }\n  }\n}\n```\n\nRestart Claude and try: *\"Merge these two PDFs and compress the result.\"*\n\n```\n# Merge\npaperpilot merge --inputs doc1.pdf doc2.pdf --output merged.pdf\n\n# Compress\npaperpilot compress --input in.pdf --quality 75 --output compressed.pdf\n\n# Rotate pages 1, 3–5 by 90°\npaperpilot rotate --input in.pdf --pages 1,3-5 --angle 90 --output out.pdf\n```\n\nGo to [usepaperpilot.com](https://usepaperpilot.com). Open your browser's Network tab while you work — you'll see no file uploads.\n\n```\ngit clone https://github.com/KrushnaVardhanReddy/PaperPilot.git\ncd PaperPilot\ncargo build --release -p paperpilot-cli -p paperpilot-mcp -p paperpilot-gateway\n```\n\nDesktop app:\n\n```\ncd apps/desktop && pnpm install && pnpm tauri dev\n```\n\nRequires Rust 1.75+, Node.js, and pnpm.\n\n**Organize:** merge, split, rotate, delete pages, reorder pages, extract pages, booklet imposition, N-up grid\n**Optimize:** compress\n**Extract:** plain text, OCR (pure-Rust PaddleOCR via `rten`)\n**Security:** watermark, validate signatures, remove signatures, PII scan, deep sanitize\n**Office data:** Excel → JSON, Excel → CSV\n\nComing next (see [ROADMAP.md](https://github.com/KrushnaVardhanReddy/PaperPilot/blob/main/ROADMAP.md)):\n\n- **v0.7:** PDF ↔ Markdown / HTML / JSON\n- **v0.8:** PDF → Word / Excel / PowerPoint\n- **v0.9:** encrypt, decrypt, sign, redact, forms, annotations\n- **v1.0:** render, flatten, repair, compare, PDF/A, Bates numbering\n\n- **Private by default.** Everything runs locally or in your browser tab.\n- **Agent-ready.** MCP support is first-class, not an afterthought.\n- **One engine, many surfaces.** CLI, MCP, REST, WASM, and desktop share the same Rust core, so behavior is consistent.\n- **Small and dependency-light.** Pure Rust, built on[`lopdf`](https://github.com/J-F-Liu/lopdf) ,[` pdf_oxide`](https://crates.io/crates/pdf_oxide) ,[` rten`](https://github.com/robertknight/rten) , and friends.\n\nRun `cargo bench --workspace` to reproduce. Methodology and results: [SYSTEM_BENCHMARK_REPORT.md](https://github.com/KrushnaVardhanReddy/PaperPilot/blob/main/SYSTEM_BENCHMARK_REPORT.md).\n\n```\nDesktop (Tauri) · CLI · REST (Axum) · MCP (stdio) · WASM (browser / edge)\n                              │\n                       Rust core workspace\n   paperpilot-core · paperpilot-pdf · paperpilot-nlp · paperpilot-gateway\n   paperpilot-mcp · paperpilot-wasm · paperpilot-storage\n<script src=\"https://cdn.usepaperpilot.com/embed.js\" data-tools=\"merge,compress,ocr\"></script>\n<div id=\"paperpilot-widget\"></div>\npaperpilot serve --port 7823\ncurl -X POST http://localhost:7823/api/v1/pdf/merge \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"inputs\": [\"a.pdf\", \"b.pdf\"], \"output\": \"out.pdf\"}'\n```\n\nSwagger docs at `http://localhost:7823/docs`.\n\nIssues and PRs are welcome. Good first contributions: bug reports with a sample PDF, new tool requests, and docs fixes.\n\nCommunity Edition (this repo): [Apache 2.0](https://github.com/KrushnaVardhanReddy/PaperPilot/blob/main/LICENSE). It includes the CLI, MCP server, REST gateway, WASM engine, and desktop app.\n\nAn Enterprise Edition (SSO, RBAC, audit logs, DLP) is developed separately.", "url": "https://wpnews.pro/news/paperpilot-zero-cloud-pure-rust-pdf-engine-with-wasm-and-mcp", "canonical_source": "https://github.com/KrushnaVardhanReddy/PaperPilot", "published_at": "2026-10-26 03:29:05+00:00", "updated_at": "2026-10-26 03:43:25.459262+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "developer-tools", "ai-tools"], "entities": ["PaperPilot", "KrushnaVardhanReddy", "Claude Desktop", "Cursor", "Tauri", "Svelte", "lopdf", "rten"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/paperpilot-zero-cloud-pure-rust-pdf-engine-with-wasm-and-mcp", "markdown": "https://wpnews.pro/news/paperpilot-zero-cloud-pure-rust-pdf-engine-with-wasm-and-mcp.md", "text": "https://wpnews.pro/news/paperpilot-zero-cloud-pure-rust-pdf-engine-with-wasm-and-mcp.txt", "jsonld": "https://wpnews.pro/news/paperpilot-zero-cloud-pure-rust-pdf-engine-with-wasm-and-mcp.jsonld"}}