Install
One binary. h5i unifies web development, formal verification
with Lean 4, and red-teaming around a composable Rust framework.
Linux / macOS:
curl -L https://github.com/h5i-dev/h5i/releases/download/v0.5.1/h5i-v0.5.1-<TARGET>.tar.gz | tar -xz
sudo mv h5i /usr/local/bin/Windows: download the .zip, extract h5i.exe, and add it to your PATH.
The browser
h5i browser open https://example.com
h5i browser snapshot
h5i browser requests # what it asked for, and what was refused
h5i browser audit # the whole session, afterwardsA session is Chromium, driven through
agent-browser
(npm install -g agent-browser), and captured at a proxy this
binary runs: every request is policy-checked and written down
before it moves.
The websec workbench
h5i-websec is a separate archive, and installing it is a
deliberate act:
curl -L https://github.com/h5i-dev/h5i/releases/download/v0.5.1/h5i-websec-v0.5.1-<TARGET>.tar.gz | tar -xz
h5i plugin install websec --from ./h5i-websecIt holds no privilege of its own: every verb runs the h5i browser
verbs a person would type, through the same policy, budget and
receipts.
The recon ledger
h5i-recon is the other plugin, and it arrives the same way:
curl -L https://github.com/h5i-dev/h5i/releases/download/v0.5.1/h5i-recon-v0.5.1-<TARGET>.tar.gz | tar -xz
h5i plugin install recon --from ./h5i-reconIt records what a target exposes, where each candidate came from,
and which stored message confirmed it. Discovery only: a URL read
out of a bundle stays a candidate until a request answers for it,
and nothing here is called a vulnerability.
Security regression tests
h5i-test replays repository-owned attack flows and hands their
evidence to repository-owned external oracles:
curl -L https://github.com/h5i-dev/h5i/releases/download/v0.5.1/h5i-test-v0.5.1-<TARGET>.tar.gz | tar -xz
h5i plugin install test --from ./h5i-test
h5i test .h5i-tests/tests --target http://localhost:3000It writes JSON and JUnit. OpenAPI coverage is report-only unless
--min-coverage is explicitly supplied.
Every request it makes is checked against an allowlist — every
request and every redirect hop — and written to the log before any
bytes move. A request that is not in h5i browser requests did not
happen. What a box adds, with --in, is that the record gains a
witness outside the browser; on a bare host that part is not
claimed.
Available targets
| Target | Platform |
|---|---|
x86_64-unknown-linux-musl
| Linux x86_64 (static, glibc-free) |
aarch64-unknown-linux-musl
| Linux arm64 (static, glibc-free) |
aarch64-apple-darwin
| macOS Apple Silicon (arm64) |
x86_64-pc-windows-msvc
| Windows x86_64 |
Intel Macs have no published build: Rosetta 2 translates x86_64 to
arm64, not the reverse, so the aarch64-apple-darwin archive will
not run there. Build from source instead:
cargo install --git https://github.com/h5i-dev/h5i
Each archive is accompanied by a .sha256 checksum file.
What's Changed
- Add svg by @Koukyosyumei in #708
- Koukyosyumei patch 1 by @Koukyosyumei in #707
- Koukyosyumei patch 1 by @Koukyosyumei in #709
- Revise README to streamline application logic description by @Koukyosyumei in #710
- Simplify HTTP security testing description by @Koukyosyumei in #711
- install.sh: fall back to a user directory when sudo refuses by @Koukyosyumei in #712
- install.sh: install into ~/.local/bin by default, without sudo by @Koukyosyumei in #713
- restyle calculator proof svg to match h5i ui by @Koukyosyumei in #714
- Improve style by @Koukyosyumei in #716
- improve slides by @Koukyosyumei in #717
- Update README with UI section and reordering by @Koukyosyumei in #718
- Rename 'UI' section to 'Dashboard' by @Koukyosyumei in #719
- Improve svg by @Koukyosyumei in #720
- Eliminate duplicate h5i compatibility statement by @Koukyosyumei in #721
- improve svg by @Koukyosyumei in #722
- Koukyosyumei patch 1 by @Koukyosyumei in #723
- add animation by @Koukyosyumei in #724
- h5i-app-std: add a proven HashMap without new axioms by @Koukyosyumei in #715
- App engine perf by @Koukyosyumei in #725
- docs/app: point Conduit links to h5i-app-bench; fix the reads test pa… by @Koukyosyumei in #726
- docs: browser proxy covers sites the engine cannot read by @Koukyosyumei in #727
- Change project title in README.md by @Koukyosyumei in #728
- browser: decode zstd, store proxy-observed bodies decoded, replay wit… by @Koukyosyumei in #729
- Websec zstd by @Koukyosyumei in #731
- skill/websec: document the blind-oracle workflow by @Koukyosyumei in #732
- App gpu by @Koukyosyumei in #730
- Generalize GPU backend inputs and validate batch outputs by @Koukyosyumei in #733
- Koukyosyumei patch 1 by @Koukyosyumei in #734
- Update README.md by @Koukyosyumei in #735
- Update README.md by @Koukyosyumei in #736
- Revise installation instructions in README.md by @Koukyosyumei in #737
- Update section title from 'Test' to 'Hack' by @Koukyosyumei in #739
- Optimize read subqueries by @Koukyosyumei in #738
- Improve doc update by @Koukyosyumei in #740
- Websec match all and error ux by @Koukyosyumei in #741
- Improve demo flow around one board app by @Koukyosyumei in #742
- Improve front by @Koukyosyumei in #743
- remove our own browser, and focus on using proxy-mode by @Koukyosyumei in #744
- websec/browser: nudge toward
--aswhen a replay goes out unauthenti… by @Koukyosyumei in #745 - bump h5i to v0.5.1 and h5i-app to 0.1.2 by @Koukyosyumei in #748
Full Changelog: v0.5.0...v0.5.1