Guide
Running Laurela, start to finish
Install it, connect an AI you choose — including free ones — and write your first entry by chatting. Fifteen minutes, no account with us, no subscription. Laurela is MIT-licensed and runs entirely on your own machine.
Step 1
Install it
You need Docker and Docker Compose. Three commands, and the setup script generates your secrets for you — there is nothing to configure by hand.
git clone https://github.com/alexnews/laurela.us && cd laurela.us
./scripts/setup.sh # creates .env, generates your secrets
docker compose up -dOpen http://localhost:3000 and create your account. The first account is yours; afterwards you can close registration so nobody else can sign up by setting ALLOW_REGISTRATION=false in .env and restarting. On a server reachable from the internet, do that as soon as your account exists.
Step 2
Choose your AI
Laurela has no AI of its own — you point it at a provider you control. Open Settings, pick one, fill in the fields below, hit Save settings, then Test provider to confirm it connects before you rely on it. Your API key is encrypted before it is stored and is never sent back to your browser.
Ollama (local)
Free · offline- Model
llama3.1- Base URL
http://ollama:11434- API key
- not needed
Runs on your own hardware — your diary never leaves the machine. A GPU makes it pleasant; CPU works but is slow.
NVIDIA NIM
Free credits- Model
meta/llama-3.1-8b-instruct- Base URL
- built in — leave it alone
- API key
- nvapi-… from build.nvidia.com
The easiest way to try a real cloud model without a credit card. Sign up, generate a key, paste it in.
OpenAI
Paid per use- Model
gpt-4o-mini- Base URL
- built in — leave it alone
- API key
- sk-… from platform.openai.com
Cheap and reliable for journaling. Laurela estimates the dollar cost of each run for you.
Anthropic (Claude)
Paid per use- Model
claude-sonnet-4-6- Base URL
- built in — leave it alone
- API key
- from console.anthropic.com
Uses Claude's native Messages API. Strong at the honest, non-flattering summaries Laurela asks for.
OpenAI-compatible
Depends- Model
whatever it serves- Base URL
https://your-endpoint/v1- API key
- optional
vLLM, LM Studio, Groq, Together, a gateway — anything that speaks the OpenAI chat API.
Step 3
Two ways to run it for free
A local model with Ollama
Nothing leaves your machine, and there is no key and no bill. Start the bundled Ollama container and pull a model:
docker compose --profile local-ai up -d
docker compose exec ollama ollama pull llama3.1Then choose Ollama (local) in Settings with base URL http://ollama:11434 — that hostname is the container on the internal network, which is why it is not localhost. Expect a slow first token without a GPU, and expect small models to miss the occasional task — Laurela proposes nothing rather than inventing tasks when a model returns unusable output.
A free cloud model from NVIDIA
NVIDIA’s build portal hands out an API key with free inference credits and no credit card, which makes it the quickest way to see Laurela working with a capable model. Sign in at build.nvidia.com, open a model such as meta/llama-3.1-8b-instruct, generate a key (it starts with nvapi-), then choose NVIDIA NIM in Settings and paste it in. Free tiers are rate-limited, so a burst of requests may need a minute’s patience. Your diary text does go to NVIDIA — pick Ollama instead if that matters.
Step 4
Your first day
The whole product is this loop. It takes about five minutes.
- 1
Say something concrete on Today
Vague input makes a vague diary. “Spent most of today on the checkout bug. Found it at 6pm — a timezone off-by-one in the totals. Ran 3 miles before work.” The reply streams in word by word and asks a follow-up rather than praising you.
- 2
Answer the follow-up
One more line gives the summary enough material to work with.
- 3
Plan something ahead
Type
/plan write the postmortem tomorrow. It appears under Upcoming with a date and as a dot on the calendar. No AI involved — this is parsed directly, so it works before you have configured a provider. - 4
Click “Generate today's summary”
You get a factual entry of three to six sentences, a mood taken from your own tone, and a checklist of proposed tasks. The entry and mood save themselves; the tasks do not.
- 5
Approve what's real
Untick anything the model got wrong, choose a project for each keeper — none, an existing one, or a new one you name — and click Add selected. Discard throws the whole proposal away.
- 6
Look at the calendar
Today’s square is tinted by mood. Click any day to read or edit its entry. After a few weeks the month becomes a picture of how you actually spent it.
Step 5
The /plan command
One command, typed straight into the chat box. Everything else you type is ordinary conversation — there are no other keywords.
/plan <title> [date] [project: Existing Name | new project: New Name]| You type | What you get |
|---|---|
/plan call the dentist tomorrow | Task “call the dentist”, due tomorrow |
/plan renew passport friday | Due the coming Friday — a weekday name never means today |
/plan pay rent 2026-09-01 | An explicit date |
/plan book flights sep 14 | “sep 14” or “14 sep”; a date already past rolls to next year |
/plan fix the sink project: Home | Attaches to your existing “Home” project |
/plan fix the sink new project: Home repairs | Creates a project — a similar name asks you first |
/plan buy milk | A plain open task, no date |
Dates understood: today, tomorrow, weekday names, an exact YYYY-MM-DD, and month–day pairs. Put the date at the end — the words are read from the right, so /plan tomorrow call mum creates a task literally named “tomorrow call mum”.
By design
What Laurela won't do
It won’t flatter you
Summaries report facts and nothing else. No encouragement, no praise, no speculation about feelings you didn’t express.
It won’t judge your output
The mood comes from the tone of your own words, not from how productive the day was. A quiet day you felt fine about is neutral, not sad.
It won’t write without asking
Tasks and projects are proposed for approval. Nothing reaches your lists — and no project is ever created — without a click from you.
You can read the exact prompts Laurela sends on your behalf at /prompts inside the app. Every diary entry is editable, because a record you can’t correct isn’t honest either.
Privacy
Your data
Entries live in your PostgreSQL database, on your machine. There is no central service and no telemetry. Content goes to exactly one outside place — the AI provider you configured — and with Ollama it goes nowhere at all.
- Export everything, any time. Settings → Export account (JSON) gives you entries, tasks, projects and chat history in one file. Your API key is not in it.
- Backups run on a schedule. The Docker setup takes compressed database dumps with daily and weekly rotation, and ships a restore script — proven by a test that backs up, changes data, restores, and checks it came back.
- Your diary is not indexed. The pages you write on are marked no-index and can’t be framed by other sites. This guide and the front page are the only public pages.
Troubleshooting
If something breaks
- “… rejected the API key”
- The key is wrong, expired, or from a different provider. Paste it again — the field blocks autofill, so nothing else can end up in there.
- “… endpoint or model was not found”
- The model name doesn’t exist on that provider. Copy it exactly from their model page — NVIDIA ids contain a slash, and Ollama models must be pulled first.
- “… is rate-limiting requests”
- You hit the provider’s ceiling — common on free tiers. Wait a minute and try again.
- The summary proposed no tasks
- Usually a small model returning malformed output. Laurela asks it once more, then proposes nothing rather than inventing work. A larger model fixes it.
- A finished task vanished
- Today shows open tasks only. It isn’t lost — it’s in your export marked done, and tasks attached to a project stay visible on the Projects page.
Start your own
Three commands to self-host it, or create an account on this instance if the owner has left registration open.