00 DOCUMENTATION · INSTALL

Installing Knot

How to install Knot on macOS and Debian/Ubuntu, from download to first synced save. There is no Windows build yet (section 03).

macOS · Linux · Windows · Verify a download · First save

01 MACOS

macOS

RequiresmacOS 13 (Ventura) or newer
CPUIntel natively · Apple Silicon via Rosetta 2
Ships withdaemon, desktop app, CLI, Tor; self-contained, nothing to install first

1. Download

Get the disk image from the latest release (also on the download page). Checking the checksum first is optional: steps below.

2. Install

Open the .dmg, read the bundled INSTALL.txt, and drag Knot into Applications.

3. First open: the one-time Gatekeeper step

Knot is signed but not yet Apple-notarized, so macOS blocks the first open. The xattr command removes the quarantine flag before the first open. The Open Anyway button in System Settings only shows up after macOS has blocked Knot once. Clear it once, any of these ways:

Most reliable, any macOS version

xattr -dr com.apple.quarantine "/Applications/Knot.app"
  • Or: open Knot once (it gets blocked), then System Settings → Privacy & Security → "Open Anyway".
  • Older macOS (pre-Sequoia): right-click Knot → Open → Open.

4. First run

Open Knot. The three-step welcome shows your new device identity (no account, no password: an Ed25519 key generated on your machine) and ends on Protect a folder. Pick any folder; every save in it becomes a real git commit. The daemon starts automatically with the app and keeps running in the background.

+ Updating · uninstalling · where things live

Update: download the new .dmg and drag Knot to Applications again, replacing the old copy. Your projects, identity, and pairings are untouched: they live outside the app bundle.

Uninstall: quit Knot, delete /Applications/Knot.app. Your repositories stay where they are, as plain folders with git history that any git tool can read.

Data locations: identity and settings under ~/Library/Application Support/knot/; your code stays exactly where your folders are.

02 LINUX

Linux (Debian / Ubuntu)

RequiresDebian/Ubuntu on x86_64, glibc 2.31+ (Ubuntu 20.04+, Debian 11+)
Dependsgit (installed automatically by apt if missing)
Ships withdaemon, desktop app, CLI, Tor, on-device AI runtime; self-contained

1. Download

Get the package from the latest release, then optionally verify the checksum.

2. Install (one command)

sudo apt install ./knot-vcs-amd64.deb

The leading ./ tells apt this is a local file; apt resolves the git dependency for you. Double-clicking the .deb will not install it. Current Ubuntu has no GUI that installs local .deb files. App Center is snap-only, and that affects every vendor's .deb.

3. Start the daemon

systemctl --user daemon-reload
systemctl --user enable --now knot-vcs

The package registers the service for every user; this turns it on for yours, now and on every login.

4. First run

Launch Knot from your app launcher (or run knot-app). The same three-step welcome as macOS. Or, from a terminal in any folder:

knot solo

turns on watch + auto-commit + sync for that folder.

+ Updating · uninstalling · health check · other distros

Update: download the newer .deb and run sudo apt install ./… again. apt upgrades in place; your daemon, projects, and pairings carry over.

Uninstall: sudo apt remove knot-vcs. The package owns nothing inside your project folders; each one is still a git repository afterwards, readable with plain git.

Health check: knot doctor.

  ✓ daemon reachable
  ⚠ Tor onion not published yet (still bootstrapping, or started without --tor)
  ○ no LAN detected (Tor-only)

Each line is a separate check. On a healthy machine you only see the first one. The Tor warning is normal in the first minutes after a cold start.

Other distros (Fedora, Arch, …): not packaged yet. The .deb is the only Linux artifact today; a snap/flatpak is under consideration. If you need Knot on another distro now, say which one.

03 WINDOWS

Windows

Not yet available. Since September 2026 the command line and the daemon build and run on Windows 11, and Tor starts there. What has not happened yet is a commit travelling from a Windows machine to another one, which is the check the macOS and Linux builds each passed, on the MacBook and on the HP EliteBook, before release. When Windows passes it, the download will appear here and in the changelog. The desktop app does not run on Windows yet.

04 VERIFY A DOWNLOAD

Verify your download

Every release publishes its SHA-256 checksums. Comparing takes one command and proves the file you hold is byte-for-byte the file in the release.

macOS

shasum -a 256 ~/Downloads/Knot-macos.dmg

Linux

sha256sum ~/Downloads/knot-vcs-amd64.deb
Current release checksums
macOS8eb0f6d2d57340e379c878b63077a1a4cb37963e9d7d44764e6a7c1deab9aa84
Linux7e64c9aebca4b57a9e4e9ec0bff2e517ace921681b7da1779aa7c03d6223f938
Build-stamped filenames (Knot-0.1.0+20260826.2319.3fff7c87a-macOS.dmg · knot-vcs_0.1.0+20260826.2319.3fff7c87a434_amd64.deb) are attached to the release too, the same bytes under names that record which build they came from.

There is no CI: these builds are compiled on one laptop and uploaded to GitHub Releases by hand.

05 YOUR FIRST SYNCED SAVE

Check that it worked

  1. Protect a folder (the welcome's last step, or knot solo in a terminal).
  2. Open any file in that folder, in any editor. Change something. Hit save.
  3. Watch the dashboard. A debounce runs first, so it is not instant. What lands is a real commit signed by your device identity, and plain git log can read it.

To sync with a second machine: install Knot there too, then pair the two with a one-time code from the Devices tab. After that the saves cross on their own: on a shared LAN the two machines talk straight to each other, while over Tor it is a lot slower. On both routes the bytes are Noise-encrypted and each side checks the other's Ed25519 key before anything moves. When both sides edited and the histories diverged, Knot merges them itself. The merge commit is built deterministically, from sorted parents and a fixed identity, so both machines arrive at the same commit id. It stops if the same lines changed on both sides, or if the incoming side would overwrite edits you have not committed. The push says push refused: not a fast-forward, the other side waits under refs/knot-incoming/, and knot incoming shows you what is parked.

Stuck? Write in with your OS version and what the terminal printed.

← Knot · Downloads · Changelog