Install

Install with your agent

The easiest route is to let the agent you already use do the setup. Paste the prompt into Claude Code, Codex or another agent with shell access on the machine that should host sessions. It asks for approval before it installs the login service or any runtime hook.

install prompt
Install pohunek (https://github.com/zajca/pohunek) on this machine and set it up
so you can drive it.

Read these first and follow them, they are the source of truth:
- https://raw.githubusercontent.com/zajca/pohunek/main/docs/install.md
- https://raw.githubusercontent.com/zajca/pohunek/main/docs/knowledge/guides/setup.md
- on macOS also https://raw.githubusercontent.com/zajca/pohunek/main/docs/knowledge/runbooks/install-on-macos.md

Rules:
1. Detect the OS and CPU. Linux x86_64 uses the latest release's
   pohunek-daemon-<version>-x86_64-unknown-linux-gnu.tar.gz (or -musl).
   macOS 14+ on Apple Silicon uses `brew install zajca/pohunek/pohunek`;
   tell me that macOS support is not declared final yet. For anything else,
   stop and tell me.
2. Verify every download with its .sha256 file and, when `gh` is available,
   `gh attestation verify <file> --repo zajca/pohunek`. Stop on any mismatch.
3. Before changing anything, run `pohunek service check --json` (from the
   extracted archive on Linux), show me what will be installed where, and wait
   for my approval. Then install the login service (`./packaging/install-daemon.sh`
   on Linux, `pohunek service install` on macOS). Never pass
   --accept-runtime-loss, --stop-sessions, or --purge. When an upgrade refuses
   with `service_upgrade_sessions_at_risk`, show me the listed sessions and
   reason codes instead of overriding it.
4. Verify with `pohunek doctor --json`, `pohunek service status --json`,
   `pohunek health --json`, and `pohunek host inspect local --json`. Report
   every warning; fix only what I approve.
5. Ask me before running `pohunek integration install --agent <runtime>`: it
   has no dry run and installs a SessionStart hook into that runtime's config
   home (for Claude Code `~/.claude`, for Codex `~/.codex`). Claude Code and
   Codex are served only by their official packages, so their hooks install
   only after the package does. Tell me which runtimes and configuration files
   it will touch and wait for my approval.
6. Run `pohunek agent-skill` and save its output as a skill or instruction file
   in your own harness, so later sessions know how to drive pohunek. Tell me
   where you saved it.
7. If this machine is in a NetBird network, run
   `pohunek host discover --refresh --json` and list the hosts that already run
   pohunek.
8. Never put secrets into commands, logs, or your summary. End with the
   installed version, paths, open warnings, and next steps.

Repeat it on every machine that should host sessions. Remote hosts must join the same NetBird network.

Desktop companion

Install from the companion

Start the desktop companion on a machine without pohunek and it opens a setup screen instead of the session list. It names what is missing: the pohunek command, the login service, or a running daemon, and offers to fix it after showing the exact command and what it touches.

  1. Install the companion. On macOS brew install zajca/pohunek/pohunek-companion; on Linux x86_64 the release archive from pohunekd/pohunek-companion.
  2. Press Install. On Linux it downloads the pohunek release the companion is built against (never "latest") over HTTPS and checks its sha256, and its build attestation when gh is signed in. On macOS it runs brew install zajca/pohunek/pohunek.
  3. Review, then Run. It shows what the installer will write and runs it only after you press Run and confirm. A checksum mismatch refuses the install.
  4. Done. The setup screen gives way to the session list as soon as the daemon answers.
Companion setup screen offering to install pohunek because the pohunek command is missing
pohunek is missing
Companion setup screen after the release was downloaded and verified, showing the checksum evidence and what the installer will write
Verified, ready to run
Companion setup screen after the install finished
Installed
Manual

Install by hand

Linux x86_64

Verified download of the daemon archive (glibc; a -musl archive is published too), then the bundled installer copies the binaries under ~/.local and registers the login service. It needs systemd 255 or newer.

linux
gh release download v0.35.2 -R zajca/pohunek -p 'pohunek-daemon-0.35.2-x86_64-unknown-linux-gnu.tar.gz*'
sha256sum -c pohunek-daemon-0.35.2-x86_64-unknown-linux-gnu.tar.gz.sha256
gh attestation verify pohunek-daemon-0.35.2-x86_64-unknown-linux-gnu.tar.gz --repo zajca/pohunek
tar -xzf pohunek-daemon-0.35.2-x86_64-unknown-linux-gnu.tar.gz
cd pohunek-daemon-0.35.2-x86_64-unknown-linux-gnu
./pohunek service check        # shows what will be installed where
./packaging/install-daemon.sh  # installs the CLI and the login service
pohunek doctor

macOS (Apple Silicon)

macOS 14 or newer, tested on macOS 15. Install from the tap, then install the login service.

macos
brew install zajca/pohunek/pohunek
pohunek service install
pohunek doctor

The full procedure, including archive verification, the login service, upgrades and runtime packages, is in the install guide.