Command line tool to manage a Zettelkasten
Remove modified logic
Refactor backlinks logic
Only create git commits on 'sync' and 'new' commands


browse  log 



You can also use your local clone with git send-email.


Command line tool to manage a Zettelkästen, written in zig.


After cloning this repository, you can install zet under $PREFIX/bin by running the following from the project root:

make PREFIX=$PREFIX install

If PREFIX is not specified, zet will be installed under zig-cache/bin/.

If you use macOS and Homebrew you can use

brew install --HEAD gpanders/tap/zet


Notes are stored in the directory represented by the environment variable $ZETTEL_DIR. If $ZETTEL_DIR is unset, it defaults to $HOME/.local/share/zet/.

Notes are created with

zet new TITLE

The file name of the new note will be the given title prepended with a unique ID and a .md extension. The title can contain spaces, but be sure to wrap it in quotes so your shell doesn't split it.

If you keep your notes in a git repository, zet new will automatically commit your new note with the title as the commit message. There is (currently) no way to disable this behavior.

To list all of your existing notes, use

zet list

This will print the title of each existing note along with its ID.

For a full list of available commands, use zet help. For more information on a specific command, use zet help COMMAND.

For commands that take arguments, the argument can be a note ID, title, or file name (with or without the extension) of an existing note. The output of any zet command can be used with other commands, allowing commands to be composed. For example, to open all notes containing the tag foo, use

zet tag foo | zet open

Most commands can be abbreviated. Use zet help CMD for more information.