Skip to content

Latest commit

Β 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Note Vault CLI

A secure, terminal-based note manager with structured vaults, optional per-vault password locking, and full-text search β€” accessible directly from your command line.


Features

  • Vaults: create, open, rename, delete, and list vaults to organize your notes.
  • Per-vault locking: optionally protect a vault with a password (salted scrypt hash). Locked vaults cannot be opened or read until unlocked.
  • Note management: create, view, append, replace, rename, and delete notes inside the current vault.
  • Full-text search: find notes by title or content across the current vault, with context snippets.
  • Persistent indexing: all vaults and notes are tracked in vaults/vault_index.json.
  • Cross-platform: works on Linux, macOS, and Windows.
  • Interactive UI: arrow-key menus, colored tables, and inline prompts powered by rich and InquirerPy.

Getting Started

Requirements

  • Python 3.13+
  • uv (project manager β€” no pip needed)

Setup

git clone https://github.com/pradeep-chetri/note-vault-cli.git
cd note-vault-cli
uv sync

Run

uv run note-vault

or install it globally with uv and run it anywhere:

uv tool install .
note-vault

Tests & linting

uv run pytest          # run the test suite
uv run ruff check .    # lint
uv run ruff format .   # format

Main menu

Option What it does
New Note Create a note in the current vault
Open Note Pick a note, then view / append / replace / rename / delete it
List Notes Show every note in the current vault
Search Notes Find notes by title or content
New Vault Create a vault, optionally password-protected
Open Vault Switch the current vault (unlock when passworded)
List Vaults Show all vaults with their lock/current status
Lock Vault Lock the current vault (sets a password on first use)
Unlock Vault Unlock the current vault for this session
Rename Vault Rename a vault and its directory on disk
Delete Vault Delete a vault and all of its notes
Exit Quit

Security notes

  • Passwords are hashed with scrypt using a random 16-byte salt; the plaintext is never written to disk.
  • Unlocking is session-scoped: restarting the app re-locks every password-protected vault.
  • Note files themselves are stored as plain text on disk. File-level encryption is on the roadmap.

Migrating from the legacy app

Existing data from the original single-file version is read automatically. Legacy vault_index.json files that used Windows-style paths and lacked lock metadata are migrated in place on first run.


Project structure

note-vault-cli/
β”œβ”€β”€ src/note_vault/        # application source
β”‚   β”œβ”€β”€ cli.py             # entry point + menu wiring
β”‚   β”œβ”€β”€ models.py          # Vault / Note models + name sanitization
β”‚   β”œβ”€β”€ storage.py         # index persistence + legacy migration
β”‚   β”œβ”€β”€ vaults.py          # vault CRUD + password locking
β”‚   β”œβ”€β”€ notes.py           # note CRUD + search
β”‚   └── ui.py              # rich/inquirer helpers
β”œβ”€β”€ tests/                 # pytest suite
β”œβ”€β”€ vaults/                # user data (gitignored)
└── pyproject.toml

The data directory defaults to ./vaults and can be overridden with the NOTE_VAULT_DIR environment variable.


Roadmap

  • File-level encryption (encrypt note contents with a key derived from the vault password).
  • Text-based user interface (TUI) with a dedicated terminal app.
  • Vault backup / export to Markdown or ZIP.

About

πŸ“ Note Vault CLI β€” A terminal-based note manager for developers and CLI enthusiasts. Create password-protected vaults, manage notes with intuitive menus, and search everything instantly. Lightweight, cross-platform, and built with Python.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages