Skip to content

About

Live, local code graph for AI coding agents: who calls what, what breaks, which tests to run. One daemon + CLI, nothing leaves your machine.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Hayvenhurst

A persistent, trace-augmented code graph for your repository — one local daemon, queried through the hayven CLI.

CI release license status languages platforms

Site · Quickstart · Why Hayvenhurst · Integration · Architecture · Contributing

Part of Sothis, the local-first suite for running a fleet of AI coding agents on one repo (suite repo).

Why

The questions you (or your coding agent) ask all day are structural: who calls this? what breaks if I change it? which tests can this change actually reach? grep can't answer them — it finds text, not edges — so the workflow degenerates into grep-and-read-everything: paging dozens of files into a context window to answer a one-line question. And when several agents edit the same repo in parallel, nothing warns them they're about to collide until the merge.

Hayvenhurst keeps a live graph of your code instead: every function, class, call, and import, augmented with runtime traces of what actually executed. One Rust binary parses (Python, TypeScript, JavaScript, Rust, Go) and watches for changes; a Bun daemon serves the graph over a CLI and HTTP API, and runs an entity-scoped claim board so parallel agents flag conflicts before editing. Everything is local — SQLite plus markdown in .hayven/, no embeddings, no GPU, no cloud, nothing leaves your machine.

Install

