(R)age encrypted note-taking CLI app
  • Python 99.1%
  • Makefile 0.9%
Find a file
2025-09-04 08:16:19 +00:00
.forgejo/workflows chore(deps): update https://code.forgejo.org/actions/setup-python action to v6 2025-09-04 08:16:19 +00:00
halig chore: update deps 2024-09-23 13:04:28 +02:00
tests feat: add git pull subcommand 2024-09-06 20:51:03 +02:00
.gitignore feat: prettify errors 2023-04-06 17:30:21 +02:00
.pre-commit-config.yaml chore: update deps 2024-09-07 16:26:15 +02:00
LICENSE Initial commit 2022-08-10 16:12:59 +00:00
Makefile feat: add git status subcommand 2024-09-10 22:54:24 +02:00
pdm.lock chore: update deps 2024-09-23 13:04:28 +02:00
pyproject.toml chore: update deps 2024-09-07 16:26:15 +02:00
README.md feat: add git push subcommand 2024-09-04 18:57:27 +02:00
renovate.json Add renovate.json 2024-09-05 11:27:56 +02:00
sample.env feat: move project from poetry to pdm, rewrite from scratch and add 2023-04-01 12:37:10 +02:00

halig

Build status PyPI PyPI - License PyPI - Python Version pdm-managed

(R)age encrypted note-taking CLI app.

halig opens, using your favorite $EDITOR, an in-memory copy of a file and upon save-and-exit, it encrypts the new contents into an age file that you can store, relatively safe, anywhere.

Features

  • Simple notebooks management with paths autocompletion
  • Passphrase-less, fully-encrypted notes, compatible with existing SSH keys
  • No external age binary needed
  • Almost all age advantages, like having multiple keys for encryption and decryption
  • Remote (HTTP) public keys import: e.g: github.com/<username>.keys

Install

pipx install halig # or pip

Setup TLDR

set -e
ssh-keygen -t ed25519
mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/halig"
cat << EOF > "${XDG_CONFIG_HOME:-$HOME/.config}/halig/halig.yml"
---
notebooks_root_path: ~/Documents/Notebooks
identity_paths:
  - ~/.ssh/id_ed25519
recipient_paths:
  - ~/.ssh/id_ed25519.pub
  - https://github.com/<username>.keys
  - https://gitlab.com/<username>.keys
EOF

Usage TLDR

halig edit some_notebook     # edit today's note relative to <notebooks_root_path>/some_notebook
halig edit some_notebook/foo # edit  <notebooks_root_path>/some_notebook/foo.age
halig notebooks              # list current notebooks
halig git commit
halig git push