OfficeCLI vs xberg
Office suite built for AI agents: one binary, no Office install, creates, reads and edits Word, Excel and PowerPoint, and renders them to HTML/PNG so the agent can see what it made. Ships as a skill. — versus — Rust-core extraction orchestrator with 15 language bindings: 96 formats — PDF, Office, images, audio, code, web — to clean text, tables and RAG-ready chunks. OCR and structured extraction built in.
Xberg extracts 96 formats including Office into clean text and chunks; OfficeCLI is the other direction — an agent authoring and editing Office files with a render loop. Overlap is only on reading.
| OfficeCLI | xberg | |
|---|---|---|
| Stars | 30k | 9.3k |
| Forks | 2.1k | 580 |
| Language | C# | Rust |
| License | Apache-2.0 | MIT |
| Last activity | 2 days ago | 2 days ago |
| Topics | skills, ocr | ocr, rag, local |
| Curated connections | 3 | 7 |
OfficeCLI — the curator's take
When an agent has to *produce* a .docx, .xlsx or .pptx rather than merely read one: `officecli install` puts the binary on PATH and drops the skill into every coding agent it finds (Claude Code, Cursor, Windsurf, Copilot), `officecli watch deck.pptx` gives a live browser preview, and the built-in renderer closes the render → look → fix loop that makes generated documents actually acceptable. 30k stars, Apache-2.0, single C# binary on every platform. NOT for extraction pipelines — if you only need text and tables out of Office files, a converter is lighter — and NOT a document design system: it executes edits, it doesn't know what a good slide is.
xberg — the curator's take
The polyglot pick: reach for Xberg when your stack spans Rust, Python, Node, Go, the JVM or WASM and you want ONE extraction engine instead of a per-language pipeline. Handles 96 formats — PDFs, Office, images, audio/video (Whisper), source code (306 languages, syntax-aware chunking) — and websites, dynamic pages included. OCR is built in, not bolted on: ONNX and Candle models run locally, or any VLM (Gemini, Mistral, …) through LiteLLM; on top sit structured extraction to a JSON schema and NER, keywords, classification and captioning. Think of it as a parallel extraction orchestrator with a plugin architecture — a MinerU backend or your own local VLM can sit behind it — rather than a single parser. It's the v1 successor to Kreuzberg. Don't reach for it if all you need is max-fidelity parsing of messy scanned PDFs and nothing else (a dedicated VLM like MinerU or olmocr is the shorter path, though either can also run behind Xberg), or if you're Python-only and already committed to LlamaIndex's own readers.