Give your assistant practical tools
AHH checks incoming text and documents, handles mail and Telegram, monitors services, and asks a human when work needs a decision. One command-line program for macOS, Linux and Windows.
A scan can find a threat or report incomplete checks. It does not give an assistant permission to follow instructions in a document or send a message.
The changelog
separates published binaries from upcoming source changes. The upcoming PDF text
workflow checks a saved text copy; its result does not approve the original PDF.
Check ahh scan --help for options available in your installed version.
Read the getting-started guide for setup and everyday tasks. Contributors can use the repository manual (access required).
macOS and Linux
curl -fsSL https://ahh.limbs.dev/install | bash
Lands in ~/.local/bin/ahh. The installer does not touch your shell
startup files; if that directory is not on your PATH, it says so and
leaves the change to you:
export PATH="$HOME/.local/bin:$PATH"
Windows
irm https://ahh.limbs.dev/install.ps1 | iex
Lands in %LOCALAPPDATA%\ahh\bin\ahh.exe and adds that folder to your
user PATH, so open a new terminal before the first ahh call.
Windows has no per-user directory that is already on PATH, so an
instruction on screen would leave every reader with the same manual step. Set
AHH_NO_PATH_UPDATE=1 to keep PATH untouched. Windows PowerShell 5.1,
the version Windows ships with, is enough.
Supported targets
| OS | Architectures |
|---|---|
| macOS | arm64, amd64 — ad-hoc signed, runs on Apple Silicon |
| Linux | arm64, amd64 — static, no libc dependency |
| Windows | arm64, amd64 |
Anything else and the installer refuses rather than guessing an architecture.
Try a local check
This example needs no account and makes no model request:
printf 'Planning note for next week.\n' | ahh scan --no-llm -
Expect UNKNOWN and exit code 2: the local checks ran,
but the model check was deliberately omitted. Incomplete evidence stays visible.
SAFE means every required check covered the supported input;
DANGEROUS means a check found a threat. A result describes the checks,
not whether it is wise to act on the content.
Continue with the first-use guide.
It explains configuration, ahh doctor and the next action for each result.
Automation uses the repository JSON and exit contracts (access required).
What you are trusting
Installing from a URL is trust on first use. Being precise about it:
- The installer downloads the binary and a
.sha256served by the same origin. That catches a corrupted download. It does not catch a compromised origin, because an attacker who can replace one file can replace both. - Installed binaries verify update manifests and downloaded binaries with the channel public key compiled into them. Replacing origin files alone cannot make an installed updater accept an unsigned release.
- Each channel has its own key. The updater checks channel identity and an anti-rollback floor before installing a newer release. A check that finds the installed version already current does not reinstall it.
.sha256 from /bin/ yourself, compare them with
shasum -a 256, and move the file into place. The installer does nothing you
cannot do by hand.Updates
ahh update check
ahh update apply
check contacts the release origin and may record local update state.
apply can replace the installed program after verifying the manifest,
target signature, digest and version. On Windows, replacement finishes through a
helper after the process exits. Use the
update guide
for permissions and recovery.
Beta channel
The staging origin provides prerelease builds signed with a separate key. Use it for validation; use the stable origin above for ordinary installation.
curl -fsSL https://staging.ahh.limbs.dev/install | bash
A stable binary will not accept a beta manifest, so switching channels means installing from the other origin — not flipping a flag.
Overrides
| Variable | Effect |
|---|---|
AHH_BIN_DIR | Install somewhere other than the default directory |
AHH_BASE_URL | Point at another origin. HTTPS is required, except loopback for tests |