The world's first full-featured open-source AI Office suite.

Word, Excel, PowerPoint and PDF files, edited by you and your AI, saved back in the real formats.

English · Español · Português (Brasil) · Deutsch · Français · 简体中文 · 繁體中文 · 한국어 · 日本語 · العربية · Русский · Italiano · Nederlands · Polski · Čeština · Bahasa Indonesia · Bahasa Melayu · ไทย · हिन्दी · עברית

Download · CLI · MCP · Website · Community · X · Privacy

GenOffice is a free, open-source alternative to Microsoft Office for macOS,

Windows and Linux. It opens and saves native .docx, .xlsx and .pptx

files, edits PDF, Markdown and HTML, and puts an AI agent next to every

document — not a chat box bolted on the side, but an editor that reads the

file, makes the change, and shows you exactly what it touched.

- Real formats, byte-preserving. Only what you edit is rewritten. Everything else in the file survives byte-for-byte, so documents keep working in Word, Excel and PowerPoint.

- AI you can review. Edits land as tracked changes and diffs with one-click rollback. Spreadsheets get live formulas, not pasted numbers. Decks and pages are generated onto the canvas and stay fully editable.

- Local by design. Files open, edit, save and convert on your machine. PDF → Word / Excel / PowerPoint, Markdown → Word and HTML → Word all run on-device. Only the AI calls leave the machine, to the provider you choose.

- Find files by what they say. The home screen searches the names,

folders and full text of your .docx,.xlsx,.pptx, PDF, Markdown and HTML files from a local SQLite index, CJK included. Optionally, the top hits are reranked by TypeSafe Jev, the System One judgment model, so the file that answers your question comes first.

- Your keys or none. Sign in with Genspark and skip keys, or bring your own key for Claude, OpenAI, Gemini, DeepSeek, Kimi, GLM, Qwen, Doubao, MiniMax, Grok, Mistral, OpenRouter, Requesty, Opper, Cheaper Inference, or any OpenAI-compatible endpoint, local servers included.

- Scriptable and agent-ready. The app ships a genofficecommand line and a skill for Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf, so a coding agent can create, convert, read and edit real Office files on your machine without opening a window.

Get it: macOS (Apple Silicon and Intel) · Windows (x64 and Arm) · Linux (deb, rpm, AppImage) — details and requirements in Download.

Six apps, one AI panel, a file search reranked by TypeSafe Jev, and a command line for your coding agent. Every screenshot is the real app on macOS, with the AI driven from the prompt you can read in the panel.

Say what the page is for and who it is for. The AI proposes a design brief

first — hook, palette, typography and style directions — then builds a single

self-contained .html file against those tokens.

Every file in your work folder is indexed on-device: names, folders and the extracted text of Word, Excel, PowerPoint, PDF, Markdown and HTML files, in a SQLite full-text index with CJK-aware tokenizing. Switch on Jev search reranking and the top 20 local hits are judged by TypeSafe Jev, the System One model that returns one calibrated relevance score per document in a single call instead of generating text. The list is reordered by that score; if the call fails or times out, the local order stays.

GenOffice ships a genoffice command line and an agent skill. Install the

skill and Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode or

Windsurf can create, convert, read and edit real Office files through the

same engines as the apps, without opening a window.

Every genoffice command is also an MCP tool. Claude Code, Claude Desktop,

Cursor and any other MCP client can start genoffice mcp themselves, with no

skill to install and no window open, and get 29 tools plus the op references

as resources. A second, HTTP server inside the app lets an agent build a Word

document in a visible editor tab while you watch.

- Open source, Apache-2.0, built in the open on GitHub.

- Yours to run. Native apps for macOS, Windows and Linux; files stay on your disk and every edit, save and conversion happens on your machine.

- Real Office files. Native .docx,.xlsxand.pptx, byte-preserving: the parts of a file you did not touch are copied exactly as they were.

- An AI that edits the document itself. Tracked changes in Docs, live formulas and charts in Sheets, slides drawn onto the canvas, every AI turn a snapshot you can roll back.

- Your model, your key. Sign in with Genspark, or bring a key for Claude, OpenAI, Gemini, DeepSeek and more, local servers and any OpenAI-compatible endpoint included.

- PDF done properly. Edit text inside the page, and convert PDF to Word, Excel or PowerPoint on-device, with system OCR for scans.

- Markdown and HTML too, with the same AI panel and local export to Word.

- Search that finds the answer, not the keyword. Full-text search over every document in your folders, indexed on-device, with optional reranking by TypeSafe Jev, the System One judgment model.

- Scriptable. A genofficecommand line, an agent skill and an MCP server put every engine at the service of Claude Code, Claude Desktop, Codex, Cursor and other agents, still on-device.

- Free, for individuals and teams alike.

