Liminal Salt

A self-hosted LLM chatbot with persistent per-persona memory, customizable personas, and a roleplay mode. Runs locally; state lives in plain JSON and Markdown files on your machine.

Liminal Salt main interface — sidebar with pinned and grouped chat sessions, central input field

Why Liminal Salt?

For writers and roleplayers

Build personas in Markdown, switch threads into roleplay mode with per-scene memory, and let each persona build up its own continuity across conversations.

For privacy-conscious users

Runs on your machine. No database, no cloud, no telemetry. All state is readable text on disk.

For tinkerers

Personas are Markdown. Themes are JSON. Django + HTMX + Alpine — easy to read and easy to extend.

Features

Per-persona memory

Each persona maintains its own evolving notes about you, merged in the background as you talk.

Roleplay mode

Per-thread scenarios and scene-level memory, with persona memory suppressed in-scene for immersion. Fork any chat into a roleplay thread without losing context.

Context files

Upload documents per-persona or globally; reference local directories to pull in live files without copying them.

Multi-session

Sessions grouped by persona, pinnable, auto-titled, with drafts saved per thread.

OpenRouter

Hundreds of models, with per-persona model overrides.

Themes

Dark and light modes across 16 color themes — including the one you're looking at.

Screenshots

Click any image to enlarge.

Liminal Salt main interface
Main
Chatbot conversation view
Chatbot
Roleplay mode conversation view
Roleplay
Persona memory editor
Persona Memory
Persona settings panel
Persona Settings
App settings panel
Settings

Like the look?

The Liminal Salt color theme — the one you're looking at right now — is available as a standalone palette for your editor and terminal. Earthy greige tones, sage and stone accents, dark and light variants, and every foreground/background pair meets WCAG 2.1 AA.

Editors: VS Code, Neovim, Zed, JetBrains
Terminals: Alacritty, Ghostty, iTerm2, WezTerm
Other: tmux

Theme on GitHub

Quick start

git clone https://github.com/irvj/liminal-salt.git
cd liminal-salt
python run.py

The launcher creates a virtual environment and installs dependencies on first run. Open http://localhost:8420 and follow the setup wizard.

Requirements

Scope

Liminal Salt is a local application, not a hosted service. You run it on your own machine with your own API key. Running it as a service for other people is outside the project's scope and would make you the operator of whatever you built.

Using Liminal Salt means agreeing to the user agreement — short, plain-language, covers age, open source, non-determinism, provider terms, and responsibility for content. The app presents it once during setup.