Skip to content

Back to the catalog

genspark-ai/genoffice
github.comrepo

genspark-ai/genoffice

GenOffice is an open-source (Apache-2.0) desktop office suite for macOS/Windows/Linux that opens native .docx/.xlsx/.pptx/PDF/Markdown/HTML files and puts an AI agent inside the editor, applying edits as byte-preserving diffs, tracked changes and live spreadsheet formulas rather than pasted text. It exposes the same engines to coding agents via a `genoffice` CLI, a bundled skill for Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf, and an MCP server with 29 tools (plus an HTTP variant for headless/remote use), and includes a local SQLite full-text file search optionally reranked by TypeSafe's Jev judgment model. Users can bring their own key (Claude, OpenAI, Gemini, DeepSeek, and others) or sign in with Genspark to route model calls through a proxy.

TL;DR Open-source AI-native Word/Excel/PowerPoint/PDF editor that exposes its byte-preserving document engines via CLI, agent skill, and a 29-tool MCP server.
Document

What it claims

GenOffice is a set of seven Electron apps: Docs, Sheets, Slides, PDF, Markdown, HTML and a tabbed shell. They share one engine layer. The original Office file is always treated as the source of truth, and edits are spliced in as narrow patches.

The same engines run headless through genoffice, a CLI that ships inside the app and needs no runtime of its own. The CLI makes no model calls: the agent does the reasoning, and the CLI builds the file and checks it. Spreadsheet cells written as "=SUM(B2:B9)" stay live formulas.

How it works

The engine layer is pure TypeScript packages, plus a Rust sidecar for .xlsx. The sidecar uses calamine to read and IronCalc to calculate. Other components:

  • Sheets UI: extends Univer.
  • PDF editing: rewrites the page content stream through PDFium.
  • PDF conversion: PDF → Word, Excel or PowerPoint uses PDFium character-level extraction plus geometry-based layout analysis.
  • HTML → Word: renders the page in the built-in Chromium and maps it to Word structures. Charts and icons become embedded pictures.

The .docx round trip turns on the dirty-block split:

flowchart LR
  A[open .docx] --> B[archive original by hash]
  A --> C[parse document.xml into blocks anchored to original XML]
  C --> D[Tiptap editor: manual + AI edits]
  D --> E{block dirty?}
  E -- yes --> F[new OOXML fragment, existing styles only]
  E -- no --> G[original bytes kept]
  F --> H[splice into document.xml]
  G --> H
  H --> I[repack zip, other entries copied byte-for-byte]

CLI edits are atomic. If any op is rejected, the file is left untouched and the CLI returns a guided error.

Evidence

The page gives only two demo traces, no benchmarks:

  • MCP-only deck: one Claude Code prompt produced an 8-slide renewable-energy deck. It took 38 MCP calls and about 13 minutes, with no shell. Three pages were redone after the agent inspected the renders.
  • CLI deck: a Solar System deck was built by staged CLI checks (outline → per-page → build → audit).

How to use it

CLI (full reference in packages/cli/README.md; on macOS the binary is at /Applications/GenOffice.app/Contents/Resources/cli/genoffice):

genoffice info report.docx --json
genoffice convert report.md --to pdf
genoffice create --type xlsx --from table.json --out sales.xlsx
genoffice docs read report.docx --range 0-9 --json # then `docs apply --ops edits.json` edits in place
genoffice render report.docx --out shots/

MCP over stdio, or over HTTP for remote use:

claude mcp add --transport stdio genoffice -- genoffice mcp
genoffice mcp --http 3093 --host 0.0.0.0 --token "$GENOFFICE_MCP_TOKEN"
curl -T report.docx -H "Authorization: Bearer $GENOFFICE_MCP_TOKEN" http://server:3093/files/

In HTTP mode:

  • Each session gets a private scratch folder.
  • open is not offered.
  • With GENOFFICE_ALLOWED_ROOTS unset, tools are confined to the server's own file store. Set it to list the folders tools may touch.

The guides are exposed as genoffice://guide/* resources, so no skill install is needed.

Jev reranking is off by default. You enable it under AI Media & Search → Local file search and choose either OpenRouter (model typesafe/jev-1.13) or TypeSafe's own API. When on, excerpts of the top 20 local hits are sent out for scoring. If the call fails, the local order is kept.

Web search without an account defaults to Parallel's free, rate-limited Search MCP, with a DuckDuckGo scrape behind it.

Building from source:

npm install
npm run fixtures
npm test
npm run dev

Sheets also needs cargo on PATH. Packaging commands are npm run dist:mac, npm run dist:win and npm run dist:linux.

Limits

  • Headless hosts: render, convert-to-PDF and create_pdf launch a hidden GenOffice process. A headless server therefore needs the full app installed plus a virtual display (xvfb-run).
  • Scanned PDFs: OCR uses the system OCR on macOS and Windows only. The page does not mention Linux OCR.
  • Linux AppImage: needs FUSE 2 (libfuse2, or libfuse2t64 on Ubuntu 24.04).
  • Analytics: official builds send usage analytics by default. The page says no document content or file names are sent, and reporting can be disabled in Settings → General.
  • Licence: everything is Apache-2.0 except ee/, which falls under a separate GenOffice Enterprise License. The GenOffice and Genspark names are Mainfunc, Inc. trademarks, so forks must rebrand.
  • Cloud features: AI features need a network connection. Search and media still go through the configured provider even when used via the CLI or MCP.
  • Maturity: the project describes itself as in active development.

Organisations named here

  • Genspark
  • Mainfunc, Inc.
  • TypeSafe
  • Parallel
  • Serper
  • Serply
  • Tavily
  • Opper
  • Requesty
  • OpenRouter
  • Claude Code
  • Cursor
  • GitHub Copilot
  • IronCalc
  • Jev
  • OpenCode

Technologies named here

  • GenOffice
  • TypeSafe Jev
  • DeepSeek V4.1 Flash
  • genoffice MCP server
  • genoffice agent skill
  • Electron
  • Univer
  • PDFium
  • pdf.js
  • pdf-lib
  • Tiptap / ProseMirror
  • CodeMirror
  • Konva
  • HarfBuzz
  • calamine and IronCalc
  • libeot
  • React
  • Mermaid and KaTeX
  • opentype.js
  • JSZip and fast-xml-parser
  • Fluent UI System Icons
  • electron-updater
  • SQLite
  • Model Context Protocol
  • Claude Code
  • Codex
  • Cursor
  • Gemini CLI
  • GitHub Copilot
  • OpenCode
  • Node.js
  • TypeScript
  • Rust
  • Git
  • GitHub
  • Windsurf
  • Claude Desktop

Techniques named here

  • Byte-preserving editing
  • Tracked changes with rollback
  • Judgment-model reranking
  • MCP tool exposure
  • Staged agent skill workflow
  • On-device PDF-to-Office conversion