verdande

Self-hosted tasks and projects, shared with the people you share the work with. One binary, SQLite inside it.

Built to be deployed as a Rune in Yggdrasil Panel — upload the manifest, fill in two fields, press start. It also runs anywhere Docker does.

Verdande is one of the three Norns — the one who spins that which is becoming. Not what has been, and not what is fated to be: the thing you are in the middle of. Which is what a to-do list is.

Add a task
file the VAT return next friday at 10am p1 #Accounts @tax
→ file the VAT return Fri 10:00 P1 Accounts tax

The same line works in Danish — betal moms på fredag kl 10 p1 #Firma @regnskab — and the two can be mixed mid-sentence.

What it looks like

The Today view: a sidebar of projects, filters and labels beside a list of tasks due today, each with its priority ring, time and labels.
Today. Dark is the default; there is a light theme too.
A project in board view: one column per section, with task cards showing due dates, labels and repetition.
Board view — one column per section.
The same Today view in the light theme.
The light theme.
Upcoming as a single week: seven columns of days, each holding the tasks due that day.
A week at a time — so a task can be dragged across a month boundary.
A task open in the detail drawer, with its description, due date, labels, sub-tasks and comments.
A task, opened.
The settings page showing the five themes as swatches.
Five themes, all of them measured for contrast.
The instance-wide history page: who did what, in which project, filtered by person and event.
What has been done on the server, across every project.

What it does

Reads what you type

Dates, times, priorities, projects, labels and repetition, parsed out of one line — in Danish and English, mixed freely.

Shared, properly

Owner, editor and viewer roles. People outside your instance join by invite link. Changes appear live.

A real CalDAV server

Two-way. Tick something off in Apple Reminders and it is ticked off here. Not a read-only feed pretending.

Claude, connected

A built-in MCP server. Ask what is due this week, or have a task added, in conversation.

Mail to task

Forward an email to your own address and it becomes a task, subject parsed like anything else you type.

Yours to leave

Import from Todoist, export back to it, or take everything as JSON. The round trip is tested, not promised.

Running it

As a Rune in Yggdrasil Panel

This is what it was built for. Runes → Carve a rune, upload rune/verdande.yaml, create a server from it, set the public address and your mail server, and start it. No port forwarding — give it a subdomain and the panel routes it through your Cloudflare Tunnel.

Or with Docker, anywhere

docker run -d --name verdande \
  -p 8080:8080 \
  -v verdande-data:/data \
  -e VERDANDE_BASE_URL=https://todo.example.dk \
  ghcr.io/kristianwind/verdande:latest

Open the address and create the first account. That one is the administrator.

What it will not do

No karma or points. No team workspaces. No native apps. No mail integration beyond Gmail and the forwarding address. No languages beyond Danish and English. And no sync protocol of its own — CalDAV and the API are the sync.