subScribe
A writing suite you own. No account, no ads, and nothing sitting on a third-party cloud.
Every App Wants an Account
I write, and so do the people I write with. A writing group ends up using one app for drafts, another for sharing, a third for feedback, and a chat service full of ads for the sessions themselves. Every one of them wants an account, and most of them want your data.
A Suite You Own
subScribe is a writing suite you own. Everything that needs no one else works with no server and no account: documents, books, PDFs, boards, and notes live on the device, with folders, search, history, and a trash.
- Documents. A Word-style editor with styles, tables, footnotes, a table of contents, headers, and page setup, plus formats for manuscripts, screenplays, stage plays, and poetry. Suggesting mode tracks changes, and every document keeps its version history.
- Word and PDF, in and out. Word files open and save with their styles, notes, and tracked changes. PDF export is typeset by the app’s own layout engine, and a PDF can be imported back into a document.
- Books. A manuscript becomes a typeset paperback interior, an EPUB, and a submission manuscript. The cover editor lays out the front, spine, and back to the printer’s measurements.
- PDF editor. Reorder, mark up, fill, sign, and edit a PDF as the PDF it is.
- Check. An editing pass that finds inconsistencies, holds the text to a house style, and reports on repeats, sentence length, dialogue, and pace. Nothing leaves the device.
- Canvas and notes. Shared storyboards, and an Obsidian-compatible Markdown vault with wiki-links and backlinks.
With a server one of you hosts, a group can write together live, run timed writing sessions where everyone’s work is revealed when the prompt ends, and talk in channels, DMs, and peer-to-peer voice and video.
How It Works
The client is React and TypeScript, in one codebase for the Tauri 2 apps and the browser build. The apps’ core and the server are Rust. The server is a single binary on SQLite that also serves the browser client, and the desktop app can host one itself with a single click. The PDF engine is a separate Rust workspace compiled to WebAssembly.
Clients pin a self-hosted server on first connect. Connections use TLS 1.3 with hybrid X25519 and ML-KEM-768 key exchange, and the server carries an ML-DSA-65 identity key whose signature binds its TLS certificate—so a changed identity is a loud warning, not a quiet one. Voice and video run peer to peer over WebRTC, so media never touches the server.
Every feature is an app on an internal platform layer, with a dock, UI slots, and a command palette. Third-party plugins use the exact same extension points, with permissions granted per plugin.
Third-party plugins use the exact same extension points as the built-in features.
Status
subScribe is open source, under the MIT license. Windows and Linux installers are on GitHub Releases. On a Mac it builds locally from a script that checks for and installs what it needs.