Composez
A terminal-based, git-integrated AI writing tool for long-form fiction. Composez adds structured narrative editing so you can write, revise, and manage novels from the command line as you write with your favourite editor.
If you're looking for a more ready-to-use, one-click solution, check out the web editing tool at https://composez.ai.
Features
- Structured Manuscripts -- Organize your work into Acts, Chapters, and Scenes (with configurable level names). Summaries flow between scenes so the AI always has the right context.
- Reference Database -- Character sheets, locations, world-building notes, and a style guide live in
db/and are loaded as read-only context automatically. - Write / Summarize / Feedback Loop -- Generate prose from scene summaries with
/write, get critique with/feedback, revise interactively, then/summarizeto keep context current. - Three Autonomy Levels -- Direct (single-turn), Compose (plan then edit), and Agent (multi-step YAML plans) work with any edit mode.
- Prose Linting -- Integrated Vale-based checks for passive voice, cliches, and AI-tells via
/lint. - Import & Export -- Import from Novelcrafter or Markdown; export to Markdown, DOCX, or EPUB.
- Full Git Integration -- Every edit is version-controlled with auto-commits and diff review.
- Multi-Model Support -- Works with Claude, GPT-4, Gemini, local models, or any provider Aider supports.
Full documentation is available at docs.composez.ai.
Getting Started
Prerequisites
- Python 3.9+
- Git
- An API key for your preferred LLM provider (Claude, OpenAI, etc.)
Install
git clone https://github.com/kmewhort/aider.git composez
cd composez
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e .
Configure Your API Key
export ANTHROPIC_API_KEY=sk-ant-... # For Claude (recommended)
# or
export OPENAI_API_KEY=sk-... # For OpenAI
You can also place these in a .env file in your project directory.
Create a Project and Start Writing
mkdir my-novel && cd my-novel
git init
composez
Import
To import an existing manuscript from markdown or novelcrafter, first create your project, put your export in your project root, and then:
- Markdown:
/import markdown my_markdown.md - Novelcrafter:
/import novelcrafter novelcrafter_export.zip
Writing
Inside the Composez shell, build your structure and write:
> /new act The Awakening
> /new 1 chapter Morning Light
> /new 1 1 scene The Alarm
> /add 1 1 1
> Elena wakes to the lighthouse alarm at 3 AM. Something large on the radar.
> /write 1 1 1
> /feedback 1 1 1
> /summarize 1 1 1
Optional Dependencies
pip install vale # Prose linting via /lint
pip install python-docx # DOCX export
pip install ebooklib # EPUB export
Documentation
See docs.composez.ai for the full guide, including:
Architecture
Composez is built as a plugin on top of Aider. This repo contains novel-specific coders, prompts, etc. More generic changes to the the origin Aider tool can be found in the composez-aider-fork.
License
AGPL-3.0 license. See LICENSE for furthe details.
Metadata
Release files for composez 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| composez-0.1.1.tar.gz | 104.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| composez-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 216.6 kB
Release files / composez-0.1.1.tar.gz
| Download URL | composez-0.1.1.tar.gz |
|---|---|
| Size | 104.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2b0b4e16784ac1818347fd55f6254ea47d3c1d59effbad312ccaa19babc6a9b3
|
|
BLAKE2b-256 checksum How to use checksums |
4796e82c5c2468d36cdc45ed255c930ff3999ded161b26333f4d5c987f918f61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.4
|
Release files / composez-0.1.1-py3-none-any.whl
| Download URL | composez-0.1.1-py3-none-any.whl |
|---|---|
| Size | 111.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
075415acaafaea6e06cc6923c05f32a96022666743081e11a41f9993f522d09d
|
|
BLAKE2b-256 checksum How to use checksums |
2ceee6be46afc152cff28095d560837dc9bccec30f23d4cc6b6340baab78ad50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.4
|