ElyHa
AI-powered visual novel writing studio with multi-agent collaboration, node-based plotting, branches, and human-in-the-loop editing. Built with Tauri + ReactFlow. 开源长篇小说创作工具
Install / Use
/learn @ShadowLoveElysia/ElyHaREADME
ElyHa
Graph-based narrative authoring with AI assistance (Web GUI + TUI)
ElyHa is a graph-first novel writing system. You can manage branching storylines with nodes/edges and use multi-agent workflows (LangGraph) for chapter generation, setting review, and consistency checks.
The project is under active development. Issues and PRs are welcome.
Features
- Graph editor: drag nodes, connect edges, filter storylines
- Insight view: character relations, storyline stats, state satellite view
- AI workflow: Planner -> Writer -> Reviewer -> Synthesizer
- Ghost-node workflow: AI proposals + human adoption, no forced overwrite
- Versioning and audit: snapshots + operation log
- Multi-entry: Web GUI (React) + TUI (Rich)
- Localization: Chinese / English / Japanese
Quick Start
1) Windows (Recommended)
prepare.bat
LaunchWebUI.bat
2) Linux / macOS
bash prepare.sh
./LaunchWebUI.sh
3) Termux (Android)
bash termux_prepare.sh
./LaunchWebUI.sh
Default URL: http://127.0.0.1:8765/
For LAN access on mobile:
ELYHA_HOST=0.0.0.0 ./LaunchWebUI.sh
Startup Scripts
prepare.bat/prepare.sh: prepare Python runtime and dependenciestermux_prepare.sh: one-click Termux setup (pkgdependencies +uv sync)LaunchWebUI.bat/LaunchWebUI.sh: start Web GUILaunchTUI.bat/LaunchTUI.sh: start TUI
LaunchWebUI reads web_host/web_port from the active profile in data/core_configs/active_profile.txt by default. You can override with ELYHA_HOST / ELYHA_PORT.
Release and Auto Build
The repository uses Web_Build.yml for automated web bundling:
- On
pushtomain/masterwithelyha_web/**updates: build dev package and upload todev-build - On
release published: build stable package and upload to that release - Before packaging,
elyha_web/distis synced toelyha_web/static
So users can run downloaded bundles directly with prepare.bat + LaunchWebUI.bat.
Developer Notes
Requirements
- Python
>= 3.10 uvis recommended for dependency management- Node.js is only needed for frontend development (not required for prebuilt runtime)
Common Commands
# Sync Python dependencies
UV_CACHE_DIR=.uv-cache uv sync
# Start API / Web (backend serves elyha_web/static)
UV_CACHE_DIR=.uv-cache uv run uvicorn elyha_api.app:app --host 127.0.0.1 --port 8765
# TUI
UV_CACHE_DIR=.uv-cache uv run python -m elyha_tui.main
# Frontend development
cd elyha_web
npm ci
npm run dev
npm run build
If you build frontend manually and want backend to serve the new static files:
rm -rf elyha_web/static
mkdir -p elyha_web/static
cp -a elyha_web/dist/. elyha_web/static/
Runtime Profiles (Core Config Profiles)
- Directory:
data/core_configs/ - Core profile:
core.json(read-only, must not be renamed/deleted/overwritten) - The
corepreset is not editable. To change settings, switch to another preset or create a custom preset first. - Active profile marker:
data/core_configs/active_profile.txt - Custom profiles can be created/switched/renamed/deleted
- When
auto_complete=true, API URLs are auto-completed to/chat/completions
Internationalization
- Web GUI: switch language in UI
- TUI: use
ELYHA_LOCALE
ELYHA_LOCALE=ja ./LaunchTUI.sh
ELYHA_LOCALE=en ./LaunchTUI.sh
Project Structure
ElyHa/
├── elyha_core/ # core domain layer (models, services, storage)
├── elyha_api/ # FastAPI backend
├── elyha_web/ # React Web GUI (source + static artifacts)
├── elyha_tui/ # Rich TUI
├── i18n/ # locale catalogs (zh/en/ja)
├── scripts/ # utility scripts
├── data/ # user data (projects/configs)
└── LLMRequester/ # legacy LLM adapter layer
License
GPLv3. See LICENSE.
