Install
  • CalDAV
  • CardDAV
  • Markdown
  • Self-hosted

For people who keep their life in notes.

tidl keeps your calendar, tasks, notes and contacts in one place, with a Focus list that sorts them by what is coming up next. It uses CalDAV and CardDAV, so the apps on your phone keep working, and it can pick up tasks from your markdown notes.

tidl month calendar view
tidl Focus view: events, tasks and awaits ranked by urgency
What is inside

Four views of the same things

Focus

Events, tasks and awaits in one list, sorted by how soon they need attention.

  • Events, tasks and awaits from every calendar, note and markdown file
  • An event that is about to start moves above your tasks
  • Re-ranks every minute, with today, 3-day and 7-day horizons
Your notes stay plain text

Tasks can live in your markdown notes

Point tidl at a folder or a git repo. Tags in your notes become tasks next to your calendar. They can also become awaits: things you are waiting on from someone else, like a quote or a reply. An await stays out of the way until its date, then shows up in Focus so you remember to follow up.

notes/launch.mdmarkdown
# Launch week

- #task/p5/finish-export-writeup
- #await/2026-09-28/signed-contract-acme
- #task/p30/reply-vendor-rfp
- #task/2026-10-11/renew-passport

Lunch with @Alan Turing: send the deck by Friday.
Focus · 7 dayslive
  1. 1Signed contract from Acmeawait · due 2026-09-28URGENT
  2. 2Finish export writeuplaunch.md · p5URGENT
  3. 3Team standupwork · 09:30 tomorrowUPCOMING
  4. 4Reply vendor RFPlaunch.md · p30LATER
A markdown note opened in tidl, with its tasks and awaits shown inline
The same kind of note, opened in tidl. Tags show up inline, with a checkbox you can tick.
1 binary · 1 SQLite file

One small program

Written in Rust. The server, the web app and the sync engine ship as one executable. Run it on a Pi, a NixOS box or Windows.

RFC 4791 · RFC 6352

Works with the apps you have

Standard CalDAV and CardDAV, so your phone and desktop clients sync as they always have.

iOS CalendarApple ContactsDAVx⁵Thunderbird
Apache-2.0 / MIT

Free and open source

The code is meant to be easy to read and change, and contributions are welcome. Your data stays in files and a database on your own machine.

If this sounds like something you’d use, here’s how to set it up.

puckles

Support tidl

tidl is free and built in spare time. If it is useful to you and you would like to help, you can support puckles with a coffee on Ko-fi. Bug reports and pull requests help just as much.

Support puckles on Ko-fi
Details

Details

The full feature list, the markdown syntax, and how to run it and connect your clients.

Calendar

Views
Day, work week, week and month. Drag to resize events, zoom the hour scale with −/+ or Ctrl/⌘ + scroll.
Multiple calendars
Colour-coded, toggled on and off from the sidebar. A muted 12-colour palette that adapts to light and dark mode.
Recurring events
RRULE recurrences. Edit one occurrence or the whole series, or delete a single occurrence.
Reminders
Full VALARM support. Display and audio alarms fire in the browser, email alarms are sent by the server.
Import & subscribe
Import .ics files, subscribe to webcal feeds like school portals or public holidays, and mirror any remote CalDAV server.
Invitations by email
Forward a meeting invite to your personal tidl address and it lands in your calendar.
Week view
Week view with calendar toggles.
Month view
Month view.

Focus & tasks

Focus
One urgency-ranked list of events, tasks and awaits, for today, 3 days or 7 days. Events climb as they approach and outrank tasks once they are imminent. Re-ranks every minute.
Suppress
Hide an item from Focus for good. Suppressed items stay in a collapsible section so you can undo.
Tasks
One priority scale from 1 (highest) to 100, shared by the app, notes and markdown. Mapped to CalDAV's 1–9 so Thunderbird edits stay in sync.
Await
Things you are waiting on, by date. Future items show purple, overdue ones red.
Done
Every completed item — from a note, a markdown tag or a calendar — lands in one Done list, searchable and filterable, with a live count in the nav. Re-open a mistake, or archive an item to strip it from its source. A retention rule can archive items automatically once they age past it.
Priority curves
Reshape how time left and priority turn into urgency, by dragging points on a graph with URGENT, SOON, UPCOMING and LATER bands.
Priority curve editor
Drag-editable priority curves.
Focus view
Focus, ranked by urgency.
Done view listing completed tasks
The Done list, with search and an archive toggle.