Prebuilt binaries for macOS (arm64, x64), Linux (x64-glibc, arm64), and Windows (x64) ship with every GitHub release. The install script detects your platform, downloads the matching tarball, verifies its sha256 and its Sigstore signature (pinned to this repo's release workflow), and installs hayven + hayven-native into ~/.local/bin. macOS, Linux, and Windows under Git Bash / MSYS2 / Cygwin:

curl -fsSL https://raw.githubusercontent.com/Davidb3l/Hayvenhurst-dev/main/plugin/scripts/install-hayven.sh | sh

Windows PowerShell (5.1 or 7), no Git Bash needed:

irm https://raw.githubusercontent.com/Davidb3l/Hayvenhurst-dev/main/plugin/scripts/install-hayven.ps1 -OutFile install-hayven.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-hayven.ps1 -AddToPath

Signature checks need cosign (or the sigstore Python tool) on your machine; without one the installers warn and fall back to the checksum, and --require-signature / -RequireSignature makes that fatal. Prefer to verify by hand? Grab the tarball, its .sha256 and its .sigstore.json from the releases page, run shasum -a 256 -c <tarball>.sha256 and cosign verify-blob --bundle <tarball>.sigstore.json --certificate-identity https://github.com/Davidb3l/Hayvenhurst-dev/.github/workflows/release.yml@refs/tags/<tag> --certificate-oidc-issuer https://token.actions.githubusercontent.com <tarball>, and put the extracted hayven on your PATH. Or build from source with Bun 1.3+ and a Rust toolchain — see docs/QUICKSTART.md.

Quickstart

hayven doctor                  # check Bun runtime, native binary, SQLite FTS5, hardware

cd /path/to/your/repo
hayven init                    # create .hayven/, index the repo (sub-second on ~50K-line repos)
hayven daemon start            # serve the HTTP API + graph viewer on :7777 (detached; `hayven daemon stop` to stop)

That's it — the daemon's file watcher keeps the index fresh as you edit, and each git branch caches its own index so switching is near-instant.

Usage tour

Find things — full-text search over the graph, then walk it:

$ hayven query "claim board" --limit 3
# Search: claim board
## `runClaim`         — id: `cli/claim/runClaim`
## `claim`            — id: `cli/claim`
## `claimsRoutes`     — id: `daemon/routes/claims/claimsRoutes`

$ hayven neighbors daemon/routes/claims/claimsRoutes --depth 2   # callers + callees, N hops
$ hayven refs cli/claim/runClaim                                 # exhaustive callers ∪ importers

Measure blast radius — what transitively depends on a symbol:

$ hayven impact daemon/routes/claims/claimsRoutes --depth 2
# Impact (transitive blast radius) of `daemon/routes/claims/claimsRoutes`
30 dependent(s) within 2 hop(s) — 1 direct, 1 direct call site(s).
- [depth 1] `daemon/server/buildApp`
- [depth 2] `daemon/server/buildMultiProjectApp`
- [depth 2] `daemon/tests/claims.test/makeApp`
...

Select tests — the tests a change can actually break, fusing the static graph with runtime traces (run your suite once with HAYVEN_TRACE=1 and a trace collector to add trace edges; --order gives fail-fast ordering):

$ hayven affected-tests daemon/routes/claims/claimsRoutes
# Affected tests for `daemon/routes/claims/claimsRoutes`
55 test(s) to run — 0 trace, 55 static
- [static] `daemon/tests/claims.test/makeApp`  (depth 2, run: daemon/tests/claims.test.ts)
...

Feed agents precisely — a minimal line-exact slice (entity + real dependencies) instead of whole files:

hayven context daemon/routes/claims/claimsRoutes

Coordinate parallel agents — claims are scoped to entity IDs, not files, so two agents can safely edit different functions in the same file:

hayven claim auth/session/validate --intent "tighten TTL refresh"   # registered (exit 0)
hayven claim auth/session/validate --intent "rename validator"      # overlap → rejected (exit 1)
hayven claim auth/session/login    --intent "change return shape"   # graph-adjacent → conflict verdict (exit 3)
hayven release <claim_id>                                           # done — free the scope

Also shipped: hayven traces <id> (runtime call history), remember/recall (durable graph-keyed notes shared across agents), view (SVG graph viewer at localhost:7777), plan-lanes (partition a change-set into conflict-disjoint lanes), mcp and proxy (agent integration surfaces), and sync <peer_url> (serverless CRDT peer sync). hayven help lists everything; most commands take --json for machine-readable output.

Using it from Claude Code

The first-party plugin ships an Agent Skill so Claude Code reaches for hayven instead of grepping, plus a command that installs the binary (same checksum-verified script as above):

/plugin marketplace add Davidb3l/Hayvenhurst-dev
/plugin install hayvenhurst@hayvenhurst
/hayvenhurst:install-binary

Running the whole Sothis suite? Install Hayvenhurst through the suite marketplace instead (/plugin marketplace add Davidb3l/Sothis, then /plugin install hayvenhurst@sothis; sirius@sothis and catryna@sothis come from the same marketplace, and the sothis CLI does all of it for you). The standalone hayvenhurst@hayvenhurst route above stays valid; pick one, not both.

Other agents can use the MCP server, HTTP API, or CLI directly.

Performance

The index is embedding-free — building it is a parse plus a SQLite write — so it's fast enough to never think about: cold index of hono (362 files) in 0.65 s, a branch switch re-parses only the git diff (~48 ms), revisiting a cached branch is a 1 ms read, and the idle watcher rounds to zero CPU. Reproduce these on your machine with the committed harness in bench/ (bench/wedge-demo.sh).

Documentation

Status, license, contact

Pre-release (0.x) — expect breaking changes in every 0.x release until v1.0; see CHANGELOG.md. MIT licensed (LICENSE); all runtime dependencies are permissive. Security reports and contact: dev@hayvenhurst.dev (SECURITY.md). Contributions welcome with signed-off commits (CONTRIBUTING.md); questions and help: SUPPORT.md.

Part of the Sothis suite

Hayvenhurst is the code graph of Sothis (repo), five local-first tools for running many coding agents against one repository. Each stands alone; together they compose through plain CLIs and hooks:

  • Sirius Forester: the foreman. Claims work, locks the code it touches, gates on affected tests.
  • Hayvenhurst (this repo): the live code graph behind those locks and test selections.
  • Ametrite: the local issue tracker and knowledge base.
  • Catryna Wikinelli: docs that the code cannot silently outgrow.
  • PingMyBell: rings the human when a decision is needed.

Named after Michael Jackson's family home in Encino, California, in honor of bringing light to overlooked places. This project is a small drop in that ocean.

About

Live, local code graph for AI coding agents: who calls what, what breaks, which tests to run. One daemon + CLI, nothing leaves your machine.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages