The Asten desk is a manuscript editor for long-form writing. It has a binder of chapters, scenes, notes, and sources; a rich-text page; comments; find; word counts; a letter-sized page view; track-change marks; and named snapshots. Diagnostics sit in the margin and never rewrite your text.
Canon checks in Asten compare your manuscript against facts you have settled. A fact is an entity, a predicate, and a value, with a status, a modality, an optional span of story time, and a source. When two confirmed facts disagree, or the page says something different from what you settled, Asten marks it in red with code CANON-E013 and shows both sides. Asten reads plain attributes from your prose with fixed rules, not a model, and keeps dialogue, belief, dreams, visions, and frame stories in contexts of their own.
The Asten cast lists the entities in your story (characters, places, events, items, rules, sources, and others) with their aliases, notes, and confirmed facts. It is optional and grows as you write; nothing in it is required before you draft a scene.
Asten tracks story time (when an event happens in the world) and reading order (when the reader meets it) as two separate clocks. A flashback is not a mistake: Asten argues only inside a run of scenes you declared continuous (CANON-E201), when the dates you gave cannot all be true (CANON-E202), or when an effect is seen before its cause (CANON-E203). Story time can be a day count, a Gregorian date, or a calendar you define.
Asten’s world tools are an optional wall (loose cards for scraps), an atlas (a rough map for pinning places), and a dossier (entries grouped by kind). Entries can be places, cultures, systems, creatures, items, questions, or fragments, and move from spark to sketched to settled. Settling an entry can mint a confirmed fact.
Asten’s compiler is a deterministic rule engine written in Rust. It reads your settled facts, your timeline, and the page itself, and emits diagnostics with stable codes (CANON-E013 to E601, NAME-W001 to W004, PLOT-I001, and optional CRAFT hints) at four severities: error, warning, information, and hint. Each mark explains itself in a numbered chain and offers repairs. It runs entirely on your machine and never changes your text.
Method packs are optional groups of rules in Asten. Eight ship today: Scribe (the core canon check and name hygiene, always on), Lifecycle, Clocks, Relations, Knowledge, Atlas, Invariants (your own world rules), and Diction watch (optional filter-word hints, off by default). Packs add marks; they never change your manuscript.
Asten compiles a manuscript to Markdown, plain text, Fountain, HTML, .docx, EPUB 3, or Final Draft (.fdx), and imports every one of those except EPUB. PDF comes from printing the HTML. Optional Word and Google Docs add-ins pair once with a six-digit code shown in the desk, then list your local projects, show the Scales, and can file a selected passage into Asten; they talk only to the Asten API on 127.0.0.1:4317 and hold a token you can revoke.
Asten is local-first: every project lives in a SQLite database file on your computer (asten.db, in the operating system’s app-data folder). There is no account, no sync service, and no telemetry, and Verne never receives your manuscript. You can export to Markdown, plain text, Fountain, HTML, .docx, EPUB, or Final Draft (.fdx) at any time.