Notes

Collections
Notes in colour-coded collections, private or shared. Pin, star and search across everything you can see.
Labels
Reusable colour-coded labels on top of collections, with a picker in the editor and a filter panel beside Focus. Create, rename or recolour one without leaving the page.
Free-form grid
Drag a note to any cell. Auto-layout previews a tightly packed grid; keep it or switch back.
Inline tasks & awaits
Add any number of tasks and awaits to a note. Each is a one-line chip with a checkbox that appears in Tasks, Await and Focus and syncs over CalDAV. Click a chip to rename it or change its priority; a checked-off one re-opens in place.
@mentions
Type @ to link a contact. Click the pill to see their details without leaving the page.
Bulletize / Taskify
Turn checklist items back into plain bullet lists when they were never tasks, and back again, in one click.
Images & links
Attach images inline (up to 5 MiB each) and click one to open it full screen. Bare URLs become clickable links.
Consolidate to Markdown
Write a note out as a new file in a chosen markdown source and folder. Its title becomes a heading, its images become sidecar files, and its tasks, awaits and [[wikilinks]] survive the move. Git-backed sources are committed and pushed.
Google Keep import
Drop in a Takeout zip. Titles, labels, pins, checklists and images come across.
Notes grid with inline tasks, awaits and @mentions

Contacts

Rich records
Name parts, nickname, organisation, birthday, anniversary, categories, a photo, and any number of addresses, emails, phones, URLs and IM handles.
Collections
Colour-coded address books, private or shared. Each one is its own CardDAV address book.
Merge duplicates
tidl suggests likely duplicates. Merge them and pick which name, details and photo to keep.
Import & export
Read and write standard .vcf, photos included, with a preview before you import.
Contacts grid

Markdown

Add a local folder or a git repository as a source. tidl watches it and turns tags into tasks, shown as the same chips you get in notes. Browse and edit files in the app, click a chip to change it in place, follow [[wikilinks]], or jump to any file with Ctrl/⌘ K.

Pull out into Note
Import the open file into a note collection. A leading # Title becomes the note title, relative images are re-imported, and you can keep or delete the file. Together with Consolidate to Markdown on the note side, this moves content either way without losing its tags, links or mentions.
Tag syntax
#task/p1/critical-bug              priority 1 (highest) to 100
#task/2026-06-01/renew-passport    dated task, no priority
#await/2026-01-15/call-dentist     waiting on something until a date
#done/2026-06-02/p1/critical-bug   written when you tick it off; un-checks back

The note as you read it, with tasks and awaits inline.

Rendered markdown note with inline tasks and awaits Source view of the same note, showing the tag syntax Editing a task's name and priority from inside the file

Sharing & sync

Share by email
Share a calendar, note collection or contact collection with another user, read-only or read-write. It shows up in their app and their CalDAV/CardDAV clients.
Live updates
New events, edits and revoked shares appear in open tabs on both sides without a refresh.
App tokens
A named credential per client, revocable without changing your password.
Accounts
Self-service sign-up with email verification, single sign-on, and an admin view for users.
Outlook bridge
A PowerShell script pushes your local Outlook calendar into tidl. No install or admin rights needed.

Install

tidl ships as a multi-arch container image, prebuilt release archives and a NixOS module; you can also build it from source. Every route needs a secret — a secret in the config, or a file named by TIDL_SECRET_FILE — and anything reachable from outside your network belongs behind a reverse proxy with TLS.

Please don't run tidl on an open network. It has not received the security attention a public service needs, so keep it on localhost or a private network you control. Putting it behind a reverse proxy with TLS is a good idea, but it is not a substitute for that. An overlay network such as Tailscale, Nebula or WireGuard can give you access from elsewhere without exposing the server directly.

Docker Compose

The quickest path is the published image (linux/amd64 and linux/arm64), configured entirely through TIDL_* environment variables. The data volume is the only path that needs to persist.

