Personal note-taking system with structured storage and optional encryption.
- Python 100%
| debian | ||
| hisa | ||
| hisa-ashell | ||
| man | ||
| .gitignore | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
hisa
Personal note-taking system with structured storage and optional encryption.
Model
One note per day:
YYYY/MM/YYYY-MM-DD.dn
Properties:
- plain UTF-8 text
- filesystem is the index
- no database, no hidden state
- atomic writes
Encrypted note:
YYYY/MM/YYYY-MM-DD.dn.gpg
via the GNU Privacy Guard.
Scope
Fits:
- terminal-based workflows
- grep-based retrieval
- long-lived plain text notes
- optional encryption
Not a fit:
- sync system
- GUI / rich text editor
- query engine or database
Variants
hisa
- system
gpg - no dependencies
- Unix-like systems
hisa_ashell
- iOS a-Shell mini
- PGPy (pure Python)
- no external binaries
.asckey handling (no keyring)- compatible encrypted format
Install
Debian
cd ~/Downloads && \
curl -L -o hisa-latest.deb https://codeberg.org/duras/hisa/releases/download/v0.6.0/hisa_0.6.0_all.deb && \
sudo dpkg -i hisa-latest.deb
Python
curl -L -o hisa.tar.gz https://codeberg.org/duras/hisa/archive/main.tar.gz && \
tar -xzf hisa.tar.gz && \
cd hisa-main && \
pip install .
Usage
hisa
hisa append "note"
hisa search term
Commands
open
hisa open
hisa open -1
hisa open 2026-04-17
hisa open -- +7
append
hisa append "text"
hisa append -d -1 "yesterday"
cat file | hisa append -
- = stdin
Encryption
hisa -c open
hisa -c append "secret"
hisa -c show
Notes:
- uses system
gpg - append is memory-only
- editor uses temp file
Search / tags
hisa search error
hisa search todo -i
hisa tags
- literal match (not regex)
- encrypted notes excluded
Listing
hisa list
hisa list -n 0
hisa stats
Order: filename (date), not mtime.
Export
hisa export ~/backup
hisa export ~/backup --encrypt
Creates archive; optional encryption avoids plaintext export.
Dates
YYYY-MM-DD absolute
0 today
-1 yesterday
+7 future
Future dates are rejected.
Environment
| var | meaning |
|---|---|
| HISA_DIR | notes dir (default: ~/Documents/Notes) |
| EDITOR | editor fallback: nano / vi / ed |
| HISA_GPG_KEY | encryption recipient |
Behavior
- one file per day
- plain + encrypted may coexist
- atomic writes
- no index layer
Exit codes
| code | meaning |
|---|---|
| 0 | ok |
| 1 | error |
| 2 | not found |
| 3 | invalid input |
| 4 | external failure |
Limits
- encrypted notes not searchable
- depends on
gpg
Docs
man hisa- https://codeberg.org/duras/hisa
License
ISC