Self-hosted · terminal-first · MIT

Loreweaver

Your favorite character shouldn't live only in a chat window.

Take them into a full world…

Neither of you knows the script — you create the story together.

Loreweaver demo — a real session recorded in the terminal client
Start a game

Starting a game is one button

Install the client, click "Host locally & play". There is no step two.

Install the client

Installing the client is one line.

macOS / Linux

$curl -fsSL https://1a7432.site/trpg/install.sh | bash

Windows (PowerShell)

>irm https://1a7432.site/trpg/install.ps1 | iex

On Windows, use Windows Terminal or WezTerm. If the TUI does not look like the screenshots — broken borders, wrong colors, bad Unicode, or mouse input not working — you are probably in the legacy console host.

Click the button

The green button on the connect screen.

Send the codes

A ticket + one invite code per friend, on screen.

Loreweaver connect screen — one-click local hosting

The server builds are also yours to take and run long-term.

Under the hood

The AI tells the story. The code keeps the score.

Checks, damage, sanity, initiative — all rolled and resolved by code, and the AI's only job is to tell the result as a story. It can conjure atmosphere; it can't conjure the numbers.

NPCs don't get X-ray vision: every NPC and AI companion knows only what it should — the module's secrets are simply not in their hands. You can lose, which is exactly why winning means something.

The dice are real

A d20 engine plus CoC/D&D rulepacks — if the numbers don't validate, no amount of AI charm gets them through.

Keeps the secrets

Information isolation is an architectural guarantee, not a polite prompt — watched by red-line tests and a nightly real-model eval (spoiler rate 45.8% → 0 across six live rounds).

AI party members

Short a player? An AI companion genuinely fills the seat: its own sheet, its own rolls.

The server is yours

Runs on your own machine, friends connect directly over p2p; your data, modules and keys never leave home.

Runs a game, not a chat.

Loreweaver A chat window
Real dice, resolved by code
Keeps the module's secrets
A world that remembers~
AI companions fill a seat
Your machine, your data
Ask for it, and it exists

Ask for it, and it exists.

New rule systems, new play styles, new modules…

Your SillyTavern cards actually run

V2/V3 cards and lorebooks import as-is. MVU variable trees and UpdateVariable bookkeeping, full EJS templates in a QuickJS sandbox, worldbook trigger semantics — the machinery works, and real code keeps the books.

The module keeps score

The Keeper declares trackers mid-game — town fear, suspicion, quest progress. Every change is validated and clamped by the engine; player-visible trackers update live in the sidebar, keeper-only ones never leave the server.

Modules ship behavior

A skill or card can carry hooks.js: sandboxed JavaScript on the turn lifecycle that tracks variables, nudges the Keeper, and draws meters, badges and choice buttons right in the terminal. Every request is validated; a broken script never breaks a turn.

A whole campaign in one file

Skills, rulepacks, cards, lorebooks and assets bundle into one .lwpack — build with one line, install with one line, from a file, a URL, or a GitHub release. A trust card and integrity checks come before anything touches disk.

For developers

For developers

MIT, Python engine + TypeScript terminal client…

Writing your own client or bot? The typed protocol frames and a reconnecting WebSocket client are on npm as loreweaver-protocol.