Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1952 commits
Select commit Hold shift + click to select a range
60e4844
Convert commit value to atom using hb_util:atom
PeterFarber Dec 11, 2025
d1bbd35
Fix: Add leading slash to push downstream path
PeterFarber Dec 11, 2025
f037d6b
Merge pull request #584 from permaweb/feat/decoded-raw-json
samcamwilliams Dec 11, 2025
c108ea2
chore: refactor
samcamwilliams Dec 11, 2025
eadfa2c
chore: reformat
samcamwilliams Dec 11, 2025
22541f9
Merge pull request #586 from permaweb/fix/push-path-leading-slash
samcamwilliams Dec 11, 2025
31c8e12
Merge pull request #585 from permaweb/chore/commit-request-atom
samcamwilliams Dec 11, 2025
4d18247
fix: handle sub-paths when reading from local cache in gateway store
PeterFarber Dec 11, 2025
f231c5c
refactor: extract path value logic and centralize cache error handling
PeterFarber Dec 11, 2025
01ca4b3
Merge pull request #587 from permaweb/fix/gateway-cache-subpath-handl…
PeterFarber Dec 11, 2025
1112a38
impr: use default commitment spec opt on uploads of downstream pushed…
NickJ202 Dec 11, 2025
4445162
Merge pull request #588 from permaweb/impr/default-comm-spec-ans104
PeterFarber Dec 12, 2025
cd32d1e
feat: Invariant-based testing framework for AO-Core and HyperBEAM.
samcamwilliams Dec 14, 2025
ec538bf
Merge pull request #589 from permaweb/feat/invariants
samcamwilliams Dec 14, 2025
af8a070
fix: Allow exporting device keys with `-`.
samcamwilliams Dec 14, 2025
1db7a55
fix: `dev_hook` test function names
samcamwilliams Dec 14, 2025
05615b5
Merge pull request #590 from permaweb/fix/title-case-device-keys
samcamwilliams Dec 14, 2025
4b184f5
fix: explicitly overwrite dedup trie rather than set over keys
jfrain99 Dec 15, 2025
4b07476
chore: revert needless line bloat
samcamwilliams Dec 16, 2025
1ebce67
Merge pull request #591 from permaweb/fix/dedup-set-explicit
samcamwilliams Dec 16, 2025
8034330
fix: link assignments to signed ID, not unsigned ID
samcamwilliams Dec 16, 2025
f160e1e
Merge pull request #593 from permaweb/fix/assignment-linking
samcamwilliams Dec 16, 2025
2fbe137
impr: allow addition of user defined salt to `Nearest` routing strategy
samcamwilliams Dec 17, 2025
e0e99b8
fix: remove `commitment-ids` from recursive ID verification calls
samcamwilliams Dec 17, 2025
7335a7b
Merge pull request #594 from permaweb/impr/nearest-routing-salt
samcamwilliams Dec 17, 2025
f5fec7a
Merge pull request #595 from permaweb/fix/single-id-verification
samcamwilliams Dec 17, 2025
5e7ae14
impr: add `hashpath` as additional salt to `Nearest` strategy
samcamwilliams Dec 18, 2025
bcce0b3
Merge pull request #597 from permaweb/impr/nearest-distribution
samcamwilliams Dec 18, 2025
469adc0
impr: Recursive device inheritance
samcamwilliams Dec 20, 2025
184a8ae
Merge pull request #599 from permaweb/feat/device-inheritance
samcamwilliams Dec 20, 2025
ab35acf
impr: tidy noisy event groups and improve prometheus management
samcamwilliams Dec 21, 2025
cb47f60
chore: do not log `debug_linkify`
samcamwilliams Dec 21, 2025
788a2b8
chore: do not print for every cached result serve
samcamwilliams Dec 21, 2025
f71e188
impr: timing and logging improvements for `~process@1.0`
samcamwilliams Dec 21, 2025
f427225
feat: add `top`
samcamwilliams Dec 21, 2025
ca810b0
test: Remove mock server usage
speeddragon Dec 30, 2025
8aea3a7
feat: Tooling for message corruption identification
samcamwilliams Jan 5, 2026
68eec6b
Merge pull request #604 from permaweb/feat/message-verification-tooling
samcamwilliams Jan 6, 2026
272f893
impr: unify message unset code paths
samcamwilliams Jan 6, 2026
35704b2
fix: do not include the `commitments` key in the return from `~messag…
samcamwilliams Jan 6, 2026
da364b4
wip: process state consistency issues
samcamwilliams Jan 6, 2026
6c4a268
wip: debugging setup for cache inconsistency
samcamwilliams Jan 6, 2026
5527f17
fix: set and unset `/snapshot` correctly in `~process@1.0`
samcamwilliams Jan 7, 2026
d8352eb
fix: do not `hb_ao:get` in `~scheduler@1.0` event
samcamwilliams Jan 7, 2026
29634f5
Merge pull request #606 from permaweb/fix/message-integrity-checks
samcamwilliams Jan 7, 2026
d28acf3
impr: timing and logging improvements for `~process@1.0`
Lucifer0x17 Jan 7, 2026
a70dd5d
Merge pull request #607 from permaweb/impr/process
samcamwilliams Jan 7, 2026
a2b2844
Merge pull request #600 from permaweb/chore/tidy-events
samcamwilliams Jan 7, 2026
06c6d79
feat: improve commitment logging in `hb_format`
samcamwilliams Jan 7, 2026
7367208
wip: denote committed keys with symbol in `hb_format` prints
samcamwilliams Jan 7, 2026
9378a13
impr: make committed key formatting optional
samcamwilliams Jan 7, 2026
e80f051
impr: label device and path keys when committed; abstract formatting …
samcamwilliams Jan 7, 2026
cf57344
Merge pull request #608 from permaweb/impr/commitment-event-logs
samcamwilliams Jan 7, 2026
21abdf7
impr: add support for running a subsection of message integrity checks
samcamwilliams Jan 7, 2026
2cb0d77
Merge pull request #609 from permaweb/impr/message-integrity-topics
samcamwilliams Jan 7, 2026
dec0933
fix: preserve `content-type` key in `httpsig@1.0` bundled messages
samcamwilliams Jan 13, 2026
4d657e4
Merge pull request #610 from permaweb/fix/httpsig-nested-content-type
PeterFarber Jan 14, 2026
f96622b
fix: paranoid when fetching a tx id
speeddragon Jan 16, 2026
48932e8
impr: Test
speeddragon Jan 23, 2026
76638b9
Merge pull request #613 from permaweb/fix/paranoid
jfrain99 Jan 26, 2026
cc6adc7
Merge pull request #563 from permaweb/use_store_routes
jfrain99 Jan 26, 2026
a1207b6
impr: Return 500 with information on message processing error
speeddragon Dec 18, 2025
2acb18b
wip: surface definitive `failure` responses from ID reads on stores
samcamwilliams Dec 18, 2025
f3a92e2
feat: Support failure fallback
speeddragon Dec 19, 2025
0b73eef
impr: hb_store_gateway failure test
speeddragon Dec 19, 2025
0eb04fe
Merge branch 'edge' of github.com:permaweb/HyperBEAM into NickJ202/da…
NickJ202 Jan 27, 2026
1c05310
chore: update latest hyperbuddy bundle
NickJ202 Jan 27, 2026
967396a
Merge pull request #598 from permaweb/feat/500_on_processing_message
jfrain99 Jan 28, 2026
d45fc24
fix: hb_http_multi parallel requests
speeddragon Dec 31, 2025
57876cb
fix: Timeout when is is_admissible returns false and process is removed
speeddragon Jan 7, 2026
814ce18
fix: Failure in processing one request doesn't mean to exit from the …
speeddragon Jan 13, 2026
9af8ef0
chore: small styling fix
jfrain99 Jan 28, 2026
c1b2b78
Merge pull request #602 from permaweb/fix/parallel_requests
jfrain99 Jan 28, 2026
a3579a1
Merge pull request #533 from permaweb/speeddragon/improv-docs
jfrain99 Jan 28, 2026
e3ad7af
Merge pull request #545 from permaweb/speeddragon/disable_formatting-1
jfrain99 Jan 28, 2026
876c0eb
Merge branch 'edge' of github.com:permaweb/HyperBEAM into NickJ202/da…
NickJ202 Jan 29, 2026
a70c8e7
fix: use opts vs wallet
PeterFarber Jan 29, 2026
6cb1e6b
Merge pull request #621 from permaweb/feat/greenzone-fix
PeterFarber Jan 29, 2026
e029a97
chore: update latest bundle
NickJ202 Jan 29, 2026
91c1e09
Merge branch 'edge' of github.com:permaweb/HyperBEAM into NickJ202/da…
NickJ202 Jan 30, 2026
6bf113d
chore: write signed message to cache before schedule request
NickJ202 Feb 4, 2026
6846094
impr: linkify trie after set to avoid large inmemory balance tables
jfrain99 Feb 4, 2026
b96605e
fix: add opts to trie tests
jfrain99 Feb 4, 2026
5b90a98
impr: cache signed messages before scheduling
NickJ202 Feb 4, 2026
7bcd322
Merge pull request #624 from permaweb/impr/trie-linkify
jfrain99 Feb 4, 2026
9aea742
chore: write signed message to cache before schedule request
NickJ202 Feb 4, 2026
4be37dc
impr: cache signed messages before scheduling
NickJ202 Feb 4, 2026
7e01863
chore: remove unnecessary verify assignment
NickJ202 Feb 4, 2026
9a9cccc
chore: rebase edge
NickJ202 Feb 4, 2026
5538395
Merge pull request #625 from permaweb/impr/cache-messages-before-sche…
jfrain99 Feb 4, 2026
06a8327
wip: basic location device implementation
samcamwilliams Feb 8, 2026
cd570bf
feat: `location@1.0` device implementation
samcamwilliams Feb 8, 2026
de550ef
chore: documentation; formatting
samcamwilliams Feb 8, 2026
38611a9
impr: allow node operator to specify `url` explicitly
samcamwilliams Feb 8, 2026
5a691ca
impr: add unsigned call test
samcamwilliams Feb 8, 2026
b06e753
Merge pull request #633 from permaweb/feat/location
samcamwilliams Feb 8, 2026
6feeeb6
fix: turn off the default `http_error` topic when running dev_bundler…
JamesPiechota Feb 9, 2026
3c9008d
test: fix dev_arweave:get_bad_tx_test
JamesPiechota Feb 10, 2026
3a614d8
fix: don't strip unsigned commitments in ans104 bundles
JamesPiechota Nov 20, 2025
6a2cfa5
fix: fix infinite recursion when printing logs within dev_codec_ans10…
JamesPiechota Feb 10, 2026
c51afd3
fix: speed up dev_bundler tests
JamesPiechota Dec 2, 2025
02b6b33
fix: ans104_wasm_test
speeddragon Dec 31, 2025
2a0a69f
fix: treat a client_error as 400 rather than 200
JamesPiechota Feb 10, 2026
4d441f0
Merge pull request #634 from permaweb/fix/bundler-tests-20260209
samcamwilliams Feb 11, 2026
8ca0216
sketch: changes and priorities in the `~router@1.0` and `hb_http_mult…
samcamwilliams Feb 11, 2026
08b0abe
hack: expose `~message@1.0` keys in `info/0`. Call and exclude from Lua
samcamwilliams Feb 1, 2026
005804e
feat: add `gzip@1.0` device
samcamwilliams Feb 1, 2026
414105e
impr: if `~lua@5.3a` message has a Lua content-type, load its body.
samcamwilliams Feb 1, 2026
d004a57
impr: allow scheduling of base message in `~scheduler@1.0`
samcamwilliams Feb 2, 2026
d2931cc
fix: cron error events
samcamwilliams Feb 3, 2026
2afca7e
chore: fix test wallet path to use local node's default
samcamwilliams Feb 3, 2026
4d2c05d
impr: add extraction of `POST /tx` target in `~arweave@2.9-pre`
samcamwilliams Feb 3, 2026
148b119
fix: check for unsigned report
PeterFarber Jan 30, 2026
dc44307
fix: try to use m1 to find report
PeterFarber Jan 30, 2026
41c7b67
fix: don't yolo functionality into `~message@1.0`...
samcamwilliams Feb 11, 2026
4918d78
Merge pull request #638 from permaweb/fix/demoes
samcamwilliams Feb 11, 2026
33abc25
wip: codex fixes to sketch
samcamwilliams Feb 12, 2026
d7f0e07
fix: unslop
samcamwilliams Feb 12, 2026
708fa28
fix: opts
samcamwilliams Feb 12, 2026
fe5a07d
Merge branch 'edge' of github.com:permaweb/HyperBEAM into NickJ202/da…
NickJ202 Feb 12, 2026
51a1bcc
fix: return committed trie from dev_trie:set
jfrain99 Feb 12, 2026
21ce792
chore: add full_route_config_test and fix Nearest-Integer centerless …
PeterFarber Feb 12, 2026
5432caa
chore: update default routes to use arweave.xyz data nodes with real …
PeterFarber Feb 13, 2026
b1ab4ff
Merge pull request #639 from permaweb/sketch/router-multi-req-improve…
PeterFarber Feb 13, 2026
03550aa
Merge branch 'edge' of github.com:permaweb/HyperBEAM into NickJ202/da…
NickJ202 Feb 13, 2026
183856d
chore: update latest hyperbuddy bundle
NickJ202 Feb 13, 2026
80cad34
Merge pull request #642 from permaweb/fix/dont-drop-trie-comms
samcamwilliams Feb 13, 2026
aef7872
Merge pull request #390 from permaweb/NickJ202/dashboard-impr
samcamwilliams Feb 14, 2026
35c0c26
fix: match /arweave/raw before default /arweave in hb_opts
JamesPiechota Feb 15, 2026
a4fdb9c
Fix cross-platform WAMR build step in Makefile
samcamwilliams Feb 16, 2026
c176db9
Merge pull request #647 from permaweb/expr/wamr-build-fix
samcamwilliams Feb 16, 2026
8394b3b
Merge pull request #646 from permaweb/fix/hb-opts-for-raw
samcamwilliams Feb 16, 2026
4237b26
Revert "Merge pull request #646 from permaweb/fix/hb-opts-for-raw"
samcamwilliams Feb 16, 2026
55de81b
impr: update LMDB, introduce lock-free 'read-only' mode, improve `stop`
samcamwilliams Feb 14, 2026
dad319a
chore: revert store close changes
samcamwilliams Feb 16, 2026
60c9311
chore: upgrade elmdb-rs
samcamwilliams Feb 16, 2026
f101e5e
feat: add `max-readers` store message param
samcamwilliams Feb 16, 2026
ca00a37
chore: remove unused macros
samcamwilliams Feb 16, 2026
440627e
feat: add support for non-locked LMDB open
samcamwilliams Feb 16, 2026
c4cb38b
impr: Start unique, isolated test stores with `lock: false`, avoiding…
samcamwilliams Feb 16, 2026
910dc36
Merge pull request #645 from permaweb/impr/lmdb-locks
samcamwilliams Feb 16, 2026
f126012
Merge branch 'impr/lmdb-locks' into edge
samcamwilliams Feb 16, 2026
897adb3
fix: `/raw` route normalization
samcamwilliams Feb 16, 2026
6f7c51d
Merge pull request #650 from permaweb/fix/default-raw-opts
samcamwilliams Feb 16, 2026
73fcdf3
fix: /arweave/raw route uses httpc
JamesPiechota Feb 16, 2026
a265912
Merge pull request #651 from permaweb/fix/arweace-raw-httpc
samcamwilliams Feb 16, 2026
d8c0777
wip: partial fix for exhausted semaphores
samcamwilliams Feb 16, 2026
48d6bd3
fix: update lock
samcamwilliams Feb 16, 2026
4590132
fix: import checkpoint test loads data before testing byte_size
jfrain99 Feb 17, 2026
b1464bc
impl: simple in-memory ets store implementation
samcamwilliams Feb 17, 2026
b100f5f
Merge pull request #655 from permaweb/fix/environment-error
samcamwilliams Feb 17, 2026
1960107
cherry: `~match@1.0`
samcamwilliams Feb 16, 2026
e902da6
chore: reverse index event log
samcamwilliams Feb 16, 2026
d32bde0
chore: pass `~scheduler@1.0` opts in test
samcamwilliams Feb 17, 2026
c75e790
Merge pull request #649 from permaweb/merge/rev-index
samcamwilliams Feb 17, 2026
d2891d9
chore: use correct match path in parallel requests test
samcamwilliams Feb 17, 2026
a834af2
chore: fix minor test issues
samcamwilliams Feb 17, 2026
88eaca0
dev_router: make dynamic performance test assert relative ordering
samcamwilliams Feb 17, 2026
36f125e
hb_store_gateway: align avoid_double_read_test with current gateway p…
samcamwilliams Feb 17, 2026
9d475e8
dev_router: give performance routing test enough samples and settle time
samcamwilliams Feb 17, 2026
f2d3307
dev_router: relax strategy distribution cutoff to 4σ
samcamwilliams Feb 17, 2026
53e9599
dev_process_test_vectors: pass consistent opts in prior-results test
samcamwilliams Feb 17, 2026
6567854
dev_process_test_vectors: run browsable-state flow with consistent opts
samcamwilliams Feb 17, 2026
c1edb9e
Merge pull request #656 from permaweb/merge/minor-fixes
samcamwilliams Feb 17, 2026
39b2a9f
impr: avoid `eaddrinuse` in tests by requesting OS allocates random port
samcamwilliams Feb 18, 2026
9c2eaec
Merge pull request #657 from permaweb/impr/random-port-assignment
samcamwilliams Feb 18, 2026
2a4346f
fix: always return at least the ID we were given in `all_ids`
samcamwilliams Feb 18, 2026
fbdd4e2
chore: `~json@1.0` encoding test case progress
samcamwilliams Feb 18, 2026
27311fd
wip: candidate fix for JSON encoding of node message
samcamwilliams Feb 18, 2026
958667d
fix: recursively apply restructuring to lists as well as normal messages
samcamwilliams Feb 18, 2026
0f6b5d9
chore: tidy `~json@1.0` debugging
samcamwilliams Feb 18, 2026
37f6f70
feat: add quiet execution profile for `eunit`
samcamwilliams Feb 18, 2026
a19b71a
chore: change test stores
samcamwilliams Feb 18, 2026
4848b84
feat: add parallel test suite execution, enabled by default
samcamwilliams Feb 18, 2026
6dc41cd
fix(?): add waits to gateway store remote node read test
samcamwilliams Feb 18, 2026
d84942c
Merge pull request #658 from permaweb/impr/test-fixes
samcamwilliams Feb 18, 2026
2f2a764
Fix scheduler start to return existing registered PID deterministically
samcamwilliams Feb 18, 2026
9418d86
Merge pull request #660 from permaweb/fix/scheduler-find
samcamwilliams Feb 18, 2026
6565086
Reduce benchmark/test wait windows to cut eunit wall time
samcamwilliams Feb 18, 2026
6e252a6
Normalize test store fixtures and trim process-vector benchmark windows
samcamwilliams Feb 18, 2026
9f6c702
revert: `hb_event` increment changes. Run with `NO_EVENTS` to avoid t…
samcamwilliams Feb 18, 2026
353577e
Merge pull request #661 from permaweb/chore/test-configs
samcamwilliams Feb 18, 2026
ed86bdd
perf(tests): cache hb wallet lookups during eunit
samcamwilliams Feb 18, 2026
823d3d8
perf(tests): pool RSA wallet generation in ar_wallet:new/1
samcamwilliams Feb 18, 2026
2bd6ccb
Merge pull request #662 from permaweb/impr/test-wallets
samcamwilliams Feb 18, 2026
44c9b8f
fix: passed store properly to avoid db collision.
Lucifer0x17 Feb 17, 2026
6a6b68e
fix: use `Opts` in `commit`
samcamwilliams Feb 19, 2026
930353b
Merge pull request #654 from permaweb/fix/process_test_vectors_store
samcamwilliams Feb 19, 2026
e63010d
fix: allow large integers as structured field values (greather than 1…
JamesPiechota Feb 19, 2026
6906bc3
Merge pull request #663 from permaweb/chore/sf-large-integers
samcamwilliams Feb 19, 2026
66388e9
impr: router test params, lowering full suite test execution time by …
samcamwilliams Feb 19, 2026
e1f165c
chore: lower iteration requirements for `~json-iface@1.0`
samcamwilliams Feb 19, 2026
2611846
fix: LMDB max readers
speeddragon Feb 19, 2026
cfae8ee
Merge pull request #664 from permaweb/fix/lmdb_max_readers
samcamwilliams Feb 20, 2026
44bcb12
Merge pull request #666 from permaweb/impr/test-stability
samcamwilliams Feb 20, 2026
0826167
fix: auto-filter `debug*` events from counters.
samcamwilliams Feb 20, 2026
d1285ca
Merge pull request #667 from permaweb/fix/event-filtering
samcamwilliams Feb 20, 2026
42c9c89
impr: quiet test mode
samcamwilliams Feb 21, 2026
6e93ff0
Merge pull request #669 from permaweb/impr/quiet-tests
samcamwilliams Feb 21, 2026
2c8e1af
chore: upgrade `elmdb-rs`
samcamwilliams Feb 21, 2026
3ed6646
impr: remove unnecessary explicit handle management
samcamwilliams Feb 21, 2026
3a82c13
chore: test stores
samcamwilliams Feb 20, 2026
148aa57
chore: normalize store isolation; fix formatting
samcamwilliams Feb 21, 2026
b80fa73
impr: when resetting the contents of a DB, we leave the directory in-…
samcamwilliams Feb 21, 2026
fe7a2dd
Merge pull request #653 from permaweb/fix/import-checkpoint-test
samcamwilliams Feb 21, 2026
251d67e
Merge pull request #670 from permaweb/impr/lmdb-refs
samcamwilliams Feb 21, 2026
4911a38
feat: add tunable `batch_size` setting for LMDB store
samcamwilliams Feb 22, 2026
6957496
Merge pull request #673 from permaweb/impr/lmdb-tuning
samcamwilliams Feb 22, 2026
2b17685
fix: fix query param to LN scheduler
VinceJuliano Feb 24, 2026
4a24026
chore: update legacynet process IDs
samcamwilliams Feb 24, 2026
60e8edf
Merge pull request #679 from permaweb/fix/scheduler
samcamwilliams Feb 24, 2026
f4b3997
feat: add a range limited strategy using the `Route-By` of a request
samcamwilliams Feb 24, 2026
db4dfa0
feat: add the ability to shuffle the result of every other strategy t…
samcamwilliams Feb 24, 2026
3af720d
impr: add tests; fix bugs
samcamwilliams Feb 25, 2026
a917ff2
Merge pull request #680 from permaweb/feat/shuffled-and-range-strategies
samcamwilliams Feb 25, 2026
504ba53
impr: Support set max configuration
speeddragon Feb 25, 2026
36a8d71
impr: documentation around contributing to HyperBEAM and using info f…
samcamwilliams Feb 25, 2026
4bc3ca5
Merge pull request #684 from permaweb/chore/contribution-and-agents-docs
samcamwilliams Feb 25, 2026
dd87451
Merge pull request #682 from permaweb/impr/ranch_metrics
samcamwilliams Feb 25, 2026
3c6aa16
feat: parallel execution store implementation
samcamwilliams Feb 21, 2026
0f76f9b
impr: debug; add tests
samcamwilliams Feb 21, 2026
96cd48a
feat: Support multiple workers per store
speeddragon Feb 24, 2026
a6d43de
chore: add doc; set default parallelism; `-` not `_` in config key
samcamwilliams Feb 25, 2026
efdf8cf
Merge pull request #671 from permaweb/feat/multi-store
samcamwilliams Feb 25, 2026
7156269
impr: Increase cowboy last bucket to more than 4
speeddragon Feb 25, 2026
03b807d
Merge pull request #685 from permaweb/impr/custom_cowboy_prometheus_m…
samcamwilliams Feb 25, 2026
8570644
feat: introduce `on/request` name resolver and simplify `~name@1.0` API
samcamwilliams Feb 26, 2026
c75c32e
Merge pull request #692 from permaweb/feat/hook-name-resolver
samcamwilliams Feb 26, 2026
a7588df
wip: implement `~blacklist@1.0` content policy enforcement device. Sa…
samcamwilliams Feb 24, 2026
5ed62b4
wip: test implementation
samcamwilliams Feb 24, 2026
c8aacfc
wip: test improvements
samcamwilliams Feb 26, 2026
76bd6d0
feat: `~blacklist@1.0` with periodic refresh support
samcamwilliams Feb 26, 2026
068d227
chore: tidy; loosen API
samcamwilliams Feb 26, 2026
c022c1b
Merge pull request #695 from permaweb/feat/blacklist-2
samcamwilliams Feb 26, 2026
476b444
impr: Add global workers
speeddragon Feb 25, 2026
c23495e
chore: unify the parameter name -- we now just have local and global …
samcamwilliams Feb 27, 2026
4a19992
Merge pull request #686 from permaweb/impr/hb_store_multi_workers
samcamwilliams Feb 27, 2026
4671986
fix: Ranch prometheus metrics
speeddragon Feb 27, 2026
7f1aade
fix: function call
speeddragon Feb 27, 2026
85d8d2c
Merge pull request #696 from permaweb/fix/ranch_prometheus
samcamwilliams Feb 27, 2026
f7c4275
feat: add per-slot LMDB and trie instrumentation to compute_short logs
Feb 24, 2026
b6f171f
fix: remove container_id stream label and fix multi-stream panel dupl…
Feb 24, 2026
8cc1074
Add per-phase LMDB stats and wasm_cu_ms timing to compute_short events
Feb 26, 2026
e72a595
Add WASM CU Time by Action panel to Grafana dashboard
Feb 26, 2026
bb16485
perf: add normalize_keys timing instrumentation to hb_ao resolution p…
Feb 26, 2026
0d4bf9e
perf: replace trie-based dedup with flat LMDB key-value storage (88× …
Feb 26, 2026
852263f
perf: skip cache lookup and phash2 when hashpath=>ignore
Feb 27, 2026
91f4d90
test: update hashpath_ignore test to assert lookup is also disabled
Feb 27, 2026
d7b74d0
feat: add ETA to Catch Up stat panel to Grafana dashboard
Feb 27, 2026
2bdd3f1
fix: enable historical dry-run evaluation in genesis-wasm CU
Mar 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Large runtime data — never needed at build time
cache-*
*.lmdb
*.mdb

# Local build artifacts (image builds from source)
_build/

# Secrets and local config (mounted as volumes at runtime)
hyperbeam-key.json
config.json

# Dev tooling
.git/
scripts/
11 changes: 0 additions & 11 deletions .githooks/_/install.sh

This file was deleted.

25 changes: 0 additions & 25 deletions .githooks/commit-msg

This file was deleted.

5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
config.*
.rebar3
_build
_checkouts
Expand Down Expand Up @@ -42,4 +43,6 @@ mkdocs-site/
mkdocs-site-id.txt
mkdocs-site-manifest.csv

!test/admissible-report-wallet.json
!test/admissible-report-wallet.json
!test/admissible-report.json
!test/config.json
7 changes: 6 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"internalConsoleOptions": "openOnSessionStart",
"module": "hb_debugger",
"function": "start_and_break",
"args": "[${input:moduleName}, ${input:functionName}, [${input:funcArgs}]]"
"args": "[${input:moduleName}, ${input:functionName}, [${input:funcArgs}], <<\"${input:debuggerScope}\">>]"
},
{
"name": "Attach to a 'rebar3 debugger' node.",
Expand Down Expand Up @@ -65,6 +65,11 @@
"id": "funcArgs",
"type": "promptString",
"description": "(Optional) Pass arguments to the function:"
},
{
"id": "debuggerScope",
"type": "promptString",
"description": "(Optional) Additional modules/prefixes for debugger scope:"
}
]
}
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"editor.detectIndentation": false,
"editor.insertSpaces": true,
"editor.tabSize": 4
"editor.tabSize": 4,
"editor.rulers": [80]
}
32 changes: 31 additions & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,37 @@
{
"label": "Stop HyperBEAM",
"type": "shell",
"command": "lsof -i tcp:10000 | tail -n 1 | awk '{print $2}' | xargs kill -9"
"command": "lsof -i tcp:8734 | tail -n 1 | awk '{print $2}' | xargs kill -9"
},
{
"label": "Generate a flame graph for a function.",
"type": "shell",
"command": "rebar3 as eflame shell --eval \"hb_debugger:profile_and_stop(fun() -> ${input:moduleName}:${input:functionName}(${input:funcArgs}) end).\"",
"group": "test",
"problemMatcher": "$erlang",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "new"
}
}
],
"inputs": [
{
"id": "moduleName",
"type": "promptString",
"description": "Enter module:"
},
{
"id": "functionName",
"type": "promptString",
"description": "Enter an exported function name:"
},
{
"id": "funcArgs",
"type": "promptString",
"description": "(Optional) Pass arguments to the function:"
}
]
}
24 changes: 24 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
This repository contains HyperBEAM, an implementation of the AO-Core protocol.