docker-compose.yml
services:
  tidl:
    image: ghcr.io/tidl-dev/tidl:latest
    restart: unless-stopped
    ports: ["3060:3060"]
    environment:
      TIDL_DOMAIN: tidl.example.com
      TIDL_SECURE_COOKIE: "false"   # set true once behind HTTPS
      TIDL_SECRET_FILE: /run/secrets/tidl-secret
    volumes: ["tidl-data:/data"]
    secrets: [tidl-secret]

volumes:
  tidl-data:

secrets:
  tidl-secret:
    file: ./tidl-secret
Start
openssl rand -base64 32 > tidl-secret   # or: tidl-server generate-secret
docker compose up -d
docker compose exec tidl tidl create-admin \
  --email you@example.com --username you \
  --display-name You --password 'a-strong-password'

Prebuilt archive

Each release also publishes a Linux tarball (x86_64 and aarch64) and a Windows zip: the server, the web assets and a sample config. Unpack it, add your secret, and run the launcher from inside the folder.

Release archive
VERSION=0.1.0   # latest release
curl -LO "https://github.com/tidl-dev/tidl/releases/download/v$VERSION/tidl-linux-x86_64-$VERSION.tar.gz"
tar xzf "tidl-linux-x86_64-$VERSION.tar.gz"
cd "tidl-linux-x86_64-$VERSION"
cp config.toml.example config.toml   # set secret, then run
./run.sh

NixOS module

On NixOS, add the flake as an input and enable the module. It runs the server under systemd and can read the secret from a file — a sops secret here.

configuration.nix
services.tidl = {
  enable = true;
  host = "0.0.0.0";
  port = 3060;
  domain = "tidl.example.com";
  dataDir = "/var/lib/tidl";
  secretFile = config.sops.secrets."tidl-secret".path;
};

Build from source

With the Rust toolchain, or the Nix dev shell, build the server and the WASM frontend together. Run it from the folder that holds assets/ and target/site/.

Nix
nix develop
cargo leptos watch   # dev, :3060
nix build            # production
Cargo
cargo install cargo-leptos
cargo leptos watch
cargo leptos build --release
config.toml
[server]
host = "127.0.0.1"
port = 3060
domain = "tidl.example.com"
secret = "..."   # required; generate-secret writes a key file

[paths]
data_dir = "./data"

Reverse proxy

tidl speaks plain HTTP and expects a TLS-terminating proxy in front of it for anything off localhost. Caddy with automatic certificates needs almost nothing; nginx needs a few settings tidl relies on.

Caddy
tidl.example.com {
  reverse_proxy 127.0.0.1:3060
}
nginx
server {
  listen 443 ssl;
  server_name tidl.example.com;

  location / {
    proxy_pass http://127.0.0.1:3060;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    client_max_body_size 6m;
    proxy_buffering off;
    proxy_read_timeout 3600s;
  }
}

Three things matter for tidl. Keep the Authorization header intact — CalDAV and CardDAV clients sign in with HTTP Basic, and some setups drop it. Raise the body limit, since nginx's default 1m is smaller than the 5 MiB inline note images. And leave buffering off with a long read timeout, so the server's live-update stream is not held back. The URLs to enter in your devices are on Connect a client.

Connect a client

Calendars & tasks
https://your-domain/caldav/username/calendar
Tested with iOS Calendar & Reminders, DAVx⁵ and Thunderbird.
Contacts
https://your-domain/carddav/username/
Most clients discover every address book from this URL. Tested with iOS Contacts and Thunderbird.
Sign in with
Your tidl username and password, or an app token from Settings → App Tokens.
Reading

Books on notes, attention and time

tidl is a tool, and a tool only helps if the habits around it work for you. These books are good company for anyone thinking about how they keep notes and spend their days.