Sign in with Genspark and there is nothing to configure: model calls route through the Genspark proxy (Claude, GPT and Gemini families) and the agents get web and image search, image generation, and image/audio/video analysis.

Or bring your own key. Settings → AI lists Claude, OpenAI, Gemini, DeepSeek, Kimi, GLM, Qwen, Doubao, MiniMax, Grok, Mistral, OpenRouter, Requesty, Opper, Cheaper Inference and OpenCode Zen/Go, plus a custom slot for any OpenAI-compatible endpoint (base URL + key), including local model servers. Search and media have their own per-capability providers under AI Media & Search: Serper, Serply, Tavily or Parallel for web search, and OpenAI, Gemini, Doubao/Seedream, GLM, Grok, Qwen, MiniMax or any OpenAI-compatible images endpoint for image generation and image/video analysis, plus DeepSeek V4.1 Flash for image analysis.

TypeSafe Jev reranks the home screen's file search. Under AI Media & Search →

Local file search, switch on Jev search reranking and pick an endpoint:

OpenRouter (model typesafe/jev-1.13) or

TypeSafe's own API. The key is stored only on this device. It is off by

default; when on, the excerpts of the top 20 local hits are sent for judgment

and nothing else leaves the machine.

Parallel works without an account: its free Search MCP (rate-limited) is the default web search whenever no Genspark login or search key is configured, and it runs ahead of the DuckDuckGo scrape. Select Parallel under Web search and enter a Parallel key to use the Search API instead.

The whole suite ships light, dark and system themes. Themes only change what is on screen: exports, prints and saved files always keep the document's own colors.

Everything the apps can do to a file, the genoffice command line can do from

a terminal: inspect, convert, create, read and edit Word, Excel, PowerPoint,

PDF, Markdown and HTML on the same engines, headless. It installs with

GenOffice, needs no runtime of its own, and never sends a document anywhere.

Paired with the bundled agent skill, it turns a coding agent into a

document worker that produces real Office files instead of Markdown

approximations.

Works with: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf out of the box, any other agent that reads skills, and, through the MCP server, Claude Desktop and every MCP client.

Then start a new chat and ask for a document. The skill teaches the agent when

to reach for genoffice, how to read a file before editing it, and how to

check its own work.

genoffice --version

genoffice info report.docx --json # headings and blocks; or sheets, slides, pages

genoffice convert report.md --to pdf # md/html/docx/xlsx/pptx → pdf, pdf → docx/xlsx/pptx, …

genoffice create --type docx --from notes.md --out notes.docx

genoffice create --type xlsx --from table.json --out sales.xlsx # "=SUM(B2:B9)" cells stay live formulas

genoffice docs read report.docx --range 0-9 --json # then `docs apply --ops edits.json` edits in place

genoffice render report.docx --out shots/ # one PNG per page, to look at what you made

genoffice open sales.xlsx # hand the result to the editorEvery command prints a one-line summary, or a single JSON object with

--json. Edits are atomic: a rejected op leaves the file untouched and comes

back with a guided error. genoffice help lists the current command surface;

the full reference is packages/cli/README.md.

The Solar System deck in the demo took one prompt in Claude Code. Behind it, the agent followed the skill's staged workflow and the CLI checked every stage before the next one started:

genoffice capabilities --json # which cloud tools GenOffice has configured

genoffice guide slides design # the deck workflow and layout library

genoffice image "the eight planets in a row …" --aspect 16:9 --out deck/assets/cover.jpg

genoffice slides check deck/outline.json --json # 8 pages, no findings

genoffice slides check deck/pages/01.json --json # builds one slide, audits overflow and overlap

… # one page file per slide, fixed until each check is clean

genoffice create --type pptx --spec deck/pages --outline deck/outline.json --out deck/solar-system.pptx --json

genoffice slides render deck/solar-system.pptx --out deck/shots --json

genoffice slides audit deck/solar-system.pptx --json # 8 slides, no layout issues

genoffice slides replace deck/solar-system.pptx --slide 4 --spec deck/pages/05.json --json

genoffice open deck/solar-system.pptxNo model call happens inside genoffice: the agent does the thinking, the CLI

does the building and the checking, and the result opens in GenOffice or

PowerPoint as an ordinary .pptx.

The same commands are available as Model Context Protocol tools, for assistants that cannot run a terminal or that you would rather not give one. There are two ways in, both shown with copy-ready snippets in Settings → Integrations → MCP:

# Claude Code

claude mcp add --transport stdio genoffice -- genoffice mcp// Cursor, Claude Desktop or any other MCP client

{ "mcpServers": { "genoffice": { "command": "genoffice", "args": ["mcp"] } } }# On the machine that has GenOffice (private network; add --token for a shared box)

genoffice mcp --http 3093 --host 0.0.0.0 --token "$GENOFFICE_MCP_TOKEN"

