A plain text note-taking assistant https://zk-org.github.io/zk/
  • Go 99.7%
  • Makefile 0.3%
Find a file
2026-06-18 10:59:14 +02:00
.github Only trigger release action when pushing version tags 2026-06-08 13:11:43 +02:00
cmd/gentestdata Add helper to generate testdata 2026-02-13 18:41:12 +01:00
docs document --broken-links feature 2026-06-08 12:56:14 +02:00
internal Add tests for links in frontmatter 2026-06-18 10:59:14 +02:00
tests Add tests for links in frontmatter 2026-06-18 10:59:14 +02:00
.gitattributes Include version in release tarballs (#556) 2025-09-07 10:14:11 +02:00
.gitignore Revert "Migrate static site builder to Zensical (#713)" 2026-05-06 21:59:41 +02:00
.prettierrc Sphinx docs gh-pages implementation (#453) 2024-09-13 10:56:45 +02:00
_config.yml Revert "Migrate static site builder to Zensical (#713)" 2026-05-06 21:59:41 +02:00
CHANGELOG.md Update changelog 2026-06-18 10:59:14 +02:00
CONTRIBUTING.md Revert "Migrate static site builder to Zensical (#713)" 2026-05-06 21:59:41 +02:00
go.mod Parallel update of links (#735) 2026-06-13 19:52:36 +02:00
go.sum Parallel update of links (#735) 2026-06-13 19:52:36 +02:00
LICENSE Initial commit 2020-12-23 16:07:53 +01:00
main.go Expand ~ and env vars in paths passed to --notebook-dir and --working-dir (#733) 2026-06-07 08:42:24 +02:00
main_test.go Expand ~ and env vars in paths passed to --notebook-dir and --working-dir (#733) 2026-06-07 08:42:24 +02:00
Makefile Revert "Migrate static site builder to Zensical (#713)" 2026-05-06 21:59:41 +02:00
README.md Remove line referring to old outbound link symbol in preceding text 2026-06-09 13:57:50 +02:00
VERSION.txt Include version in release tarballs (#556) 2025-09-07 10:14:11 +02:00

zk logo

A plain text note-taking assistant

Screencast

Description

zk is a command-line tool helping you to maintain a plain text Zettelkasten or personal wiki.

Looking for a quick usage example?

Or want to see it in action? Checkout Shivan's video, Note-taking System ALL Programmers Should Consider.

Highlights

See the changelog for the list of upcoming features waiting to be released.

What zk is not

  • A note editor.
  • A tool to serve your notes on the web for this, there are some static site solutions.

Install

Check out the latest release for pre-built binaries for macOS and Linux (zk was not tested on Windows).

Homebrew

brew install zk

Or, if you want the latest state of main:

brew install --HEAD zk

Nix

zk is available in nixpkgs and has a Home Manager module.

If you want to run zk without permanently installing it:

nix run nixpkgs#zk

Or, if you want to create an ephemeral shell with zk available:

nix shell nixpkgs#zk

To permanently install zk on NixOS at the system level, include nixpkgs.zk in environment.systemPackages in your system configuration (/etc/nixos/configuration.nix by default):

environment.systemPackages = [
  # Your other packages here
  nixpkgs.zk
];

If you are using Home Manager, instead of installing for all users on the system, you can permanently install and configure zk just for your user via the Home Manager module. Add this to your Home Manager configuration:

programs.zk.enable = true;

# Modify `${XDG_CONFIG_HOME}/zk/config.toml` through this attr
programs.zk.settings = {
  # Add your own configuration settings for zk here
};

Alpine Linux

zk is currently available in the testing repositories:

apk add zk

Arch Linux

You can install the zk package from the official repos.

sudo pacman -S zk

MacPorts

sudo port install zk

Build from scratch

Make sure you have a working Go 1.21+ installation, then clone the repository:

git clone https://github.com/zk-org/zk.git
cd zk
make build

The latest state of main can be considered the stable pre-release state. To use the absolute latest state (bugs to be expected) and to contribute:

git checkout dev
make build

On macOS / Linux

$ make
$ ./zk -h

Contributing

We warmly welcome issues, PRs and discussions.

Be sure when contributing to branch from dev, not main.

Here you can read some useful info for contributing to zk.