hephaestus/docs/how-to/install-heph.md
Erich Blume d36ed18590
Some checks failed
Build / validate (pull_request) Failing after 1m12s
infra: extract heph.nvim into its own forge repo
The Neovim plugin now lives at eblume/hephaestus.nvim (plugin at the repo
root). Remove heph.nvim/ from the monorepo and the build/test wiring that
referenced it:

- Dagger: drop the test_nvim function + the pinned-Neovim NVIM_VERSION
- build.yaml: drop the `dagger call test-nvim` step
- drop the mise run test-nvim task and .stylua.toml + the stylua prek hook
  (no Lua remains in the monorepo)
- install-heph.md: install via a plain lazy.nvim spec pointing at the
  plugin repo over SSH (no more local-dir checkout hack)
- README / AGENTS / heph-nvim.md: note the surface lives in its own repo

The CLI/TUI -> nvim integration is unchanged (they shell out to `nvim`
expecting the heph plugin installed). The v1-prototype tech-spec §14 build
record and prior changelog fragments are left as frozen history.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 22:42:39 -07:00

2.6 KiB

title modified tags
Install heph (and isolate dev) 2026-06-02
how-to

Install heph (and isolate dev)

How to install heph/hephd from the forge and run the heph.nvim plugin, isolated from in-repo development so the two never share data. No prebuilt binaries yet — everything builds from source (works on macOS/arm64, linux/arm64, linux/amd64).

1. Install the binaries from the forge

Build and install heph + hephd to ~/.cargo/bin (on PATH) from a forge ref. Until v1 is tagged, install from the branch:

cargo install --locked \
  --git ssh://forgejo@forge.ops.eblu.me:2222/eblume/hephaestus.git \
  --branch feature/v1-prototype \
  heph hephd

Re-run with --tag vX.Y.Z once a release is cut. This needs forge SSH access (an unlocked 1Password / ssh-agent key).

The installed daemon owns the default paths — socket $XDG_RUNTIME_DIR/heph/hephd.sock, DB $XDG_DATA_HOME/heph/heph.db — i.e. your real data.

2. The Neovim plugin

The plugin lives in its own forge repo, eblume/hephaestus.nvim, with the plugin at the repo root — so lazy.nvim loads it from a bare git URL. Point lazy at the forge over SSH:

-- lazy.nvim spec
{
  url = "ssh://forgejo@forge.ops.eblu.me:2222/eblume/hephaestus.nvim.git",
  config = function()
    require("heph").setup({}) -- connect-only: talks to the daemon you started
  end,
}

The plugin is connect-only — it talks to a hephd you run as a service, it does not start one itself. Start the daemon once:

heph daemon start    # launchd agent (macOS) / systemd user service (Linux)

See run-the-daemon for start/stop/restart/status. Update the plugin with :Lazy update (and after a cargo install upgrade of the binaries, heph daemon restart to pick up the new hephd).

3. Isolate development

In-repo development must not touch the installed store. Run the dev daemon on separate paths and point a dev Neovim at it:

mise run dev   # runs the working-tree hephd on .dev/hephd.sock + .dev/heph.db
# dev Neovim — the plugin reads these envs and targets the dev daemon
HEPH_SOCKET="$PWD/.dev/hephd.sock" HEPH_DB="$PWD/.dev/heph.db" nvim

The installed plugin (no envs) talks to the installed daemon; the dev Neovim talks to the dev daemon. They never share a socket or DB. .dev/ is gitignored.