v0.40.1
Install
GUI (macOS) — brew install --cask dinstein/agenthub/agenthub-gui
installs the app and the CLI together, ready to launch. Or download
the .dmg, which contains the CLI too: the app is ad-hoc signed but
not notarized, so on first launch right-click → Open, or run
xattr -cr /Applications/AgentHub.app. The cask clears that flag for
you — its pinned sha256 is what vouches for the download instead.
GUI (Windows, experimental) — download the .zip for your
architecture (amd64 or arm64), unzip anywhere, and keep
agenthub-gui.exe and agenthub.exe in the same folder. These
binaries are not code-signed: SmartScreen will warn on first
run (More info → Run anyway). The Microsoft Edge WebView2 runtime
is required; Windows 11 already has it, and most Windows 10
machines receive it through Edge. See the README.txt inside the zip
for details. The Windows support cross-compiles and is unit-tested
but has never run on a real Windows machine — treat surprises as
expected and report them.
CLI, without Homebrew (macOS + Linux) — one command, and the
same command updates:
curl -fsSL https://raw.githubusercontent.com/dinstein/agent-hub/main/scripts/install.sh | sh
It needs no Xcode Command Line Tools (brew does), installs into
~/.local/bin unless --prefix says otherwise, and verifies the
download against the sha256 this release pins. Take this path or
Homebrew, not both: each puts a binary where it believes it is the
only owner.
CLI only, by hand — download the .tar.gz for your platform and
put agenthub somewhere on your $PATH.
Verify downloads against checksums-*.txt.
What's Changed
- tidy-harness: name both unproven depguard rules, not one by @dinstein in #233
- e2e: pin the data plane's refusals and its third discovery mode by @dinstein in #234
- tidy-cli: one spelling for the "no server" refusal by @dinstein in #235
- e2e: the profile layer refuses what it withholds, and what it withdrew by @dinstein in #236
- tidy-ctlapi: retire what the removed overlay protocol left behind by @dinstein in #237
- tidy-gateway: one spelling per fact, and an appendix that meant the opposite by @dinstein in #239
- fakemcp: script the protocol generation, and cover MCP 2026-07-28 over stdio by @dinstein in #238
- tidy-api/oauthflow: one body per resolution, not one per caller by @dinstein in #240
- tidy-docs: citations that name something the tree does not have by @dinstein in #241
- tidy-clients/skills: one scanner, one list by @dinstein in #242
- tidy-calllog: one stamp for a record's provenance by @dinstein in #243
- tidy-confops: one transaction for the per-field server setters by @dinstein in #244
- tidy-secrets: one sequence for a vault mutation by @dinstein in #245
- tidy-gateway: a description is not an input to executing a call by @dinstein in #246
- tidy-gui: what three removals left behind in the frontend by @dinstein in #247
- tidy-buildrules: one skip set for the four rules that walk the tree by @dinstein in #248
- tidy-flows: the write path names a function that does not exist by @dinstein in #249
- tidy-architecture: the result budget bounds an answer, not an error by @dinstein in #250
- tidy-skill: five commands stream NDJSON, not four by @dinstein in #251
- tidy-cli: the stable-code list is partial and the exit table is a word short by @dinstein in #252
- tidy-httpbridge: the package's front door describes a retired stance by @dinstein in #253
- tidy-catalog: the curated directory is mostly hosted now by @dinstein in #254
- tidy-gateway: the frozen gate chain is two gates, not four by @dinstein in #255
- tidy-tier: ToolTier has two readers, and the second is why {} matters by @dinstein in #256
- tidy-docs: three cross-package citations that no longer resolve by @dinstein in #257
Full Changelog: v0.40.0...v0.40.1