Skip to main content

Encrypted, extensible command line note app with sync backends

Project description

Notr

Encrypted, lightning-fast CLI notes with a modern TUI experience and pluggable sync backends.

Highlights

  • End-to-end encryption – every note is encrypted with AES-256-GCM before touching disk.
  • Rich CLI UX – colourful output, fuzzy search, notebook-aware completions, and ergonomic shortcuts powered by Click + Rich.
  • Intelligent sync – per-note merges with UUID tracking, conflict-safe tombstones, and optional auto-sync.
  • Extensible architecture – ships with local filesystem and WebDAV backends; new backends slot in via a single interface.

Installation

pipx install notr
# or
pip install notr

Upgrade with pipx upgrade notr (or pip install --upgrade notr).

Quick Start

# Initialise the secure store and select a backend
notr init

# Add your first note (opens $EDITOR when text omitted)
notr add Work

# Browse notebooks and notes
notr view          # notebooks
notr view Work     # notes in “Work”

# Search across everything (fuzzy search included)
notr find meeting
notr ffind "meetng"

# Merge local/remote state (auto-sync can do this for you)
notr sync

Every command provides --help, and short aliases exist (for example notr a for notr add).

Everyday Commands

Command Purpose
notr add [NOTEBOOK] [TEXT] Create a note (opens $EDITOR if TEXT omitted; --file seeds from a file).
notr view [NOTEBOOK] [ID] List notebooks, list notes, or render a note as pretty Markdown.
notr edit NOTEBOOK ID Edit an existing note in your editor.
notr move FROM ID TO Move a note between notebooks.
notr find [-b NOTEBOOK] QUERY Case-insensitive search within a notebook or globally.
notr ffind [-b NOTEBOOK] QUERY Fuzzy search powered by RapidFuzz.
notr sync Merge local and remote changes with spinner + summary output.
notr backend login/logout/status Manage backend credentials and health.
notr login/logout Cache or forget the decrypted master password for the current session.
notr changemaster Rotate the master password without re-encrypting notes manually.

Sync & Security

  • The master password never leaves your machine. A PBKDF2-derived key wraps a randomly generated master key used for note encryption.
  • Backends only see encrypted SQLite pages. Credentials live in the OS keyring when available (with a locked-down file fallback).
  • Sync compares notebooks/notes with stable UUIDs, merging only what changed. Tombstones ensure deletions propagate safely. The first sync against an older database migrates it automatically.
  • Enable automatic syncing after mutating commands by setting "autosync": true in ~/.config/notr/config.json.

Configuration

  • Config file: ~/.config/notr/config.json (override via NOTR_CONFIG_PATH).
  • Encrypted database: ~/.local/share/notr/notr.db (override via NOTR_DB_PATH).
  • Tweak defaults within the options section (editor, viewer, timestamps, auto-sync, conflict handling).

Built-in Backends

  • local – keeps an encrypted copy in a directory you control (perfect for offline backups or sync tools like Syncthing).
  • webdav – syncs against any WebDAV endpoint using PUT/GET/HEAD, with graceful error messaging and spinner feedback.

To add a backend, subclass Backend in notr/backends/ and register it in notr/backends/base.py.

Shell Completion

Generate completion scripts and source them from your shell startup:

notr completion bash > ~/.config/notr/notr.bash
notr completion zsh  > ~/.config/notr/notr.zsh
notr completion fish > ~/.config/fish/completions/notr.fish

Restart your shell (or exec $SHELL) to activate completions.

Contributing & Support

License

Released under the MIT License. Crafted with care by Kim Schulz and the community.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notr-1.0.0.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

notr-1.0.0-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file notr-1.0.0.tar.gz.

File metadata

  • Download URL: notr-1.0.0.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for notr-1.0.0.tar.gz
Algorithm Hash digest
SHA256 72f18483a106eddcfb3e496edc5550ce88602f0b22bfee2e35ecad82729a164f
MD5 df1231dc31be60ef528c8aa3c44ac7d2
BLAKE2b-256 6ccc4c376baad474fe6221837e5ede96d37d60f440de39ed69b338e34bd9357d

See more details on using hashes here.

Provenance

The following attestation bundles were made for notr-1.0.0.tar.gz:

Publisher: python-publish.yml on kimusan/notr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file notr-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: notr-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 30.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for notr-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f6d89095a9036ffb42310dc9c4e865057aad3a0d2c77aa0d39483d80b6929c8c
MD5 5575b8cae9522e2f2245a89422662c41
BLAKE2b-256 4c6be2ab9fe87604b56b6a8627be76c1fa1c1ed538212e2d1a53563d2a608851

See more details on using hashes here.

Provenance

The following attestation bundles were made for notr-1.0.0-py3-none-any.whl:

Publisher: python-publish.yml on kimusan/notr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page