To familiarize yourself with AO-Core, read the `README.md` file.

To understand how to write code for HyperBEAM, read `CONTRIBUTING.md` for
repository-level guidelines, and `docs/misc/hacking-on-hyperbeam.md` learn about
its debugging tools and infrastructure.

In addition to the rules outlined in `CONTRIBUTING.md`, you should abide by the
following:

1. Always be surgical in your edits. Minimize the line-of-code changes you make
during every single edit.
2. Before adding new utilities, search for existing utilities that do something
similar. Candidates are often found in `hb_ao`, `hb_util`, and `hb_test_utils`.
3. Ensure that you understand the differences between Erlang map terms and
AO-Core's messages. Messages are built using maps under-the-hood, but may also
be lazy-loaded (linkified), giving them different semantics.
4. Before submitting any code as 'complete', you **must** validate that your
new changes do not break any existing tests across the full suite. You are
never being asked to write a 'toy' implementation of features or changed. Your
code must actually work in-production.
5. Always attempt to leave the codebase in a better state than you found it. More
precise, clear, and minimal -- while maintaining the existing featureset.
131 changes: 131 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# Contributing to HyperBEAM.

There are three basic rules for writing and merging PRs to HyperBEAM:
1. The PR must not introduce additional test failures, flakes, or
removal/defeating of existing tests unless agreed by multiple maintainers.
2. Modifications to the 'kernel layer' must never be made where modifications to
the 'application layer' would suffice.
3. Merged code must abide by the existing style in the repo. Just write and merge
code that blends in. This rule sounds unimportant, but over time it is what makes
the code maintainable and understandable by a larger set of developers.
Spaghetti/mixed styles lowers comprehension, which in a security sensitive
environment => bugs => lost value. No broken windows if we can help it.