# From the client: upload, then use the URL wherever a tool takes a file

curl -T report.docx -H "Authorization: Bearer $GENOFFICE_MCP_TOKEN" http://server:3093/files/

# → { "url": "http://server:3093/files/<id>/report.docx", ... }

# docs_read({ "file": "http://server:3093/files/<id>/report.docx" })

# docs_apply(...) → output_url, downloadable with curl -oOver HTTP every session gets a private scratch folder, relative paths and deck

folders resolve inside it, open is not offered, and with

GENOFFICE_ALLOWED_ROOTS unset the tools cannot leave the server's own file

store. render, convert to PDF and create_pdf still start a hidden

GenOffice process, so a headless host needs the app installed and a virtual

display (xvfb-run).

genoffice here is the CLI shipped inside the app (on macOS

/Applications/GenOffice.app/Contents/Resources/cli/genoffice; the settings

pane prints the exact path for your install). The server carries its own

workflow instructions and exposes the op references as genoffice://guide/*

resources, so no skill is needed; the skill and the MCP server can coexist and

the assistant picks one. Cloud features (search, image, media) still go

through the provider configured in GenOffice; everything else runs locally, and

GENOFFICE_ALLOWED_ROOTS confines every tool to the folders you list.

The renewable-energy deck in the demo is what one prompt in Claude Code

with only the genoffice MCP server attached looks like from the protocol

side:

capabilities · guide(slides, spec) · guide(slides, design)

search(query) ×4 → IEA, BNEF and IRENA figures for the slides

search(query, images) ×7 · media(url, ask) ×7

→ candidate photos, each one checked to be a real photograph

deck_start(dir, style, outline) → outline checked: 8 pages to write

deck_page(dir, 0, page) … deck_page(dir, 7, page)

→ each page checked against the outline and the palette; one page sent again

deck_build(dir, out) → renewables-2026.pptx, no image failures

slides_audit(file) · slides_render(file, out)

→ no layout findings; 8 PNGs come back as image content

deck_replace(dir, n, page) ×3 · slides_render(file, out)

→ three pages fixed after looking at the renders

Thirty-eight calls, about thirteen minutes, and the assistant never touched a

shell: the figures, the photos, the guides, the checks and the renders all

travelled as MCP tool results. Only search and media left the machine, to

the provider configured in GenOffice.

All builds come from main; the macOS and Windows installers are signed.

Older versions are on the Releases page.

Installing on Linux

The deb installs with apt — it pulls in the dependencies and adds GenOffice to the applications menu:

sudo apt install ./genoffice_<version>_amd64.debOn Fedora / RHEL-family / openSUSE, install the rpm instead:

sudo dnf install ./genoffice-<version>.x86_64.rpm # Fedora / RHEL family

sudo zypper install ./genoffice-<version>.x86_64.rpm # openSUSEThe AppImage runs in place: install the FUSE 2 runtime

(sudo apt install libfuse2; on Ubuntu 24.04 the package is libfuse2t64),

make the file executable, then run it:

chmod +x GenOffice-<version>.AppImage

./GenOffice-<version>.AppImageSeven Electron apps — Docs, Sheets, Slides, PDF, Markdown, HTML and the

tabbed shell — share one engine layer of pure TypeScript packages plus a Rust

sidecar for .xlsx. The original file is always the source of truth: edits

are applied as narrow patches, and everything the editor did not touch

survives the round trip untouched.

open docx ─► archive original by hash (never touched)

─► parse word/document.xml into a block tree, each block anchored to its original XML

─► Tiptap editor (manual + AI editing, dirty tracking)

save ─► dirty blocks → OOXML fragments (referencing existing styles only)

─► splice into the original document.xml; untouched blocks keep their bytes

─► repack the zip; every other entry is copied byte-for-byte

The package-by-package tour (docx/pptx engines, pdf2docx, html2docx, the

agent core and providers) lives in CONTRIBUTING.md.

npm install

npm run fixtures # generate test .docx fixtures

npm test # engine + app unit tests (docs/sheets/slides need no display)

npm run typecheck # tsc --noEmit across every workspace

npm run dev # all six editors + shell against Vite dev servers

npm run dev:docs # a single app (same pattern works per workspace)

npm run dist:mac # package macOS dmg (regenerates third-party notices)

npm run dist:win # package Windows nsis installer

npm run dist:linux # package Linux AppImage + deb + rpmThe sheets app additionally needs a Rust toolchain for its xlsx sidecar

(cargo on PATH); npm run build -w @genoffice/sheets compiles it

automatically. See CONTRIBUTING.md for the checks every

change must pass and how pull requests land.

GenOffice is in active development and your feedback shapes it.

- Report a bug or request a feature in GitHub Issues.

