Self-host guide

Run Yuralume on your own machine.

One command brings up the whole stack with Docker. Your characters, memories, and chats stay local — bring your own LLM key, and nothing is metered or phones home.

macOS / Linux
curl -fsSL https://yuralume.com/install.sh | bash
Windows · PowerShell
irm https://yuralume.com/install.ps1 | iex

Requires Docker · ~2 GB disk · about a minute

Watch it run

Zero to chatting, in 3 minutes.

The whole install, captured end to end — from one command to a character you can talk to. No speed-ups, no edits.

First run

From zero to chatting in three steps.

1

Install Docker, then run the line above. It downloads the images and starts everything.

2

Open http://127.0.0.1:8012Admin → Provider Keys and add one LLM key.

3

Create a character and start chatting. Memory, schedules, and proactive messages run from there.

The one manual step: Yuralume is bring-your-own-key, so chat needs at least one LLM provider. Add it in Admin → Provider Keys (OpenAI, OpenRouter, a local model — anything compatible); keys are encrypted in your database and never leave your machine. The bundled fake provider keeps the app runnable for a smoke test but won't produce real conversation.

Requirements

What you need first.

Docker

Docker Desktop on macOS/Windows, Docker Engine on Linux. The installer checks for it and links the download if it's missing.

One LLM key

Bring your own — OpenAI, OpenRouter, a local OpenAI-compatible endpoint, anything supported. Added after install; never stored in plain text.

~2 GB disk

For the images plus your data. Everything runs in containers and removes cleanly with one command.

Operating it

Run, update, stop.

All commands run from your install directory (~/yuralume). Re-running the installer is also safe — it upgrades images and keeps your secrets and data.

Tail logs

docker compose logs -f app

Update to the latest build

docker compose pull && docker compose up -d

Stop (data is kept)

docker compose down

Reset — deletes all local data

docker compose down -v

What's running

ServicePort (localhost)Purpose
app8012API + web UI
postgres5554database (named volume)
storage-local9012object storage (./uploads)
whatsapp-sidecar32190optional WhatsApp channel

Every port binds to 127.0.0.1 only. To expose Yuralume on a LAN or VPS, put it behind a reverse proxy and set APP_BASE_URL in .env.container.

Advanced

Tunables, manual install, prompt tuning.

Tunables

VariableDefaultMeaning
YURALUME_HOME~/yuralumeinstall directory
YURALUME_IMAGE_TAGlatestpin a published build (e.g. v0.1.0)
YURALUME_INSTALL_BASEhttps://yuralume.comwhere to fetch the bundle

Set these in your shell before running the one-liner.

Manual install (no script)

mkdir -p ~/yuralume/prompts/tuned ~/yuralume/uploads && cd ~/yuralume
curl -fsSL https://yuralume.com/selfhost/docker-compose.yml -o docker-compose.yml
curl -fsSL https://yuralume.com/selfhost/env.example -o .env.container
# edit .env.container: replace every __...__ token with a long random string
COMPOSE_PROJECT_NAME=yuralume docker compose pull
COMPOSE_PROJECT_NAME=yuralume docker compose up -d

Prompt tuning

The image ships the baseline prompt pack, so this is optional. To override prompts, drop .txt files under prompts/tuned/ using the same relative paths as the baseline (e.g. chat/instructions_footer.txt), set YURALUME_PROMPT_PACK_DIR=/app/prompts/tuned in .env.container, and run docker compose up -d. Startup logs then show Prompt pack overlay loaded with the template count.

Troubleshooting

If something looks off.

Docker isn't running

The installer stops with a message. Start Docker Desktop (wait for the whale to settle), or sudo systemctl start docker on Linux, then re-run.

App didn't answer /health

On first boot it may still be migrating. Check docker compose ps and logs -f app; the one-shot migrate step runs before the app starts.

Port already in use

Something else holds 8012/5554/9012/32190. Stop it, or change the host port in docker-compose.yml and APP_BASE_URL.

Start over

Re-running the one-liner upgrades in place. For a clean slate, docker compose down -v removes all containers and local data.

Before you install

Want to try it first?

Play the live demo without installing anything, or join Discord for self-host support.