{"name":"opendoc: Edit Word Documents with a Rust Engine","description":"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","url":"https://osrepos.com/repo/casualoffice-opendoc","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/casualoffice-opendoc","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/casualoffice-opendoc.md","json":"https://osrepos.com/repo/casualoffice-opendoc.json","topics":["rust","web-app","local-first","docx","document-editor","office-suite"],"keywords":["rust","web-app","local-first","docx","document-editor","office-suite"],"stars":null,"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.","content":"## Overview\n\nOpenDoc 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.\n\nIt 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.\n\n## Key Features\n\n- Opens and saves DOCX and ODT, opens RTF and plain text, and exports PDF, HTML, Markdown, and plain text.\n- Uses a normalized document model and reports content an export cannot preserve; an unedited DOCX saves byte-for-byte.\n- Provides a browser editor with editing, review, version history, comparison, print, and accessibility features.\n- Offers an embeddable custom element, in-process API, and `postMessage` bridge with host-controlled roles and capabilities.\n- Includes Rust crates for importing, editing, laying out, rendering, and exporting documents.\n- Supports experimental real-time collaboration through an optional relay that forwards changes without holding documents.\n- Applies explicit package limits when reading files and refuses macro-enabled DOCM files.\n\n## Use Cases\n\n- 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.\n- Build document workflows in Rust that need DOCX or ODT import, layout, rendering, or export.\n- Preview or convert documents headlessly, for example to render pages or generate PDFs.\n- Evaluate an open alternative to commercial document editors when pre-release status and imperfect Word rendering are acceptable.\n\n## Our Take\n\nOpenDoc 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.\n\n**Good fit if:**\n- You need a local-first browser editor or Rust engine and can work with a pre-release project.\n- DOCX and ODT support, embeddability, or headless rendering are central to your use case.\n- You can validate rendering and round-trip behavior against your own documents.\n\n**Look elsewhere if:**\n- You require rendering identical to Word or mature, stable public SDKs and published crates.\n- You need production-ready collaboration with relay TLS and authentication, or server-hosted version history.\n- Your workflow depends on editing SmartArt, equations, or RTF, or on PDF features such as tags, links, bookmarks, or PDF/A.\n\n## Project Health\n\n| Signal | Value |\n|---|---|\n| Status | **New**: less than six months old and changing fast |\n| Last commit | 2026-10-28 (today) |\n| Commits, last 90 days | 100+ |\n| Releases, last 12 months | 0 |\n| Contributors | 3 (top contributor: 98% of commits) |\n| Issues closed, last 90 days | 0+ |\n| Pull requests merged, last 90 days | 89 (typically merged in 0 days) |\n| Project age | 3 months |\n\nChecked on 2026-10-29 with the GitHub API.\n\n## Project Facts\n\n- Language: Rust\n- License: Apache-2.0\n- Stars: 34\n- Forks: 9\n- Topics: document-engine, docx, embeddable, layout-engine, local-first, odt, office, ooxml\n- Website: http://opendoc.casualoffice.org/\n- Archived: no\n\n## What You Need\n\nDetected in the repository:\n\n- Rust 1.88.0 or newer (from Cargo.toml)\n- A Compose file to run it with its related services\n- Automated checks on GitHub Actions\n\n## Getting Started\n\nThe browser editor requires Rust and `wasm-pack`:\n\n```sh\ngit clone https://github.com/CasualOffice/opendoc.git && cd opendoc\n./webapp/build.sh\n./webapp/serve.py\n```\n\nThen open `http://localhost:8099/editor.html?demo=1`. See the [README](https://github.com/CasualOffice/opendoc#readme) for Docker, engine, and embedding instructions.\n\n## License in Plain Words\n\n**Apache-2.0** (permissive).\n\n- Commercial use: yes\n- Modify and redistribute: yes\n- You must keep: the license, the NOTICE file and a note of your changes\n- Share your changes: no\n- Includes an explicit patent grant from the contributors\n\nA summary, not legal advice: the LICENSE file is what applies.\n\n## Alternatives\n\n- [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.\n\n| Project | Language | License | Stars | Status |\n|---|---|---|---|---|\n| **opendoc** | Rust | Apache-2.0 | 34 | New |\n| [univer](https://osrepos.com/repo/dream-num-univer) | TypeScript | Apache-2.0 | 22.6k | Active |\n\n## Considerations\n\n- 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.\n- The editor and engine are pre-release. The public SDK surfaces are not stable, and the internal crates are not published.\n- The browser build requires Rust 1.88 or later and `wasm-pack`; the README also documents a Docker Compose option.\n- 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.\n- PDF export lacks tags, links, bookmarks, and PDF/A support. Collaboration is experimental, and browser version history is not stored on a server.\n- The project is licensed under Apache-2.0. Review its license and bundled third-party asset notices when distributing it.","metrics":{"detailViews":2,"githubClicks":0},"dates":{"published":null,"modified":"2026-10-29T11:28:27.000Z"}}