8000 GitHub - habitual69/genoffice: Free, open-source AI office suite for macOS, Windows & Linux — Word (.docx), Excel (.xlsx), PowerPoint (.pptx), PDF and Markdown editing with built-in AI agents. · GitHub
[go: up one dir, main page]

Skip to content

About

Free, open-source AI office suite for macOS, Windows & Linux — Word (.docx), Excel (.xlsx), PowerPoint (.pptx), PDF and Markdown editing with built-in AI agents.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

36 Commits

Folders and files

Repository files navigation

GenOffice

An AI-native office suite for macOS, Windows, and Linux: word processor, spreadsheet, presentations, PDF, and Markdown — six Electron apps sharing one engine layer, built around AI editing as a first-class workflow rather than a bolted-on chat box.

Meet GenOffice — the world's first full-featured open-source AI Office (video)

Watch the demo video on YouTube

Features

  • Real PDF editing — retype text and edit images in the page itself, original fonts preserved.
  • Byte-preserving .docx editing — only what you touched changes; Word never notices.
  • Word-faithful pagination — page breaks land where Word puts them.
  • In-house spreadsheet engine — Rust .xlsx sidecar, own charts, pivot tables, slicers.
  • In-house .pptx engine — 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).

Download

Platform Requirements Download
macOS (Apple Silicon) macOS 11+ GenOffice-0.6.13-arm64.dmg
Windows (x64) Windows 10+ GenOfficeSetup-v0.6.13.exe
Linux — Debian / Ubuntu x86_64, glibc 2.34+ (Ubuntu 22.04 or newer) genoffice_0.6.13_amd64.deb
Linux — other distributions x86_64, glibc 2.34+, FUSE 2 GenOffice-0.6.13.AppImage

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_0.6.13_amd64.deb

The AppImage instead 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-0.6.13.AppImage
./GenOffice-0.6.13.AppImage

If the app-menu icon shows a generic placeholder instead of the GenOffice icon after an npm run dist:linux build, reinstall rather than upgrade in place (sudo apt remove genoffice && sudo apt install ./genoffice_*.deb) so postinst re-runs update-desktop-database, then log out/in if it's still stale — most desktop environments cache resolved icons per install. ./GenOffice-0.6.13.AppImage


## Apps

| 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 [Univer](https://github.com/dream-num/univer) core (Apache-2.0) with a large layer of in-house extensions; `.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 [pdf.js](https://github.com/mozilla/pdf.js) (Apache-2.0) + [pdf-lib](https://github.com/Hopding/pdf-lib) (MIT): annotations, forms, outlines, stamps, signatures, page operations, and printing support. True text editing — paragraph selection with in-block reflow, alignment restoration, original-font preservation — and content-stream image insert/edit, all rewriting page content streams through [PDFium](https://pdfium.googlesource.com/pdfium/) wasm (BSD-3-Clause) with subset-embedded fonts — no cover-up annotations. |
| `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 (Genspark).** The apps sign in to a Genspark account through a
device-code flow; no model API key is entered or stored by the user. Model
calls route through the Genspark proxy (Claude, GPT, and Gemini families).
The same account also unlocks the Genspark ("gsk") tool endpoints the agents
build on — web and image search, image generation and editing,
image/audio/video analysis, and audio transcription — all reachable through
`packages/ai-search` for anyone extending the agent layer.

## Engine packages

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` — 
8E8F
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.

## Development

```bash
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

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

Architecture notes (docx round trip)

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.

Security

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

Acknowledgements

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.
  • 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.
  • Liberation, Carlito, Caladea, and Noto CJK fonts (OFL/Apache-2.0) — bundled document fonts.

Third-party notices

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.

License

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.

About

Free, open-source AI office suite for macOS, Windows & Linux — Word (.docx), Excel (.xlsx), PowerPoint (.pptx), PDF and Markdown editing with built-in AI agents.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0