# The HyperBEAM Style Guide.

**Rule one of style guide club:** _We do not talk about style guide club._

We are here to build a fully decentralized alternative to cyberspace as it
is currently constructed. We are not interested in long conversations about
where to put commas or spaces.

**Rule two of style guide club:** _Blend in._

Rule one does not imply that we do not care about the quality of the codebase.
Far from it: We know that we will be maintaining this code for decades to come.
It is important that we are all aligned on style and patterns, but less important
what those styles and patterns actually are. Having `length(Contributors)`
styles adds overhead to understanding the codebase, which over time hides bugs
and reduces maintainability, but each stylistic choice is largely an opinion
that -- despite strong feelings -- lacks criticality. Hence, rule two:
Only write and merge code that actually _blends in_.

Write your code as if you were the author of all of the existing code. If all
of the other code is written in a certain style, then copy it. If the style
of the code in your PR would not _blend in_, then its style is objectively
in violation of `style guide club`'s rules.

In the event of disagreement, a simple rule should guide our decisions: What
does the majority of the LoC in the codebase already do? Do that. Then get
back to hacking.

If you don't like something about the style, simply contribute. If others
disagree strongly, the existing style will be kept. If your contributions are
seen by others as reasonable and inline with the canon, then it will gradually
become adopted as the standard in the codebase.

