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?

Try the sample chat and watch the feature demos without installing anything, or join Discord for self-host support.