|
Some checks are pending
Create Release / Check if Version Bump PR Merged (push) Waiting to run
Create Release / Create Git Tag and GitHub Release (push) Blocked by required conditions
Post-Merge Version Bump / Check if Version Bump Needed (push) Waiting to run
Post-Merge Version Bump / Create Version Bump PR (push) Blocked by required conditions
The novel-writing agent pack existed only as three byte-identical copies inside
Obsidian vaults (Die-Kessler-Zwillinge, Scruffy-der-Weltenhund, OpenNovelWriter),
with no version control anywhere. It is now versioned here as the single source
of truth.
Contents (novel/):
- .opencode/agent/ OpenNovelAgent (primary) + LineEditor, Proofreader,
StyleAnalyst, ContinuityEditor, StoryReviewer, Translator, Importer,
Illustrator, CopyrightWatchdog
- .opencode/command/ import.md, init.md
- .opencode/languages.yaml, .opencode/opencode.json (pristine: default_agent)
- docs/SCHEMA.md canonical schema — the newer OpenNovelWriter revision, which
supersedes the stale copy in the Scruffy vault (adds workspace = book,
images/prompts + images/generated, parallel books, rewrites section 7)
- templates/ AGENTS.md placeholder + DATA/{wiki,timeline,glossary}.yaml.md, style.md
- sync-to-vault.sh dry-run by default; --apply backs up what it replaces and
never touches DATA/, AGENTS.md, chapters or a vault's own opencode.json
- PACK-NOTES.md per-file md5 provenance and the verified cross-vault comparison
Verified before committing: all 10 agents, both commands, languages.yaml and
start.sh are md5-identical across the three vaults.
|
||
|---|---|---|
| .. | ||
| .opencode | ||
| docs | ||
| templates | ||
| LICENSE | ||
| PACK-NOTES.md | ||
| README.md | ||
| start.sh | ||
| sync-to-vault.sh | ||
OpenNovelWriter
Your AI co-author for novels — not your developer.
You tell the story. OpenNovelWriter writes the chapters in your voice.
✍️ Co-author, not a generator — chapters are built around your direction 🧠 World memory — world wiki, timeline, and glossary as YAML 🎭 Your voice — learns your writing style from sample chapters 🌍 Multilingual — write in one language, publish in many 📝 Obsidian-native — everything is Markdown, editable in your editor
What is OpenNovelWriter?
A co-author agent for OpenCode that writes around the author rather than for them. You say "next chapter: Elena finds the letter" — OpenNovelWriter loads your world wiki, your writing style, and the story so far, and writes the chapter in your voice.
Unlike a code agent, OpenNovelWriter doesn't generate files from specs — it generates prose from a living world.
Quick Start
# 1. Create and name a vault/workspace for your book (in Obsidian), then open
# that folder in opencode.
# 2. Initialize it (interactive wizard) — runs INSIDE the folder
opencode --agent OpenNovelAgent
> /init
# 3. Build the world, or start writing
> "Let's build the world wiki with the main characters"
> "Write Chapter 001: [what should happen]"
# 4. Translate
> "Translate chapters 1-5 into English"
The Core Concept: workspace = book
One book = one workspace = one folder. You create and name a vault for each
book (e.g. "Die Kessler Zwillinge", "Scruffy"), open it in opencode, and run
/init there. The folder's name is the project name.
Writing several books in parallel? Create one workspace per book and switch
between them. The agent is the same in every workspace — what makes each one
that book is its own AGENTS.md + DATA/ (world wiki, timeline, glossary, style).
The Core Loop
Author: "next chapter — this should happen"
↓
Agent loads: AGENTS.md + world wiki + timeline + writing style
↓
Agent proposes a chapter draft → author approves
↓
Agent writes the chapter → author edits in Obsidian
↓
Agent harvests new facts → updates wiki & timeline
Project Structure
My Series/
├── 01/ # book 1
│ ├── DE/ # Kapitel 001.md, Kapitel 002.md, …
│ └── EN/ # Chapter 001.md, …
├── DATA/ # world wiki, timeline, glossary, writing style
├── AGENTS.md # project rules
└── README.md
See docs/SCHEMA.md for the complete conventions.
What's Included
OpenNovelAgent— the primary co-author/init— interactive project wizard (language first, then everything in that language)DATA/schemas — world wiki, timeline, glossary (YAML in Markdown)languages.yaml— extensible language registry
For the Community
OpenNovelWriter is designed to be multilingual. The /init wizard's first
question is the writing language; all further questions and content follow that
language. New languages are added as a single entry in .opencode/languages.yaml.
Attribution
OpenNovelWriter builds on the exceptional work of Darren Hinde and the OpenAgentsControl project. Without that foundation — the agent concept, the context system, and the plan-and-approve workflow — this project would not exist. Thank you, Darren.
License
MIT — Copyright (c) 2025 Darren Hinde (OpenAgentsControl) and Copyright (c) 2026 OpenNovelWriter Contributors. Darren Hinde's original work remains under the MIT license.