# opendoc: Edit Word Documents with a Rust Engine

This repository profile is provided by osrepos.com, an open source repository discovery platform.

Source: osrepos.com
Repository profile: https://osrepos.com/repo/casualoffice-opendoc
Generated for open source discovery and AI-assisted research.

OpenDoc is an Apache-2.0 local-first Word document editor built on a deterministic Rust engine. It runs natively, headless, or in the browser through WebAssembly, and reads and writes DOCX and ODT.

GitHub: https://github.com/CasualOffice/opendoc
OSRepos URL: https://osrepos.com/repo/casualoffice-opendoc

## Summary

OpenDoc is an Apache-2.0 local-first Word document editor built on a deterministic Rust engine. It runs natively, headless, or in the browser through WebAssembly, and reads and writes DOCX and ODT.

## Topics

- rust
- web-app
- local-first
- docx
- document-editor
- office-suite

## Repository Information

Last analyzed by OSRepos: Thu Oct 29 2026 11:28:27 GMT+0000 (Western European Standard Time)
Detail views: 2
GitHub clicks: 0

## Safety Notice

OSRepos shares public repositories for knowledge and discovery only. Review source code, dependencies, licenses, and security implications before running or installing anything.

## Content

## Overview

OpenDoc is a local-first editor for Word documents, built on its own deterministic Rust engine. The same engine handles import, editing, layout, and rendering natively, headless, or in the browser through WebAssembly, so the web editor can open and save documents without a document server.

It is aimed at teams that want to embed or brand a document editor, or use a Rust document engine directly. The project emphasizes loss-aware DOCX handling and exports to PDF, HTML, and Markdown as well as DOCX and ODT. It is pre-release, and rendering is not yet identical to Word.

## Key Features

- Opens and saves DOCX and ODT, opens RTF and plain text, and exports PDF, HTML, Markdown, and plain text.
- Uses a normalized document model and reports content an export cannot preserve; an unedited DOCX saves byte-for-byte.
- Provides a browser editor with editing, review, version history, comparison, print, and accessibility features.
- Offers an embeddable custom element, in-process API, and `postMessage` bridge with host-controlled roles and capabilities.
- Includes Rust crates for importing, editing, laying out, rendering, and exporting documents.
- Supports experimental real-time collaboration through an optional relay that forwards changes without holding documents.
- Applies explicit package limits when reading files and refuses macro-enabled DOCM files.

## Use Cases

- Embed a local-first document editor in a product where users should open and edit files in the browser without uploading them to a document server.
- Build document workflows in Rust that need DOCX or ODT import, layout, rendering, or export.
- Preview or convert documents headlessly, for example to render pages or generate PDFs.
- Evaluate an open alternative to commercial document editors when pre-release status and imperfect Word rendering are acceptable.

## Our Take

OpenDoc is an unusually broad document-editor and engine project, but its pre-release status and reliance on one main contributor make it a higher-adoption-risk choice today.

**Good fit if:**
- You need a local-first browser editor or Rust engine and can work with a pre-release project.
- DOCX and ODT support, embeddability, or headless rendering are central to your use case.
- You can validate rendering and round-trip behavior against your own documents.

**Look elsewhere if:**
- You require rendering identical to Word or mature, stable public SDKs and published crates.
- You need production-ready collaboration with relay TLS and authentication, or server-hosted version history.
- Your workflow depends on editing SmartArt, equations, or RTF, or on PDF features such as tags, links, bookmarks, or PDF/A.

## Project Health

| Signal | Value |
|---|---|
| Status | **New**: less than six months old and changing fast |
| Last commit | 2026-10-28 (today) |
| Commits, last 90 days | 100+ |
| Releases, last 12 months | 0 |
| Contributors | 3 (top contributor: 98% of commits) |
| Issues closed, last 90 days | 0+ |
| Pull requests merged, last 90 days | 89 (typically merged in 0 days) |
| Project age | 3 months |

Checked on 2026-10-29 with the GitHub API.

## Project Facts

- Language: Rust
- License: Apache-2.0
- Stars: 34
- Forks: 9
- Topics: document-engine, docx, embeddable, layout-engine, local-first, odt, office, ooxml
- Website: http://opendoc.casualoffice.org/
- Archived: no

## What You Need

Detected in the repository:

- Rust 1.88.0 or newer (from Cargo.toml)
- A Compose file to run it with its related services
- Automated checks on GitHub Actions

## Getting Started

The browser editor requires Rust and `wasm-pack`:

```sh
git clone https://github.com/CasualOffice/opendoc.git && cd opendoc
./webapp/build.sh
./webapp/serve.py
```

Then open `http://localhost:8099/editor.html?demo=1`. See the [README](https://github.com/CasualOffice/opendoc#readme) for Docker, engine, and embedding instructions.

## License in Plain Words

**Apache-2.0** (permissive).

- Commercial use: yes
- Modify and redistribute: yes
- You must keep: the license, the NOTICE file and a note of your changes
- Share your changes: no
- Includes an explicit patent grant from the contributors

A summary, not legal advice: the LICENSE file is what applies.

## Alternatives

- [univer](https://osrepos.com/repo/dream-num-univer): Univer is a TypeScript SDK for embedding document and other productivity experiences, while OpenDoc is a local-first Word editor with DOCX and ODT support.

| Project | Language | License | Stars | Status |
|---|---|---|---|---|
| **opendoc** | Rust | Apache-2.0 | 34 | New |
| [univer](https://osrepos.com/repo/dream-num-univer) | TypeScript | Apache-2.0 | 22.6k | Active |

## Considerations

- The project is new and changing quickly. It has recent development activity and merged pull requests, but no releases in the past year; the available contributor data is concentrated heavily in one person. No issues were closed in the measured recent period.
- The editor and engine are pre-release. The public SDK surfaces are not stable, and the internal crates are not published.
- The browser build requires Rust 1.88 or later and `wasm-pack`; the README also documents a Docker Compose option.
- Rendering fidelity is still improving. SmartArt is shown as a placeholder, some chart types are placeholders, and equations cannot be edited or inserted. RTF opens but cannot be saved.
- PDF export lacks tags, links, bookmarks, and PDF/A support. Collaboration is experimental, and browser version history is not stored on a server.
- The project is licensed under Apache-2.0. Review its license and bundled third-party asset notices when distributing it.