A CLI-first note-taking tool for macOS, built in Zig. No Electron, no browser tabs, no context switching — just capture ideas and get reminded, all from the terminal.

Uses macOS system SQLite for zero-dependency storage, fires native macOS notifications via osascript for reminders, and exports a C ABI shared library (libzot.dylib) for Swift app integration.

GitHub

Screenshots

TUI note list

TUI add new note

TUI edit note

Features

  • TUI mode — Full interactive terminal UI with keyboard-driven navigation, forms, search, and project filtering
  • CLI mode — Add, list, search, update, delete, and mark notes done from the command line
  • Reminders — Set due dates with recurring schedules (every hour, every day)
  • macOS notifications — Native notification delivery via osascript with optional launchd background scheduler
  • Export / Import — Full JSON export and import for backup and migration
  • Swift / C ABI — Shared library (libzot.dylib) for embedding in native macOS apps
  • SQLite storage — Single-file database at ~/.zot_notes.db, no external dependencies

Quick Start

zot -n "buy groceries"                          # add a note
zot -n "deploy v2" -p myapp -d tomorrow         # with project + due date
zot -n "standup" -d "2026-05-01 09:00" --every hour  # recurring reminder
zot list                                        # see all notes
zot done 3                                      # mark complete
zot notify --install                            # enable macOS notifications
zot tui                                         # launch interactive TUI

Due Date Formats

Format Example Description
YYYY-MM-DD 2026-05-01 ISO date
MM/DD/YYYY 05/01/2026 US date
YYYY-MM-DD HH:MM 2026-05-01 14:00 Date with time (09:00–17:00)
today   Today’s date
tomorrow   Tomorrow’s date
eow   End of week (Friday)
eom   End of month (last working day)

TUI Keybindings

Key Action
j / Move selection down
k / Move selection up
Space Toggle done / undone
n Open Add New Note form
e Open Edit Note form
x Delete selected note
s Search notes
p Filter by project
c / Esc Clear active filter / search
q Quit

Architecture

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│   CLI        │────▶│   db.zig     │────▶│   SQLite    │
│  main.zig    │     │  (storage)   │     │  ~/.zot_    │
│  notify.zig  │     └──────────────┘     │  notes.db   │
└─────────────┘            ▲              └─────────────┘
                           │
┌─────────────┐            │
│  lib.zig    │────────────┘
│  (C ABI)    │
│  libzot.dylib
└─────────────┘
       ▲
       │
┌─────────────┐
│  Swift App  │
└─────────────┘

Design

  • Zig over Rust/Go — Zero-overhead C interop without a runtime. The C ABI library is a natural byproduct.
  • SQLite over flat files — ACID transactions, indexed queries, single-file database.
  • osascript over UserNotifications — No app bundle, entitlements, or code signing required.
  • launchd over cron — Native macOS process management surviving reboots.

Try It

git clone https://github.com/NaveenGurram/zot.git
cd zot
zig build -Doptimize=ReleaseSafe
sudo cp zig-out/bin/zot /usr/local/bin/