It's an IDE, but for Authors. Arthur AI is optional, and is not the author. Works best with OpenFlowLM for advanced features.
Python
2
34 commits
updated Sep 24, 2026
Intelligent writing companion for authors. Arthur's AI is Arthur, and Arthur is never the author. Arthur does not try to be the author. It reads what you write and keeps story bible of your characters, chapters, and world lore, then uses RAG with an LLM of your choice to help you brainstorm, continue prose, check consistency, and catch plot holes. Most features don't actually require a running LLM -- this is not a story generating bot.
.txt/.md manuscripts: chapters split automatically (headings, Chapter N, form feeds), front matter becomes metadata, and cast/places/world facts are populated from the prose before you even open a panel. Locative synonyms are discovered with embeddings when sentence-transformers is loaded, and cast/place extraction plus per-chapter summaries kick in when an LLM is connected — nothing blocks when there is no model| Layer | Tech |
|---|---|
| Frontend | React, Vite, Tailwind CSS |
| Backend | Python, FastAPI |
| Memory | ChromaDB + sentence-transformers |
| LLM | OpenAI-compatible HTTP API |
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python run.py
API: http://127.0.0.1:8000
Docs: http://127.0.0.1:8000/docs
Optional env (see backend/.env.example):
export GW_LLM_BASE_URL=http://localhost:11434/v1 # Ollama
export GW_LLM_MODEL=llama3.2
cd frontend
npm install
npm run dev
llama.cpp server
llama-server -m /path/to/model.gguf --port 8080
# default GW_LLM_BASE_URL=http://localhost:8080/v1
Ollama
ollama serve
ollama pull llama3.2
export GW_LLM_BASE_URL=http://localhost:11434/v1
export GW_LLM_MODEL=llama3.2
Without a model, the app still runs; assist endpoints return offline guidance.
The guarded audiobook preview defaults to the Audio8 TTS engine. Download its
model once (≈1.7 GB into data/hf):
cd backend && python -m app.services.audio8 download
Runs on CPU by default (~9× realtime; fine for a preview). Set
GW_TTS_DEVICE=cuda to opt into GPU inference where your torch build is
stable (some ROCm builds segfault in mamba kernels). To save your own voice
for cloning, use "Export → add your voice sample" in the app: upload a short
recording plus its verbatim transcript. Every render embeds spoken
disclaimers and stays un-publishable.
Arthur/
├── backend/
│ ├── app/
│ │ ├── api/ # FastAPI routers
│ │ ├── db/ # JSON project storage
│ │ ├── models/ # Pydantic schemas
│ │ ├── services/ # RAG, embeddings, LLM
│ │ ├── config.py
│ │ └── main.py
│ ├── requirements.txt
│ └── run.py
├── frontend/
│ └── src/ # React UI
├── data/ # projects + chroma (runtime)
└── tests/
cd backend && source .venv/bin/activate
pip install pytest httpx
cd ..
pytest tests/ -q
MIT
It's an IDE, but for Authors. Arthur AI is optional, and is not the author. Works best with OpenFlowLM for advanced features.
Python
2
34 commits
updated Sep 24, 2026
Intelligent writing companion for authors. Arthur's AI is Arthur, and Arthur is never the author. Arthur does not try to be the author. It reads what you write and keeps story bible of your characters, chapters, and world lore, then uses RAG with an LLM of your choice to help you brainstorm, continue prose, check consistency, and catch plot holes. Most features don't actually require a running LLM -- this is not a story generating bot.
.txt/.md manuscripts: chapters split automatically (headings, Chapter N, form feeds), front matter becomes metadata, and cast/places/world facts are populated from the prose before you even open a panel. Locative synonyms are discovered with embeddings when sentence-transformers is loaded, and cast/place extraction plus per-chapter summaries kick in when an LLM is connected — nothing blocks when there is no model| Layer | Tech |
|---|---|
| Frontend | React, Vite, Tailwind CSS |
| Backend | Python, FastAPI |
| Memory | ChromaDB + sentence-transformers |
| LLM | OpenAI-compatible HTTP API |
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python run.py
API: http://127.0.0.1:8000
Docs: http://127.0.0.1:8000/docs
Optional env (see backend/.env.example):
export GW_LLM_BASE_URL=http://localhost:11434/v1 # Ollama
export GW_LLM_MODEL=llama3.2
cd frontend
npm install
npm run dev
llama.cpp server
llama-server -m /path/to/model.gguf --port 8080
# default GW_LLM_BASE_URL=http://localhost:8080/v1
Ollama
ollama serve
ollama pull llama3.2
export GW_LLM_BASE_URL=http://localhost:11434/v1
export GW_LLM_MODEL=llama3.2
Without a model, the app still runs; assist endpoints return offline guidance.
The guarded audiobook preview defaults to the Audio8 TTS engine. Download its
model once (≈1.7 GB into data/hf):
cd backend && python -m app.services.audio8 download
Runs on CPU by default (~9× realtime; fine for a preview). Set
GW_TTS_DEVICE=cuda to opt into GPU inference where your torch build is
stable (some ROCm builds segfault in mamba kernels). To save your own voice
for cloning, use "Export → add your voice sample" in the app: upload a short
recording plus its verbatim transcript. Every render embeds spoken
disclaimers and stays un-publishable.
Arthur/
├── backend/
│ ├── app/
│ │ ├── api/ # FastAPI routers
│ │ ├── db/ # JSON project storage
│ │ ├── models/ # Pydantic schemas
│ │ ├── services/ # RAG, embeddings, LLM
│ │ ├── config.py
│ │ └── main.py
│ ├── requirements.txt
│ └── run.py
├── frontend/
│ └── src/ # React UI
├── data/ # projects + chroma (runtime)
└── tests/
cd backend && source .venv/bin/activate
pip install pytest httpx
cd ..
pytest tests/ -q
MIT