**This concludes the rules of style guide club.**

Remember: Cypherpunks write code!

# A Rough Guide to the HyperBEAM `canon`

You should pick up and continue the style of the codebase as you learn how it
works. There is no real substitute for paying attention. There are, however, a
few basic rules that are widely established and represent the core `canon` of the
codebase. As of time of {{`git blame`}}, there is highest consensus around the
following:

- Always use `-` over `_` in binary key names.
- Why: In general we try to follow the HTTP semantics RFC 9110, so all keys
should be HTTP-Header-Case. This is the style that has been used for Arweave
data protocols since inception, so to avoid confusion we maintain it in
HyperBEAM.
- Nuances:
- One weirdness we inherit from HTTP-land is that headers are actually
case-insensitive, despite the use of capitals in header descriptions,
over-the-wire they are lower-case in HTTP/2+. AO-Core shoots for the
same semantics for consistency.
- In device key resolutions that have multiple words (for example:
`i_like(Base, Req, Opts) -> {ok, <<"Turtles!">>}.`) you may be tempted
to call `~device@1.0/i_like`. Don't. Instead call `/i-like`.
`hb_ao_device` will normalize the keys and match for you.
- `hb_opts` uses all atoms for its message keys. This is a mistake. It
is nice to be able to lookup keys via atoms (normalizing as above) and
we should maintain this, but under the surface the keys should be
normal-form binaries. To avoid issues when this is translated, perform
`Opts` lookups with only atoms, or use binaries of normal-form if you
must.
- Try to keep lines to around 80 characters-ish. This is not a strict rule because
sometimes an 81-85 character line would be very ugly and harder to follow if split.
Use your judgement.
- Why: Our objective is to keep the code readable. Monster lines, and machine-enforced
strict styles, both butcher this. Human/LLM judgement can help here.
- Add a `%%% @doc` moduledoc to each new module you write, and comment every
function you write with a `%% @doc Description` above it. Inline comments are
prepended with a single `%`.
- Why: This helps humans and LLMs grok your code in the future. It also surfaces
useful information in tooltips etc upstream.
- Nuance: I do not know why the Erlang style uses `%%%` for moduledocs, `%%` for
functions, and `%` for inline comments, but it does. This can help with parsability
for some tooling and the effort-cost is minimal, so we use it.
- Avoid 'waterfalls'-style statements, instead keeping every set of statements
nested such that the start and end of the block are indented inline with each
other.
- Why: This uses slightly more lines, but makes deeply nested code much more
readable and comprehensible.
- Examples:
```erlang
BadForm = lists:map(
fun(X) ->
X * lists:sum(lists:fold(
fun(Y, Acc) ->
Y * Acc
end,
[1,2,3]
))
end
),
GoodForm = lists:map(
fun(X) ->
X *
lists:sum(
lists:fold(
fun(Y, Acc) ->
Y * Acc
end,
[1,2,3]
)
)
end
)
```
There are a few areas where there is no consensus on patterns or style yet:
- Expressing docs in the info/[0,1] call of devices. There are a few different
styles in different devices in the codebase -- if you want to add info response
'inline' docs try to pick one that already exists and see what works/doesn't.
We will need to unify them at some point.
- `maybe ... end` vs nested `case` expressions. `maybe` seems useful and preferable
in at least some cases, but bubbling the right error -- rather than just an error --
the caller can sometimes be difficult due to the `else` pattern matching.
Experimentation with patterns here would be good.
Loading