- Join the GenOffice group chat on GenTeam to talk to the team and other users.

- Follow @merrickbuilds on X for release notes, demos and what is being built next.

- Star the repo if GenOffice is useful to you — it is the best way to support the project.

Is GenOffice free?

Yes. GenOffice is free and open-source under the Apache-2.0 license — no trial, no paid tier for the apps themselves.

Can GenOffice open Microsoft Word, Excel and PowerPoint files?

Yes. GenOffice opens and saves native .docx, .xlsx and .pptx files.

Saving is byte-preserving: parts of the file you didn't touch are written

back byte-for-byte, so documents keep working in Microsoft Office.

Does GenOffice work offline?

Document editing is fully local — files never leave your machine to be opened, edited, saved or converted. The AI features (agents, search, image tools) need a network connection, with either a Genspark sign-in or your own model API key.

Can GenOffice edit PDF files?

Yes — real PDF text and image editing that rewrites the page content stream with the original fonts preserved, not cover-up annotations.

Can GenOffice convert PDF to Word, Excel or PowerPoint?

Yes — entirely on-device: PDFium character-level extraction plus geometry-based layout analysis, no cloud service, no upload. Scanned pages are covered too: on macOS and Windows the system OCR reads them, so they convert to editable text rather than a page image.

Can I use my own AI model or API key?

Yes. Besides the keyless Genspark sign-in, GenOffice supports bring your own key for Claude, OpenAI, Gemini, DeepSeek, Kimi, GLM, Qwen, Doubao, MiniMax, Grok, Mistral, OpenRouter, Requesty, Opper, Cheaper Inference and OpenCode Zen/Go, plus any OpenAI-compatible endpoint — including local model servers. Search, image generation and image/video analysis take their own keys under Settings → AI Media & Search.

Can GenOffice convert HTML to Word?

Yes — Export as Word in the HTML app produces a native, editable .docx

entirely on-device. The page is rendered in the built-in Chromium and reduced

to real Word structures: headings, paragraphs, lists, tables, cards, KPI rows,

form fields and page backgrounds; only visuals with no Word counterpart

(charts, icons, decorated boxes) are embedded as pictures.

Can I drive GenOffice from Claude Code, Codex, Cursor or a script?

Yes. GenOffice installs a genoffice command line that runs the same engines

headless: inspect, convert, create, read and edit documents from a terminal or

a script, with --json output for programs. The bundled agent skill teaches

Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf

to use it; install it from Settings → Integrations. See

Command line and agent skill.

Does GenOffice collect any data?

Official packaged builds send limited usage analytics by default, and you can disable reporting at any time under Settings → General. Analytics never sends document content, file names, file paths, account identity or email addresses. See GenOffice Privacy for the complete event and data disclosures.

See SECURITY.md for the process security posture (renderer sandboxing, IPC validation, external-link gating) and the threat models for AI-generated content.

GenOffice would not be possible without these open-source projects:

- Electron — the desktop runtime for every app.

- Univer (Apache-2.0) — the spreadsheet UI core that Sheets extends.

- PDFium (BSD-3-Clause, bundled via @embedpdf/pdfium) — the content-stream engine behind true PDF text and image editing.

- pdf.js (Apache-2.0) and pdf-lib (MIT) — PDF rendering and document assembly.

- Tiptap / ProseMirror — the block editors in Docs and Markdown.

- CodeMirror (MIT) — the source editor in HTML.

- Konva — canvas rendering for Slides and Sheets charts.

- HarfBuzz (wasm) — text-shaping metrics for complex scripts.

- calamine and IronCalc — the read and calc layers of the Rust xlsx sidecar.

- libeot (MPL-2.0) — the MicroType Express decoder for embedded PowerPoint fonts, ported to TypeScript.

- React (MIT) — the UI layer of every app.

- Mermaid (MIT) and KaTeX (MIT) — diagrams and math in Markdown and Docs.

- opentype.js (MIT) — font parsing for metrics and glyph lookup.

- JSZip (MIT) and fast-xml-parser (MIT) — the OOXML container and XML layers.

- Fluent UI System Icons (MIT) — the icon set across the ribbons.

- electron-updater (MIT) — in-app updates.

- Liberation, Carlito, Caladea, and Noto CJK fonts (OFL/Apache-2.0) — bundled document fonts.

npm run notices regenerates the bundled third-party license summary

(tools/gen-third-party-notices.mjs); all runtime dependencies are

MIT/Apache-2.0/BSD-3-Clause/OFL.

GenOffice is licensed under the Apache License 2.0, with one

exception: the ee/ directory is reserved for future enterprise modules and

is covered by the GenOffice Enterprise License.

The GenOffice and Genspark names and logos are trademarks of Mainfunc, Inc. The Apache-2.0 license does not grant permission to use them (see section 6); forks should use their own branding.