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 -d

Open 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.1

Then 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. 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. 2

    Answer the follow-up

    One more line gives the summary enough material to work with.

  3. 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. 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. 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. 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 typeWhat you get
/plan call the dentist tomorrowTask “call the dentist”, due tomorrow
/plan renew passport fridayDue the coming Friday — a weekday name never means today
/plan pay rent 2026-09-01An 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: HomeAttaches to your existing “Home” project
/plan fix the sink new project: Home repairsCreates a project — a similar name asks you first
/plan buy milkA 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.