The future of book creation tooling
write is a free and open-source framework for writing professional-quality books, providing you with:
- 🔄 Version control: remembers every change, even the crazy ideas that didn't make it. Roll back to any previous state
- ☁️ Cloud backup: a lost or broken computer never costs you your book
- 🚀 Mission control: assign admin tasks to AI agents and decide which changes make the cut
- ⚡ Automatic preview: a fresh PDF is built and emailed to you whenever you save your work
Copy the prompt below and paste it into your favourite AI assistant:
I want to start writing a book using a tool called "write"
(https://github.com/demccormack/write). I am not technical, so please
explain everything in plain language and guide me one small step at a time.
I am willing to learn the basics of the terminal and the tools used by this
framework, so please introduce these to me gradually.
First, read the project's README at
https://github.com/demccormack/write/blob/main/docs/README.md
so you know what the tool does.
Then:
1. Ask what kind of computer I use (Windows, Mac, Linux).
2. Establish which OS package manager to install the dependencies with
(WinGet, Homebrew, apt etc). Guide me through setting it up.
3. Help me install the dependencies using the package manager.
4. Help me install "write" and create my book project with the `write-cli`
command.
5. If I do not have a GitHub account, help me create one. Before the first
commit, help me enable GitHub email privacy and use my GitHub noreply email
with `write-cli`.
6. Help me set up cloud backup for my book on Github using the `write-cli` command.
7. Show me where to write my words, how to save my progress, and how to
get my PDF.
Wait for me to confirm each step is done before moving to the next one. If
something goes wrong, help me fix it.
npm install -g @demccormack/writewrite-cli new "My Amazing Book"This creates a local directory with the following structure:
my-amazing-book
├── .github
│ ├── copilot-instructions.md
│ └── workflows
│ ├── build.yml
│ └── lint.yml
├── .gitignore
├── .vscode
│ ├── extensions.json
│ └── settings.json
├── README.md
├── assets
│ ├── figures
│ └── images
├── book.toml
├── chapters
│ └── chapter01.typ
├── main.typ
└── templates
9 directories, 10 files
- Edit in your preferred Typst editor (VS Code with Tinymist, the Typst web app, etc.)
- Save your progress - each commit is a snapshot of your book you can always return to
- Back up and share on GitHub - see below
- Get your PDF - GitHub builds it for you; just click the link in your email or download it from the Actions tab
GitHub is a free website that acts as your book's headquarters:
- Backup - your manuscript and its entire history are stored safely online, so a lost or broken laptop never costs you your book.
- Mission control - see every change you've made and when, review suggestions from editors or friends, and check that your book still builds correctly.
- Publishing HQ - every time you push your work, GitHub builds a fresh PDF you can download and share.
Before the first commit, write-cli new asks for your book author or pen name and a Git email. Use the private noreply address shown in your GitHub email settings; it is stored only in this project's local Git config and is not added to book files. If you do not have a GitHub account yet, you can run write-cli setup from the project directory to finish the setup later.
In GitHub's email settings, enable Keep my email addresses private and Block command line pushes that expose my email address. Then install the GitHub CLI and, from inside your book's folder, run:
gh auth login
write-cli remote add github # or: write-cli remote add ghThe command creates a private home for your book (you choose the name and whether it's public), uploads everything, and turns on sensible protections, such as checking that your book builds before changes are accepted. It's safe to run again if anything goes wrong part-way. Advanced options: --name, --owner, --public/--private, --description, -y (accept defaults).
⚠️ Note: This tool is in early development. The following features are planned:
- Project scaffolding with conventional directory structure
- GitHub repository creation and setup
- Typst template library (academic, fiction, technical)
- GitHub Actions CI/CD pipeline configuration
- Automated PDF builds on commit/PR
- Multiple output formats (PDF, EPUB, HTML)
- Book configuration management (
book.toml) - Chapter management commands
- Asset organization helpers
- Author monetization support:
- Patreon integration for subscriber-only content
- Automated chapter releases for supporters
- Supporter acknowledgments in generated books
This tool does not provide a writing interface. Instead, it:
- Creates the foundation for professional book publishing
- Automates the boring infrastructure setup
- Lets you focus on writing, not tooling
- Uses industry-standard tools (Git, GitHub, Typst) and hides the jargon
- Makes backups an integral part of your writing process
- Enables collaborative workflows via pull requests
- Node.js
- Git (to keep a history of your changes;
write-clisets it up for you) - GitHub account (free; your book's online backup and publishing HQ)
- Typst editor (VS Code with Tinymist, the Typst web app, or another editor of your choice)
# Project setup
write-cli new "Book Title" --template academic
# Project management
write-cli chapter "Chapter Name" # Add new chapter file
write-cli build # Local PDF build (if Typst installed)
write-cli status # Git status + build infoThis is an open-source project in active development. Check out our Contributing Guide to help build the future of book publishing tooling.
If you find this tool useful, consider supporting its development:
- ⭐ Star this repository to help others discover it
- 🐛 Report bugs and suggest features via GitHub Issues
- 💖 Sponsor development via GitHub Sponsors
- ☕ Support on Patreon for ongoing development updates and early access
Your support helps:
- Maintain and improve the tool
- Add new features and templates
- Provide community support
- Keep the project free and open-source
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-or-later).
The AGPL license requires anyone who modifies this software and provides it as a service (like a hosted SaaS application) to make their full source code available. This protects the project from being used in proprietary applications without contributing back to the open source community.
As the original author and copyright holder, I retain the right to use this code in my own commercial applications.
For more details and FAQ about licensing, see Licensing Information.
© Daniel Edward McCormack