Repository navigation
Releases: Davidb3l/Hayvenhurst-dev
Release list
v0.0.9
Hayvenhurst v0.0.6
The daemon now outlives the session that started it
Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.
v0.0.6 makes the daemon a proper background service.
hayven daemon startdetaches by default. It spawns the daemon as its
own detached process, waits for the health check, prints the pid and the
projects it serves, and returns. Exiting your shell or session no longer
kills it. Use--foregroundfor the old behavior (CI, supervisors).- Starting in a second repo joins the running daemon instead of failing
with "address already in use" — the repo is registered live and served
immediately. - SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
stale pidfiles are cleaned automatically on start. - The Claude Code plugin auto-revives the daemon: a session-start hook
starts it (detached) in any Hayvenhurst repo where it isn't running.
Safe sharing: every write is project-addressed
One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.
- Mutating CLI commands (
claim,release,node body,sync,summarize)
now address their own project explicitly; the daemon refuses writes naming a
project it doesn't serve instead of falling back to the primary. hayven syncidentifies the peer project before exchanging anything.
Syncing against a peer daemon that serves several projects requires
--peer-project <alias>(single-project peers are picked automatically), so
two different repos can never cross-contaminate each other's history.- The live-sync WebSocket pins each connection to its selected project, and
cleanly disconnects peers of a project that is removed from the daemon.
Releases are now actually signed
A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.
Upgrade
/plugin update hayvenhurst # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary # fetches this release's binary
hayven daemon stop && hayven daemon start # restart into the detached daemonSingle-repo setups need nothing else; existing indexes are untouched.
What's Changed
- test: reap detached test daemons on Windows too by @Davidb3l in #10
- fix(windows): no console windows from the daemon; name what locks hayven.exe by @Davidb3l in #9
- release: v0.0.9 by @Davidb3l in #11
Full Changelog: v0.0.8...v0.0.9
v0.0.8
Hayvenhurst v0.0.6
The daemon now outlives the session that started it
Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.
v0.0.6 makes the daemon a proper background service.
hayven daemon startdetaches by default. It spawns the daemon as its
own detached process, waits for the health check, prints the pid and the
projects it serves, and returns. Exiting your shell or session no longer
kills it. Use--foregroundfor the old behavior (CI, supervisors).- Starting in a second repo joins the running daemon instead of failing
with "address already in use" — the repo is registered live and served
immediately. - SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
stale pidfiles are cleaned automatically on start. - The Claude Code plugin auto-revives the daemon: a session-start hook
starts it (detached) in any Hayvenhurst repo where it isn't running.
Safe sharing: every write is project-addressed
One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.
- Mutating CLI commands (
claim,release,node body,sync,summarize)
now address their own project explicitly; the daemon refuses writes naming a
project it doesn't serve instead of falling back to the primary. hayven syncidentifies the peer project before exchanging anything.
Syncing against a peer daemon that serves several projects requires
--peer-project <alias>(single-project peers are picked automatically), so
two different repos can never cross-contaminate each other's history.- The live-sync WebSocket pins each connection to its selected project, and
cleanly disconnects peers of a project that is removed from the daemon.
Releases are now actually signed
A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.
Upgrade
/plugin update hayvenhurst # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary # fetches this release's binary
hayven daemon stop && hayven daemon start # restart into the detached daemonSingle-repo setups need nothing else; existing indexes are untouched.
What's Changed
- ci(release): bump gh-action-sigstore-python to v3.5.0 (HAYV-11) by @Davidb3l in #2
- feat(install): Windows installers: Git Bash/MSYS/Cygwin + native install-hayven.ps1 (HAYV-15) by @Davidb3l in #3
- docs(community): GitHub page polish for the open source program (HAYV-16) by @Davidb3l in #4
- feat(projects): registry management CLI + auto-relocation of moved repos (HAYV-12) by @Davidb3l in #5
- feat(worktree): per-worktree overlay indexes so reads inside a Sirius worktree see its code (HAYV-13) by @Davidb3l in #6
- fix(install): Windows findings from a real Win 11 test (HAYV-15) by @Davidb3l in #7
- release: v0.0.8 by @Davidb3l in #8
Full Changelog: v0.0.7...v0.0.8
v0.0.7
Hayvenhurst v0.0.6
The daemon now outlives the session that started it
Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.
v0.0.6 makes the daemon a proper background service.
hayven daemon startdetaches by default. It spawns the daemon as its
own detached process, waits for the health check, prints the pid and the
projects it serves, and returns. Exiting your shell or session no longer
kills it. Use--foregroundfor the old behavior (CI, supervisors).- Starting in a second repo joins the running daemon instead of failing
with "address already in use" — the repo is registered live and served
immediately. - SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
stale pidfiles are cleaned automatically on start. - The Claude Code plugin auto-revives the daemon: a session-start hook
starts it (detached) in any Hayvenhurst repo where it isn't running.
Safe sharing: every write is project-addressed
One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.
- Mutating CLI commands (
claim,release,node body,sync,summarize)
now address their own project explicitly; the daemon refuses writes naming a
project it doesn't serve instead of falling back to the primary. hayven syncidentifies the peer project before exchanging anything.
Syncing against a peer daemon that serves several projects requires
--peer-project <alias>(single-project peers are picked automatically), so
two different repos can never cross-contaminate each other's history.- The live-sync WebSocket pins each connection to its selected project, and
cleanly disconnects peers of a project that is removed from the daemon.
Releases are now actually signed
A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.
Upgrade
/plugin update hayvenhurst # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary # fetches this release's binary
hayven daemon stop && hayven daemon start # restart into the detached daemonSingle-repo setups need nothing else; existing indexes are untouched.
What's Changed
New Contributors
Full Changelog: v0.0.6...v0.0.7
v0.0.6
Hayvenhurst v0.0.6
The daemon now outlives the session that started it
Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.
v0.0.6 makes the daemon a proper background service.
hayven daemon startdetaches by default. It spawns the daemon as its
own detached process, waits for the health check, prints the pid and the
projects it serves, and returns. Exiting your shell or session no longer
kills it. Use--foregroundfor the old behavior (CI, supervisors).- Starting in a second repo joins the running daemon instead of failing
with "address already in use" — the repo is registered live and served
immediately. - SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
stale pidfiles are cleaned automatically on start. - The Claude Code plugin auto-revives the daemon: a session-start hook
starts it (detached) in any Hayvenhurst repo where it isn't running.
Safe sharing: every write is project-addressed
One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.
- Mutating CLI commands (
claim,release,node body,sync,summarize)
now address their own project explicitly; the daemon refuses writes naming a
project it doesn't serve instead of falling back to the primary. hayven syncidentifies the peer project before exchanging anything.
Syncing against a peer daemon that serves several projects requires
--peer-project <alias>(single-project peers are picked automatically), so
two different repos can never cross-contaminate each other's history.- The live-sync WebSocket pins each connection to its selected project, and
cleanly disconnects peers of a project that is removed from the daemon.
Releases are now actually signed
A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.
Upgrade
/plugin update hayvenhurst # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary # fetches this release's binary
hayven daemon stop && hayven daemon start # restart into the detached daemonSingle-repo setups need nothing else; existing indexes are untouched.
Full Changelog: v0.0.5...v0.0.6
v0.0.5
Hayvenhurst v0.0.5
Multiple repos from one daemon
Until now a Hayvenhurst daemon served exactly one repository — the directory it
was started in. Install it in two repos and they collided on the same port; you
could only see whichever one the daemon happened to start on.
v0.0.5 makes one daemon serve any number of repos, switchable on the fly.
hayven initregisters each project automatically. Manage the set with
hayven daemon register <path>,hayven daemon projects, and
hayven daemon unregister <alias|path>.- One daemon serves them all. Start it once; it opens every registered
project's index. The graph viewer gains a project switcher in the nav,
and every API endpoint accepts?project=<alias>to select a repo
(defaulting to the primary — the one you started the daemon in). - Single-repo setups are unchanged. The switcher stays hidden, the default
behavior is identical, and nothing new is required.
Try it
hayven daemon register /path/to/repo-a
hayven daemon register /path/to/repo-b
cd /path/to/repo-a && hayven daemon start # serves BOTH; viewer at :7777Open http://localhost:7777 and use the project dropdown to switch. Or hit the
API directly:
curl localhost:7777/api/health # lists every project + the primary
curl 'localhost:7777/api/stats?project=repo-b' # answer for a specific repoUpgrading
Pre-release (0.x) — build from source (Bun 1.3+ and a Rust toolchain), or
reinstall via the Claude Code plugin's binary installer. No migration needed;
existing per-project indexes are picked up as-is.
Full changelog: CHANGELOG.md.
Full Changelog: v0.0.4...v0.0.5
v0.0.4
Hayvenhurst v0.0.4
The fastest way to keep an always-fresh, private structural index of your codebase — no model, no embeddings, no setup.
A pre-release (0.x): expect breaking changes in every 0.x until v1.0.
What Hayvenhurst is
Hayvenhurst builds and maintains a structural index of a codebase — entities, call/import edges, and runtime trace coverage — backed by SQLite, with zero embeddings, zero model, and zero external services. It runs anywhere a Rust binary and SQLite run, indexes in well under a second, and never sends your code anywhere. The advantage is speed + zero-config + determinism, not "smarter than grep."
The measured wedge (committed, reproducible harnesses)
| Property | Hayvenhurst | Embedding-based indexer |
|---|---|---|
| Cold index (hono, 362 files) | 0.65 s | 35.6 s |
| Cold index (gin, Go) | 0.23 s | — |
| Branch switch (re-parse only the diff) | ~48 ms | re-syncs + re-embeds |
| Revisit a seen branch | 1 ms (cached) | 0.41 s |
| Dependencies | none | model + torch + vector store |
Because the index is embedding-free, building it is a parse + a SQLite write — sub-second cold, instant on a cached branch, private by construction. We win on speed, freshness, and privacy — embeddings still beat us on fuzzy semantic recall.
Reproduce on any repo: bench/wedge-demo.sh <repo-url>.
What's new in 0.0.4
- Per-test runtime coverage +
hayven affected-tests. A trace collector records, per test, the entities that test executed;affected-tests <symbol|--changed files>returns the tests for a change — useful as a fail-fast test ordering aid and as a precise "which tests actually exercise this symbol" query. The collector batches flushes, records coverage on every call (complete even at the default sample rate), and excludes nested helpers from being test contexts. - Fail-fast test ordering (
affected-tests --order, APFD-optimized) and fleet memory (hayven remember/recall,/api/memory) — durable, graph-keyed notes shared across agents and sessions. - Branch-aware per-branch indexing matured — each branch caches its own index; a re-visit is a 1 ms read, never a re-embed.
Install
Build from source (bun install, cargo build --release), or install the Claude Code plugin and hayven init in any repo. Cross-platform tarballs are produced by the release workflow.
Reproduce the wedge in under a minute
export HAYVEN_NATIVE_BIN="$PWD/native/target/release/hayven-native"
git clone --depth 50 https://github.com/honojs/hono /tmp/hv-switch
bun bench/branch-switch-cost.ts /tmp/hv-switch 3Full Changelog: https://github.com/Davidb3l/Hayvenhurst-dev/commits/v0.0.4