GPGNotes - A CLI note-taking tool with GPG encryption, tagging, and Git sync
Project description
GPGNotes
A CLI note-taking tool with GPG encryption, automatic tagging, full-text search, and Git synchronization.
Features
- Markdown Notes - Write notes in plain markdown with YAML frontmatter
- GPG Encryption - Every note is encrypted individually with GPG
- Full-Text Search - Fast SQLite FTS5-powered search across all notes
- Auto-Tagging - Intelligent tag generation using TF-IDF
- Git Sync - Automatic synchronization with private GitHub repositories
- Daily Notes - Captain's Log style quick entries with summaries (docs)
- Note Templates - Built-in templates (meeting, project, bug, journal, research) with custom template support
- Version History - Git-based version tracking with history, diff, and restore commands
- Markdown Rendering - Rich terminal preview with formatted display
- URL Import - Web clipper to import content from URLs
- Pagination - Interactive pagination for list and search results
- AI Enhancement - Optional LLM-powered note refinement (docs)
- Import/Export - Support for PDF, DOCX, RTF formats (docs)
Installation
Prerequisites
- Python 3.11 or higher
- GPG (GnuPG) installed on your system
- Linux:
sudo apt install gnupg(Debian/Ubuntu) - macOS:
brew install gnupg
- Linux:
Install from PyPI
pip install gpgnotes
With optional dependencies:
pip install gpgnotes[llm] # AI enhancement
pip install gpgnotes[import] # PDF/DOCX import/export
Install from source
git clone https://github.com/oscarvalenzuelab/GPGNotes.git
cd GPGNotes
pip install -e .
Quick Start
1. Initialize
notes init
This guides you through:
- Selecting a GPG key
- Testing encryption
- Configuring your editor
- Setting up Git sync (optional)
Don't have a GPG key? Create one:
gpg --full-generate-key
2. Create a note
notes new "My First Note"
3. Search and manage
notes search "keyword"
notes list
notes open <note-id>
notes sync
Command Reference
| Command | Description |
|---|---|
notes new "Title" |
Create a new note |
notes new --template meeting |
Create note from template |
notes list |
List all notes |
notes list --preview |
List with content preview |
notes list --page-size 10 |
List with custom pagination |
notes recent |
Show 5 most recent notes |
notes search "query" |
Full-text search |
notes search --tag work |
Search by tag |
notes open <id> |
Open note by ID |
notes open "title" |
Open by title (fuzzy match) |
notes open --last |
Open most recent note |
notes show <id> --render |
Display note with formatting |
notes preview <id> |
Rich markdown preview |
notes history <id> |
Show version history |
notes diff <id> --from <commit> |
Compare versions |
notes restore <id> --version <commit> |
Restore previous version |
notes template list |
List all templates |
notes template show <name> |
Preview a template |
notes tags |
List all tags |
notes delete <id> |
Delete a note |
notes sync |
Sync with Git |
notes config --show |
Show configuration |
notes daily "entry" |
Quick daily log entry (docs) |
notes daily --time "entry" |
Entry with timestamp |
notes today |
Open today's daily note |
notes yesterday |
Open yesterday's note |
notes daily show |
View today's entries |
notes daily summary --month |
Generate monthly summary |
notes enhance <id> |
AI enhancement (docs) |
notes import file.pdf |
Import file (docs) |
notes import <url> |
Import from URL (web clipper) |
notes clip <url> |
Web clipper shortcut |
notes export <id> |
Export note (docs) |
Interactive Mode
Run notes without arguments for interactive mode with:
- Tab completion for note titles
- Command history (Up/Down arrows)
- Quick search by typing
Security
- GPG Encryption: All notes encrypted with AES256
- Local-first: Your data stays on your machine
- Private repos: Git sync for private repositories only
- Encrypted secrets: API keys stored with GPG encryption
Documentation
- Configuration & Note Format
- Daily Notes (Captain's Log)
- AI Enhancement
- Import & Export
- Spell Checking
License
Apache License 2.0 - see LICENSE for details.
Note: This is an early release. Always backup your notes!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gpgnotes-0.2.4.tar.gz.
File metadata
- Download URL: gpgnotes-0.2.4.tar.gz
- Upload date:
- Size: 61.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2eda6fa4a4672ae3e38a6b95d2bbc1b1c87652a52a2c2366a0da4f055dc3d812
|
|
| MD5 |
c28b370ebaa6e778377b85f5f9eeae6d
|
|
| BLAKE2b-256 |
48a702c8d203bb687ecbc6fe6a416c75275d8b22fd95f1740d5eb724f5bb7909
|
Provenance
The following attestation bundles were made for gpgnotes-0.2.4.tar.gz:
Publisher:
publish.yml on oscarvalenzuelab/GPGNotes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gpgnotes-0.2.4.tar.gz -
Subject digest:
2eda6fa4a4672ae3e38a6b95d2bbc1b1c87652a52a2c2366a0da4f055dc3d812 - Sigstore transparency entry: 769094480
- Sigstore integration time:
-
Permalink:
oscarvalenzuelab/GPGNotes@abd796ba6cb0b661fdf086a9d9b47d4cdc351728 -
Branch / Tag:
refs/tags/v0.2.4 - Owner: https://github.com/oscarvalenzuelab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abd796ba6cb0b661fdf086a9d9b47d4cdc351728 -
Trigger Event:
release
-
Statement type:
File details
Details for the file gpgnotes-0.2.4-py3-none-any.whl.
File metadata
- Download URL: gpgnotes-0.2.4-py3-none-any.whl
- Upload date:
- Size: 60.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d0b64bd1c81a5dc6ba7511e1f99ed1f7e16bdbb657d1aa0942bc52b5a5b1717
|
|
| MD5 |
47c41726f6a5ab6dfb25cef2e8a6c35c
|
|
| BLAKE2b-256 |
dcbef8aa55823f127f0c92c7864b5d313228400459954182763aa112a4f7eedf
|
Provenance
The following attestation bundles were made for gpgnotes-0.2.4-py3-none-any.whl:
Publisher:
publish.yml on oscarvalenzuelab/GPGNotes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gpgnotes-0.2.4-py3-none-any.whl -
Subject digest:
3d0b64bd1c81a5dc6ba7511e1f99ed1f7e16bdbb657d1aa0942bc52b5a5b1717 - Sigstore transparency entry: 769094484
- Sigstore integration time:
-
Permalink:
oscarvalenzuelab/GPGNotes@abd796ba6cb0b661fdf086a9d9b47d4cdc351728 -
Branch / Tag:
refs/tags/v0.2.4 - Owner: https://github.com/oscarvalenzuelab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abd796ba6cb0b661fdf086a9d9b47d4cdc351728 -
Trigger Event:
release
-
Statement type: