The Ultimate Privacy-First, Open-Core PDF Management and Automation Platform
Lumina PDF is a premium, enterprise-grade, open-core PDF platform designed for complete data sovereignty and seamless document workflow orchestration. Run it as a highly responsive cross-platform desktop application, access it in the browser as a stateful modern React SPA, or deploy it on on-premise infrastructure as a highly scalable containerized service with an extensive private REST API.
Unlike cloud-based services, Lumina PDF performs document processing 100% locally or within your controlled infrastructure. There are no tracking scripts, no external analytics, and no remote document uploads.
- Desktop App (Tauri + Rust): Completely local, lightning-fast native experience with system JRE bundling, low memory footprints, and native PDF file association.
- Modern Web UI: A stunning, stateful React 18 Single Page Application styled with Mantine UI and TailwindCSS, boasting a rich dark mode, sleek micro-animations, and fluid transitions.
- Server Deployments: Optimized Spring Boot container images running on Java 21+ (Java 25 recommended), fully ready for deployment on GCP, AWS, Azure, or bare-metal Kubernetes.
- Chain Operations: Upload a PDF once and seamlessly pass it between tools (e.g., Split β OCR β Compress β Sign) without losing context or reloading documents.
- 100GB+ Document Handling: Engineered with advanced memory management, client-side IndexedDB caching, Web Worker thumbnails, and explicit memory resource release to process massive PDF workloads in the browser without crashes.
- AI reasoning service: Built with FastAPI, Pydantic, and
pydantic-aito plan, reason, and interpret complex document tasks securely and locally. - Structured Outputs: Native support for LLM-driven structured extraction, document understanding, and delegate tool orchestration.
- Security Mode: Enabled via
DOCKER_ENABLE_SECURITY=true. Features multi-tenant logins, role-based access controls (RBAC), secure auditing logs, and single sign-on (SSO). - Data Sovereignty: Built from the ground up for strict data protection compliance, fully air-gapped environment compatible.
Lumina PDF uses a clean, modern three-tier architecture separating presentation, heavy processing, and logical reasoning:
graph TD
subgraph Client Layer
Desktop["Tauri Desktop App (Rust + JRE)"]
Browser["React 18 SPA (Mantine + Tailwind)"]
end
subgraph Service Proxy
Backend["Spring Boot API Gateway (Java 21/25)"]
end
subgraph Core Processing Engines
PDFBox["Apache PDFBox (Core Operations)"]
LibreOffice["LibreOffice (Conversions)"]
qpdf["qpdf (PDF Optimization)"]
AIEngine["Python AI Engine (FastAPI + Pydantic-AI)"]
end
Client Layer -->|REST APIs / JSON| Backend
Backend --> PDFBox
Backend --> LibreOffice
Backend --> qpdf
Backend -->|Typed Contracts| AIEngine
Lumina PDF houses a comprehensive suite of PDF tools, organized into intuitive categories:
| Category | Tools Included |
|---|---|
| Page Operations | Split Pages, Merge Files, Rotate Pages, Reorganize / Reorder, Crop, Delete Pages |
| Conversion | PDF to Word, PDF to Excel, PDF to Image, HTML to PDF, Word/Excel to PDF, Markdown to PDF, Image to PDF |
| Security & Signing | Digital Signatures, Secure Redaction, Flatten Fields, Encrypt (Add Password), Decrypt (Remove Password) |
| Quality & Optimization | Advanced Compression, PDF Repair, Repair Line Art, Flatten Layers, OCR (Optical Character Recognition) |
| Workflows & Pipelines | Custom Pipelines, Multi-file Batch Processing, Template Auto-fill, Automated Watermarking |
Launch the full-featured, local Lumina PDF server with a single command:
docker run -d -p 8080:8080 --name lumina-pdf ghcr.io/bennerdoo/luminapdf:latestOnce running, navigate to http://localhost:8080 in your web browser.
To enable enterprise user logins, role-based security, and access logs, deploy using the following Docker Compose configuration:
version: '3.8'
services:
lumina-pdf:
container_name: lumina-pdf-secure
image: ghcr.io/bennerdoo/luminapdf:latest
ports:
- "8080:8080"
environment:
- DISABLE_ADDITIONAL_FEATURES=false
- SECURITY_ENABLELOGIN=true
- SYSTEM_DEFAULTLOCALE=en-GB
- UI_APPNAME=Lumina PDF
- SYSTEM_MAXFILESIZE=100
volumes:
- ./lumina/config:/configs:rw
- ./lumina/logs:/logs:rw
- ./lumina/tessdata:/usr/share/tessdata:rw
restart: alwaysWe provide three distinct Docker builds tailored for different environment requirements:
- Ultra-Lite (
Dockerfile.ultra-lite): A highly stripped-down image containing only core PDFBox operations. Ideal for resource-constrained setups and microservice architectures. - Standard (
Dockerfile): The recommended image. Contains the Spring Boot core, Mantine frontend, qpdf, and standard system tools. - Fat (
Dockerfile.fat): Includes all of the above, plus pre-downloaded offline models (e.g., Tesseract OCR languages), heavy fonts, LibreOffice, and full offline dependencies for total air-gapped capability.
Lumina PDF uses Task as a unified command runner. Install Task, then use the following commands to speed up your local development.
- Install All Dependencies:
task install
- Launch the Full Stack (Frontend + Backend + AI Engine):
task dev:all
- Frontend Dev Server:
http://localhost:5173 - Backend API:
http://localhost:8080 - AI Engine:
http://localhost:5001
- Frontend Dev Server:
- Spring Boot Backend:
- Start in dev mode:
task backend:dev - Format code:
task backend:format(Google Java Format)
- Start in dev mode:
- React Frontend:
- Start Vite:
task frontend:dev - Install frontend packages:
task frontend:install
- Start Vite:
- Python AI Engine:
- Start FastAPI engine:
task engine:dev - Run static analysis & checks:
task engine:check
- Start FastAPI engine:
- Tauri Desktop App:
- Launch desktop developer window:
task desktop:dev - Build production desktop package:
task desktop:build
- Launch desktop developer window:
Ensure all components are strictly validated before making Pull Requests:
# Run backend, frontend, and engine tests in parallel
task test
# Full quality gate (Linter + TypeScript validation + Test suite)
task check
# Comprehensive integration test (Builds all Docker variants & executes Cucumber)
./test.shLumina PDF is fully localized into over 40+ languages.
- Rule: All translation updates must be made in
en-GBfirst (located infrontend/public/locales/en-GB/translation.toml). - Translations are converted to JSON and loaded dynamically by the React SPA.
- Refer to the Language Guide for more details.
We love contributions! Please make sure to read our Developer Guide and Contributing Guidelines before writing code.
- Developer Guide β Comprehensive technical overview.
- Adding React Tools Guide β Step-by-step instructions on implementing new PDF tools.
- AI Engine Guidelines β Architecture and style rules for python services.
Lumina PDF is open-core. See the LICENSE file for details.
