Lixity
Read the patterns in your writing. Keep the evidence behind your decisions.
Lixity helps authors, editors and researchers see how a manuscript changes from chapter to chapter. It measures sentence lengths, word use, dialogue and tense, then lets you read the passages behind each result. Its research workspace keeps source quotations and writing decisions connected. Your literary judgment guides what you keep or revise.
Matthias Fahsold developed Lixity as an architect and developer at ROST Services GmbH and used it while writing his own debut novel.
Try the example · Three-minute first look · Install · What you can do · Practical guides · v0.4.6 release notes
The example is a read-only report made from invented text. It needs no installation or manuscript upload. Documentation is English; you can read the results in German, English, French, Spanish, Italian, Portuguese or Dutch.
Start here
No statistics background is needed, and nothing is uploaded: analysis runs on your computer.
- Look at an example. The read-only synthetic report opens directly in the browser and is made from invented text. For real books, the Effi Briest example (German) and the Pride and Prejudice example (English) show an interactive excerpt of a public-domain novel next to its complete PDF report.
- See what the numbers mean. The three-minute first look walks through chapter comparison, a passage and its measurements.
- Install Lixity when you want to analyze your own manuscript (next section).
Install and start
Lixity runs on Windows, macOS and Linux. Use uv;
it supplies the managed Python environment and installs the published package
from PyPI. For help installing uv or
advanced installation options, follow the
installation guide (it also documents the pinned
release wheel with SHA256SUMS for reproducible setups).
uv tool install --python 3.12 --managed-python lixity
uv tool update-shell
Open a new terminal, then verify and start the app:
lixity --version
lixity service start --open
The service starts an empty local workspace; choose Open Project or
Analyze a manuscript. The first-project guide walks
through both choices. For later upgrades, run uv tool upgrade lixity (or
reinstall a pinned release wheel) and restart the local workspace; see the
update instructions.
Use lixity service status, lixity service restart or lixity service stop
for the managed instance. Before uninstalling, stop managed instances and
disable any login startup you configured, then run uv tool uninstall lixity.
Manuscripts and research archives remain in their project folders.
Lifecycle reference.
What you can do
Understand your writing
See how sentence lengths, vocabulary, dialogue and tense vary throughout your manuscript. Open the passages behind a result before deciding whether to revise. Short or empty texts cannot support every comparison; unavailable results are shown explicitly.
Read the language signals · Mobile view · Dark theme
Compare chapters in context
The chapter map uses your manuscript's chapters as its reference. For example, a chapter with longer sentences than usual may reflect a new voice or a formal report. Select a coloured cell to inspect that chapter. The style axes bring together related measurements, helping you see which chapters share patterns and which features distinguish them.
Understand chapter comparisons · Style dimensions · Reference bands
Assign scenes to registers—such as dialogue, action or a formal report—so you can compare scenes with a similar purpose. Each group has its own middle values (medians); you can also set optional targets. Small samples may leave measurements unavailable. Scene example · Setup and limits.
Print what the analysis found
lixity pdf composes a PDF from the manuscript and its measurements: an A4
analysis report, an A5 reading layout, or a submission sheet of 30 lines of 60
characters. Fonts are embedded as subsets, with searchable text for Unicode
characters covered by the selected fonts. No converter, no upload, no added
runtime dependency. The A4 report opens with a cover page and sets its figures
as aligned tables with a repeated header row. These are reading and review
layouts; PDF/X production preflight and automatic fallback between fonts are
not provided. Command reference.
See the complete output: Effi Briest report · Pride and Prejudice report.
In the app, PDF export in the global project controls offers A5 reading copy (default), A4 manuscript sheets or A4 analysis report; the menu starts collapsed and generation returns the PDF through the browser without writing server export files. The same composer reads the selected project's title, author and optional publication details from Project → Settings → Publication; empty fields add no inferred information. PDF metadata, chapter bookmarks and running headers help readers navigate. These remain fixed-layout PDFs, without EPUB, PDF/UA or PDF/X certification. See publication settings and Germany print/digital guidance.
Keep review notes beside the text
Start from the flagged passages list, open a paragraph and read its measured values, source lines and tense labels. A note can be written directly on the passage; work markers keep it next to the relevant text in Markdown. Their visibility in a book export depends on the editor or converter you use.
Work-marker instructions · Flagged passages · Note on a passage · Paragraph view
Connect sources, claims and decisions
The experimental research workspace keeps selected sources, quotations and notes in a separate local archive. A dossier gathers notes on a topic; a claim records an assertion you can link to source passages; a decision explains what you chose for the book. Filter by title or tag, or search the saved text. A saved quotation records what a source says; its accuracy still needs review.
Bring sources from local files or the optional Zotero Desktop bridge. PDF scans can use locally installed Tesseract or a configured OCR worker. Import warnings explain when extraction is incomplete or a requested fallback was used. Select text within an opened source paragraph to prepare an evidence-link draft, with the selected quote and full citation context shown before saving; citations retain the whole paragraph. An optional read-only dossier view lets you read chosen notes beside the manuscript.
Review shows the records explicitly linked to a decision and whether those links refer to an older version. You can inspect the earlier and current versions before deciding to update a link. Saved manuscript associations—a selected quote linked to a claim—appear in the same tab with their anchor state and review flags; a moved or changed anchor stays unresolved and is never repinned silently. Related dossier edits can be previewed and saved together; if another edit conflicts, the preview helps you resolve it while preserving your draft.
Add a local PNG/JPEG to a dossier with a description and optional source note. Earlier dossier versions keep their original image; no remote picture is fetched and images receive no text scores. Edit section, Add claim and Add decision keep a large topic manageable without copying whole documents or IDs.
Chronology: the Claims Timeline sorts every claim with an explicit
calendar period (1926, 1926-03, 1926-03-15, 1924–1926) on a shared axis and links
each bar to its claim card. Free-text periods such as "present day" stay visibly
unplaced with a reason and a formatting hint; placement never verifies a
historical fact.
Research guide · Search and citations · Sources · Claims · Decisions · Decision review · Related revision preview
Choose a project and its settings
Project actions remain available from each workspace view. Preview a manuscript before importing it, select its analysis language, and adjust which differences you want to examine. The NDA form has just name, optional address, project name, date and place. Preview the agreement and download a PDF or editable text in the project language: the recipient can sign or consent in text form, and the sending project representative needs no separate handwritten signature. Set Author name under Project → Settings to fill the representative's name.
Project workflow · Import preview · Mobile settings
Read a report in the terminal
Use lixity analyze manuscript.md --language de for a readable report, or add
--json for software integration. Chapter, paragraph, dialogue, pacing and
research commands are covered in the command reference.
These screenshots use public-domain literature or synthetic project records. More views and capture details.
How to read the results
Each measurement answers a specific question about the text:
| Measurement | What it helps you notice |
|---|---|
| Sentence length and variation | Whether sentences stay similar in length or alternate between short and long. Suspense also depends on what happens in them. |
| Vocabulary diversity | How much words repeat. Compare passages of similar length, language and purpose. |
| Dialogue share | How much text falls inside recognized quotation marks. A high value may be expected in a conversation scene. |
| Chapter differences and consistency | How closely measurable chapters follow the book's observed patterns. A deliberate change in voice can lower consistency. |
Chapter comparisons use the manuscript's middle values and typical spread (median and MAD), with an adjustment for estimated sampling noise. Colours mark the direction of a difference, not its literary value. Optional statistical checks mark a selection for review; they cannot certify that a passage needs editing. An unavailable value can mean there is too little text or too few comparable chapters to calculate it.
The mathematical core includes several vocabulary measures (HD-D, MTLD, MATTR, Guiraud R, Maas a² and Yule's K). They answer related questions using different models and sample sizes. Readability and grammatical-pattern indicators have language-specific limits. Formulas, citations and worked examples live in Methods. The interpretation guide explains how to read results; stability and validation limits describe what has and has not been established.
Supported languages
German (de) and English (en) have the most extensive linguistic resources
and language-specific fixtures. French (fr), Spanish (es), Italian (it),
Portuguese (pt) and Dutch (nl) also have localized interfaces and analysis
resources, with narrower heuristic coverage and validation.
Choose the manuscript language explicitly. LIXITY_LANG=de selects German
terminal messages independently of --language de, which selects German
analysis. Documentation is English; source quotations retain their original
language. Mathematical identifiers and numeric JSON values are language-neutral.
Language support and limits.
Documentation map
If you are new to Lixity (no technical background):
- Read-only example report — the features in a browser, with invented text.
- Public-domain examples — Effi Briest (German) and Pride and Prejudice (English), each with a complete PDF report.
- Three-minute first look — chapter comparison, one passage and its measurements.
- Install and open a project — setup, first report and returning to a project.
- Understand the results — language signals with their requirements and limits.
- Keep sources and citations — evidence, PDF scans and backups.
- Compare analysis tools — grammar checkers, corpus tools, stylometry packages and Lixity.
- First-project walkthrough — the two ways to start in the app.
For technical readers:
- Command reference — every CLI command, option and output limit.
- Interface contracts — JSON schemas, Python API and HTTP routes.
- Research commands — archive workflows and compatibility.
- Architecture · Methods · Stability and validation · Localization · Licensing.
- AI and automation summary — the maintained entrypoint for agents, with the full-text bundle in llms-full.txt.
- Changelog · Release notes.
Current release
The current release is v0.4.6. It resets the product version to reflect
development before 1.0 and retains the existing features and published release
history, including v3.0.1. Public JSON and research storage schema versions are
independent; the 0.3.x/0.4.x line reads existing research archives through v7.
When upgrading from the historical numbering, install the pinned release wheel
explicitly; PyPI upgrades continue normally afterwards.
Release notes describe compatibility and known limits;
the changelog records subsequent work on main.
Python API and automation
from lixity import api
html = api.dashboard(text, language="de", project_config={})
CLI, Python and dashboard analysis share one pipeline. Analysis/profile JSON uses schema v2; style JSON uses v4. Integrations should pass explicit project settings when working with several projects.
Choose api.analyze for numeric results or api.fingerprint for a style
reference. Each convenience call performs its own analysis; integrations needing
several outputs can reuse the shared analysis result.
Interface contracts · Architecture · Research commands · Automation summary
Research
The methods and the tool's placement among stylometry and corpus tools are
described in the software paper draft under paper/,
prepared for the Journal of Open Source Software.
Released versions are archived on Zenodo: cite the concept DOI
10.5281/zenodo.23390297 (see CITATION.cff);
every release also receives its own version DOI.
License
Lixity is open source under the AGPL-3.0-or-later. Use it freely for private and commercial writing, research and teaching — including self-publishing your book; no extra permission is needed. If you distribute Lixity or a modified version, the AGPL requires that recipients receive the corresponding source under the same license.
A separate written commercial license is available for integrations that cannot meet the AGPL, for example embedding Lixity in a closed-source product or running a modified version as a network service without releasing its source.
Licensing guide · Full AGPL text · Former LNCL-1.0 text · Commercial enquiries
Maintainer: Matthias Fahsold, Hamburg, Germany. Project operator: ROST Services GmbH, Rümpel, Germany. Legal notice.
Contributing · Report a security concern · Sample-text provenance
Metadata
Release files for lixity 0.4.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lixity-0.4.6.tar.gz | 837.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lixity-0.4.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / lixity-0.4.6.tar.gz
| Download URL | lixity-0.4.6.tar.gz |
|---|---|
| Size | 837.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b97f7065fc3a9e6aee3c0698289b3f87151fef775555256ba33762b84748a421
|
|
BLAKE2b-256 checksum How to use checksums |
575424902410ad04e84653070d0fc66e0b0d5296e5ffaa46a18dd753d31eebe0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / lixity-0.4.6-py3-none-any.whl
| Download URL | lixity-0.4.6-py3-none-any.whl |
|---|---|
| Size | 626.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e036fdcf3350f0b9028abefc502b07f2d44084ecb9207af036a5bb7c7f0fb635
|
|
BLAKE2b-256 checksum How to use checksums |
ff4712a38e6cd5ee3e1594aefc516b88980686c2d64adfbdc5e1693167b10056
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log