Notes and thinking

  • How to Take Smart Notes — Sönke Ahrens

    How to Take Smart Notes

    Sönke Ahrens

    A practical guide to the Zettelkasten, the slip-box system the sociologist Niklas Luhmann kept for decades. Write short notes in your own words, link each one to what you already have, and let new writing grow out of those links instead of a blank page.

  • Building a Second Brain — Tiago Forte

    Building a Second Brain

    Tiago Forte

    Capture what resonates, organise it by the projects it serves, and keep distilling it so it is easy to use later. The aim is to spend less effort remembering and more on making things.

  • The Extended Mind — Annie Murphy Paul

    The Extended Mind

    Annie Murphy Paul

    Drawing on psychology and neuroscience, it shows that we think better with things outside our heads: notes, sketches, the spaces we work in and the people around us. A good case for writing things down instead of holding them in memory.

Tasks and habits

  • Getting Things Done — David Allen

    Getting Things Done

    David Allen

    The classic method for getting commitments out of your head. Capture everything, decide the next action for each thing, and keep a separate list of what you are waiting on from others. Its weekly review is still one of the most useful habits in this space.

  • The Bullet Journal Method — Ryder Carroll

    The Bullet Journal Method

    Ryder Carroll

    A paper system that keeps tasks, events and notes in one running log, with a monthly habit of rewriting what still matters and letting the rest go. The book is as much about intention as about notebooks.

  • Atomic Habits — James Clear

    Atomic Habits

    James Clear

    On how small, repeatable changes add up over time, and how to shape your surroundings so good habits are easy and bad ones are hard. Less about notes, more about the routines that make any system stick.

Attention and time

  • Four Thousand Weeks — Oliver Burkeman

    Four Thousand Weeks

    Oliver Burkeman

    Starting from the length of an average life, it argues that you will never get everything done, and that accepting this is a relief. Choosing what to leave undone becomes part of the work.

  • Deep Work — Cal Newport

    Deep Work

    Cal Newport

    Makes the case for long, undistracted stretches of concentration, and gives concrete ways to protect them in a week full of meetings and messages.

  • Slow Productivity — Cal Newport

    Slow Productivity

    Cal Newport

    Do fewer things, work at a natural pace, and care about the quality of what you make. A gentler follow-up to Deep Work for anyone tired of busyness as a measure of progress.

  • Essentialism — Greg McKeown

    Essentialism

    Greg McKeown

    On doing less, but better. Tell what is essential apart from what is merely urgent, and say no to the rest without guilt.

← Back to tidl

Philosophy

Why tidl works the way it does

The ideas behind the tool, drawn from the books on the Reading page — and how each one turns into something you can use.

Several of the books on the Reading page keep arriving at the same handful of ideas from different directions: that thinking goes better outside your head than inside it, that a list only helps if it says what to do next, and that attention is the scarce thing, not hours. tidl is built around those ideas. It is also built to leave out the parts that get in their way.

Write it down, in your own words

The Extended Mind makes the case that we think better with notes, sketches and rooms than with memory alone, and How to Take Smart Notes turns that into a habit: short notes in your own words, linked to what you already have. tidl keeps notes as plain markdown files you own rather than rows in someone else’s database. Tags in those files become tasks, [[wikilinks]] join one note to the next, and the file finder (Ctrl/⌘ K) stands in for the link you would otherwise make by hand.

Keep the next action apart from what you are waiting on

Getting Things Done is mostly one move: get every commitment out of your head, then name the next action for each one. That only holds up if “call the dentist” and “waiting for the dentist to call back” are not the same list. tidl keeps them apart — Tasks and Await — so the thing you can do today does not queue behind the thing you cannot.

Choose what to leave undone

Four Thousand Weeks and Essentialism argue toward the same conclusion from opposite ends: you will never finish everything, so deciding what to ignore is part of the work rather than a failure of it. tidl gives that decision a place to live. The Focus horizon — today, three days, a week — sets how far ahead you are willing to look, and suppressing an item keeps it out of the way for good without pretending it was never real.

Protect the one thing that matters now

Deep Work and Slow Productivity are about defending long, undivided attention from a week full of interruptions, and a list that shows everything at once works against that. Focus ranks by what is coming up next and keeps the next thing at the top — events climbing as they approach and outranking tasks once they are imminent — so the list answers “now what” instead of “what about everything”.

That is the whole argument, and it is a small one. tidl is a tool, not a method, and it tries to stay out of the way of the books rather than stand in for them. The Details page shows how the pieces fit together; the Reading page is where the thinking came from.

← Books on notes, attention and time