Natel

The contact editor your CardDAV server is missing.

A lightweight web app for your existing CardDAV server. Browse and edit the contacts you already sync with your phone and desktop.

Natel on a desktop screen: the contact list grouped by letter on the left, with a phone number or email on each row, and Caitlyn Kiramman's page on the right, with Call, Text and Email buttons, her phone, email, birthday and group.
Caitlyn Kiramman's page on a phone, with an Edit button at the top.

What it does

Search
Names, phone numbers, email addresses and organisations.
Edit
Create, edit and delete contacts.
Photos
Add a photo and crop it. Large photos are scaled down.
Groups
Filter by group and change who is in it.
Address books
Switch between books and move a contact to another.
Import and export
Import a .vcf file into a book, or export a whole book.
Phone and desktop
English or French, light or dark, keyboard shortcuts, installable as an app.

Your data

  • Fields it doesn't edit are kept. Properties, parameters and groups the editor doesn't show are written back on save. Round-trip tests cover this.

  • Changes from other devices aren't overwritten. If a contact changed on your phone after Natel read it, saving shows a conflict instead of replacing it.

  • Tested against real servers. The end-to-end suite runs in CI against Baïkal, Radicale and Xandikos. Nextcloud and other servers aren't in it: see compatibility.

  • Your password stays off disk. Natel checks it against your server and keeps it in memory for the session.

  • No tracking. No analytics, and no requests to third-party servers.

Self-host

  • 26 MB Compressed image
  • ~16 MB RAM at idle

Measured on linux/amd64, 15 October 2026.

Docker

In a compose.yaml, set CARDDAV_URL to your CardDAV server's origin:

services:
  natel:
    image: ghcr.io/kewindousse/natel:0.3.0
    environment:
      CARDDAV_URL: https://dav.example.com
    ports:
      - "127.0.0.1:8080:8080"
docker compose up -d

Then open http://localhost:8080 and sign in with your CardDAV account. For HTTPS, reverse proxies and other options, see the deployment guide.

Bare metal

You need Node 24 with pnpm, Go 1.27 and Caddy 2.11.7 or later.

  1. Build a release tag: pnpm build for the app, go build for natel-session.
  2. Copy dist/ into a folder of its own, never the repository, with the Caddyfile and natel-session.
  3. Run Caddy under natel-session in its systemd service, with CARDDAV_URL set, then restart Caddy.

Every command and setting: running without Docker.

Alpha software. Export your address books, or back up your server, before your first edit.