# GenOffice fork that works with any local LLM instead of a cloud account

> Source: <https://github.com/douglas168/open-genoffice>
> Published: 2026-08-18 09:03:41+00:00

**A free, open-source AI Office suite — this fork drops the cloud-account
requirement and talks to any OpenAI-compatible endpoint instead: a local
server (Ollama, LM Studio, vLLM, llama.cpp server, text-generation-webui) or
a hosted API (OpenRouter, or any other OpenAI-compatible provider).**

Forked from

[genspark-ai/genoffice](Apache-2.0). Changed per Apache-2.0 §4(b): the AI provider defaults (`packages/ai-provider/src/providers.ts`

) and settings UI (`apps/shell/src/renderer/src/SettingsModal.tsx`

) — see git history for the full diff. Everything else is upstream GenOffice, unmodified.

[Demo](https://www.youtube.com/watch?v=B2pLdMX95v4) — upstream's video; the
editor features it shows are unchanged in this fork, only the AI provider
setup differs.

GenOffice is a free, open-source alternative to Microsoft Office for macOS,
Windows, and Linux, built around AI editing as a first-class workflow rather
than a bolted-on chat box. It opens and saves the real Microsoft Office
formats — Word (`.docx`

), Excel (`.xlsx`

), PowerPoint (`.pptx`

) — and edits
PDF and Markdown too: a word processor, spreadsheet, presentation editor,
PDF editor, and Markdown editor as six Electron apps sharing one engine
layer.

[Watch the demo video on YouTube](https://www.youtube.com/watch?v=B2pLdMX95v4)

**Real PDF editing**— retype text and edit images in the page itself, original fonts preserved.** Microsoft Word–compatible, byte-preserving**— only what you touched changes; Word never notices.`.docx`

editing**Word-faithful pagination**— page breaks land where Word puts them.** Excel-compatible spreadsheets**— in-house engine with a Rust`.xlsx`

sidecar, own charts, pivot tables, slicers.**PowerPoint-compatible presentations**— in-house`.pptx`

engine with masters, layouts, smart guides, non-destructive crop.**Markdown to Word, fully local**— the same OOXML engine, no Pandoc, no cloud.** AI that edits documents**— block-level edits with snapshots and diffs, document-aware agents.** Agent tools built in**— web/image search, image generation, media analysis.** Light / dark / system themes.****macOS, Windows, Linux.****Free & open-source (Apache-2.0).**

This fork does not publish prebuilt installers — build from source (see
[Development](#development) below: `npm install`

, then `npm run dist:mac`

/
`dist:win`

/ `dist:linux`

). Upstream's own prebuilt installers, linked from
[genspark-ai/genoffice](https://github.com/genspark-ai/genoffice), default to
the Genspark cloud provider — they are not this fork.

| App | Product | What it is |
|---|---|---|
`apps/docs` |
GenOffice Docs |
`.docx` word processor. Byte-preserving round trip: only dirty paragraphs are regenerated (paragraph patch), everything else in the original file is kept byte-for-byte, so opening and saving never breaks layout in Word. Paginated view whose line metrics reproduce the original document's layout, tracked changes, comments, styles, equations, ink. |
`apps/sheets` |
GenOffice Sheets |
`.xlsx` spreadsheet. UI built on the open-source
`.xlsx` import/export runs through an in-house Rust sidecar (calamine + IronCalc), charts are rendered in-house (Konva), plus pivot tables, slicers, conditional formatting, and formula tracing. |
`apps/slides` |
GenOffice Slides |
`.pptx` presentations. In-house `.pptx` parse/render/edit engine with masters, charts, cropping, ink, and text shaping (HarfBuzz metrics). |
`apps/pdf` |
GenOffice PDF |
`.pdf` viewer/editor on
|
`apps/markdown` |
GenOffice Markdown |
`.md` / `.markdown` editor: Tiptap block editor over plain Markdown files — headings, lists, tables, images, code blocks — saved back as plain Markdown, hosted in shell tabs. |
`apps/shell` |
GenOffice |
The suite shell: home screen, tabbed hosting of the five editors, light/dark/system theme, auto-update. |

Every app embeds the same AI panel: block-granular AI editing with version snapshots and diffs in docs, a tool-calling agent over workbook/slide/PDF state in the others.

The whole suite ships light / dark / system UI themes built on shared design
tokens (`packages/ui`

), with a CI guard that keeps chrome colors on the token
system. Document surfaces stay light in dark mode — Word-style dark chrome
around white paper — so files render and export identically in both themes.

**AI backend.** On a fresh install this fork defaults to the **Local /
Custom (OpenAI-compatible)** provider with the base URL, model, and key all
blank — nothing is pre-configured, no account or cloud sign-in required.
Point it at any server that speaks the OpenAI `chat/completions`

wire
protocol:

| Server | Base URL | Model | API key |
|---|---|---|---|
|

`http://localhost:11434/v1`

`llama3.1`

[LM Studio](https://lmstudio.ai/)`http://localhost:1234/v1`

[OpenRouter](https://openrouter.ai/)`https://openrouter.ai/api/v1`

`openai/gpt-4o-mini`

Settings → AI Provider → Local / Custom (OpenAI-compatible), fill in the three fields, then Test connection.

Upstream's other providers are still selectable in the same screen and work
as upstream describes: **Genspark** signs in via a device-code flow (no key
needed) and also unlocks the Genspark ("gsk") tool endpoints the agents
build on — web/image search, image generation and editing, media analysis,
audio transcription (`packages/ai-search`

); **Claude / Gemini / DeepSeek /
OpenAI** need that vendor's own API key.

All pure TypeScript, no Electron dependency, unit-tested (except the UI kit):

`packages/docx-engine`

— docx parsing → block tree (with`docxIndex`

anchors and passthrough), OOXML fragment generation, byte-level paragraph patching.`packages/pptx-engine`

/`packages/pptx-render`

— pptx model and rendering.`packages/file-parse`

— text extraction for AI attachments (office formats, text formats).`packages/agent-core`

— the AI agent loop and skill composition shared by every app.`packages/ai-provider`

— provider abstraction and streaming for the model backends.`packages/ai-search`

— Genspark auth + web/image search tools.`packages/i18n`

,`packages/ui`

,`packages/project-store`

,`packages/electron-utils`

— shared i18n core, React UI kit, recent-files store, and Electron main-process helpers.

```
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 five 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 + rpm
```

The sheets app additionally needs a Rust toolchain for its xlsx sidecar
(`cargo`

on PATH); `npm run build -w @genoffice/sheets`

compiles it
automatically.

Local UI/e2e driver scripts (Playwright + Electron, for local acceptance, not
committed by default) live in [ scripts/drivers/](/douglas168/open-genoffice/blob/main/scripts/drivers/README.md).

```
open docx ─► archive original by hash (never touched)
          ─► docx-engine parses word/document.xml top-level elements (w:p / w:tbl / …)
          ─► Block tree, each block anchored by docxIndex + original XML slice
          ─► Tiptap streaming editor (manual + AI editing, dirty tracking)
save      ─► dirty blocks → OOXML fragments (referencing existing styles only)
          ─► splice into original document.xml (untouched blocks keep original bytes)
          ─► repack zip; all other entries copied byte-for-byte
```

The same philosophy holds in sheets and slides: the original file is the source of truth, edits are applied as narrow patches, and everything the editor didn't touch survives the round trip untouched.

**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, or saved. The AI features need a network connection to
whatever endpoint you configure in Settings → AI Provider — a LAN-only local
server (e.g. Ollama) keeps that traffic off the public internet too; a
cloud provider (Genspark, OpenRouter, a named vendor) does not.

**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.

See [SECURITY.md](/douglas168/open-genoffice/blob/main/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](https://www.electronjs.org/)— the desktop runtime for every app.[Univer](https://github.com/dream-num/univer)(Apache-2.0) — the spreadsheet UI core that Sheets extends.[PDFium](https://pdfium.googlesource.com/pdfium/)(BSD-3-Clause, bundled via[@embedpdf/pdfium](https://github.com/embedpdf/embed-pdf-viewer)) — the content-stream engine behind true PDF text and image editing.[pdf.js](https://github.com/mozilla/pdf.js)(Apache-2.0) and[pdf-lib](https://github.com/Hopding/pdf-lib)(MIT) — PDF rendering and document assembly.[Tiptap](https://tiptap.dev/)/[ProseMirror](https://prosemirror.net/)— the block editors in Docs and Markdown.[Konva](https://konvajs.org/)— canvas rendering for Slides and Sheets charts.[HarfBuzz](https://github.com/harfbuzz/harfbuzz)(wasm) — text-shaping metrics for complex scripts.[calamine](https://github.com/tafia/calamine)and[IronCalc](https://github.com/ironcalc/IronCalc)— the read and calc layers of the Rust xlsx sidecar.- 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, and the bundled fonts (Liberation, Carlito,
Caladea, Noto CJK subsets) are OFL/Apache.

GenOffice is licensed under the [Apache License 2.0](/douglas168/open-genoffice/blob/main/LICENSE), with one
exception: the `ee/`

directory is reserved for future enterprise modules and
is covered by the [GenOffice Enterprise License](/douglas168/open-genoffice/blob/main/ee/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.
