Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
619 commits
Select commit Hold shift + click to select a range
976b75c
fix: handle whitespace in scheduler locations and GraphQL-style respo…
NickJ202 Nov 10, 2025
69e4422
chore: remove unused opt
NickJ202 Nov 10, 2025
60e141e
chore: remove unneeded string:trim from scheduler parsing
NickJ202 Nov 11, 2025
944f0e9
wip: add bundler retry logic and dispatch workers
JamesPiechota Nov 11, 2025
613ce1e
wip: add tests for dev_bundler_dispatch
JamesPiechota Nov 11, 2025
5932aff
wip: implement bundler retry exponenttial backoff
JamesPiechota Nov 11, 2025
20748de
Merge pull request #551 from permaweb/fix/scheduler-location-parsing
samcamwilliams Nov 11, 2025
1876fd1
wip: add jitter to bundler retry timeout, and fix bug in proof genera…
JamesPiechota Nov 11, 2025
2cce933
impr: Do not short URL binaries
speeddragon Nov 12, 2025
14a92bd
wip: introduce dev_bundler_cache to cache bundler state across restarts
JamesPiechota Nov 12, 2025
b6c3ba2
wip: add test that bundler caches the items and tx
JamesPiechota Nov 12, 2025
1546a18
wip: clean up logging
JamesPiechota Nov 13, 2025
b4ea1be
wip: more tests for the bundler recovery from cache
JamesPiechota Nov 13, 2025
66df174
wip: clear cache before running bundler tests
JamesPiechota Nov 13, 2025
edc88c3
wip: small bug fixes to bundler
JamesPiechota Nov 13, 2025
fa50b1b
wip: minor bundler changes
JamesPiechota Nov 13, 2025
d28d8c5
Merge branch 'edge' of github.com:permaweb/HyperBEAM into NickJ202/da…
NickJ202 Nov 17, 2025
f4c0278
impr: Replace assignment `hash-chain`s with improved metadata
samcamwilliams Nov 18, 2025
34dfc7f
Merge pull request #558 from permaweb/impr/hashchains
samcamwilliams Nov 19, 2025
825b35e
Merge pull request #553 from permaweb/do_not_short_url
samcamwilliams Nov 19, 2025
690bca2
wip: add some tests to validate HB-generated dataitems can be process…
JamesPiechota Nov 19, 2025
824df4f
fixup: find appropriate anchor in assignment
samcamwilliams Nov 19, 2025
0713a91
wip: allow process definition messages or node message to choose assi…
samcamwilliams Nov 19, 2025
bfb9353
fix: scheduler server uploads message as well as assignment explicitly
samcamwilliams Nov 20, 2025
791f580
Merge pull request #560 from permaweb/fix/scheduler-server-uploads-me…
NickJ202 Nov 20, 2025
2d3d35f
Merge pull request #561 from permaweb/feat/flexible-assignment-commit…
NickJ202 Nov 20, 2025
035c339
Merge pull request #535 from permaweb/feat/bundler
NickJ202 Nov 20, 2025
3d7f3f6
chore: set scheduler_default_commitment_spec in hb_opts
NickJ202 Nov 20, 2025
946af87
Merge pull request #562 from permaweb/chore/set-scheduler_default_com…
NickJ202 Nov 20, 2025
d90332b
fix: Load routes via store
speeddragon Nov 20, 2025
a389931
fix: Fix test and how store opts are loaded
speeddragon Nov 21, 2025
e37442d
test: Improve test
speeddragon Nov 21, 2025
22b74d0
fix: Test in dev_scheduler
speeddragon Nov 21, 2025
d8ae0ef
fix: do not override path key in `ans104` and `tx` `POST` operations
samcamwilliams Nov 21, 2025
02eeb62
Merge pull request #564 from permaweb/fix/ans104-path-key-override
samcamwilliams Nov 21, 2025
2dd4a79
impr: Proper default timeout values
speeddragon Nov 22, 2025
12d0bca
Merge pull request #565 from permaweb/set_proper_default_timeout_values
samcamwilliams Nov 23, 2025
6e882a4
fix: Double read on hb_store_gateway
speeddragon Nov 24, 2025
b10c619
test: Fix test becasue the other PR isn't merged yet
speeddragon Nov 25, 2025
ed0ce13
impr: introduce `~process@1.0` library
samcamwilliams Nov 25, 2025
4c49672
Merge pull request #569 from permaweb/impr/process-lib
samcamwilliams Nov 25, 2025
00a7a80
fix: incorrect `hb_message:match` args
samcamwilliams Nov 26, 2025
f97abbe
wip: optionally route recursive `~push@1.0` calls to other nodes.
samcamwilliams Nov 19, 2025
3a530f3
wip: remote push test
samcamwilliams Nov 20, 2025
50c66c1
wip: re-build test network setup
samcamwilliams Nov 26, 2025
3ef672a
wip: dev_scheduler_registry by signed commitment
jfrain99 Nov 26, 2025
330e71e
fix: rebase errors
samcamwilliams Nov 26, 2025
4f68e88
impr: add safety on unverifiable process message or dropped signers
samcamwilliams Nov 26, 2025
cd0dd76
impr: do not attempt to recalculate ID on lost commitments. This will…
samcamwilliams Nov 26, 2025
4edefab
impr: isolate finding process ID
samcamwilliams Nov 26, 2025
4a9197e
fix: second argument to `hb_message:verify` is subject commitments
samcamwilliams Nov 26, 2025
337760c
feat: allow tailoring of behavior on `compute` when process not initi…
samcamwilliams Nov 26, 2025
afa9bfc
chore: add commitment normalization test for `as` requests
samcamwilliams Nov 26, 2025
691c8e8
impr: catch compute errors during pushing; return error instead.
samcamwilliams Nov 26, 2025
47dbd7c
impr: do not needlessly read message before pushing
samcamwilliams Nov 26, 2025
3594e45
impr: enable downstream push routing by default
samcamwilliams Nov 26, 2025
a30cdce
fix: test conditions
samcamwilliams Nov 26, 2025
54687d2
Merge pull request #572 from permaweb/feat/remote-push
samcamwilliams Nov 26, 2025
4643803
impr: call `~dedup@1.0` in `~genesis-wasm@1.0` default stack
samcamwilliams Nov 27, 2025
b4470f4
wip: dedup test
jfrain99 Nov 28, 2025
67cbe43
wip: register `skip` with genesis wasm server on duplicate input
samcamwilliams Nov 28, 2025
5b1d547
impr: use `~trie@1.0` for duplicate IDs, rather than a list.
samcamwilliams Nov 28, 2025
a8ca0f2
wip: dedup genesis wasm compute calls
jfrain99 Nov 29, 2025
ba5e407
fix: do not crash on provision of sort specifier in GraphQL parsing
samcamwilliams Nov 29, 2025
7653b91
fix: return empty matches correctly in GQL responses
samcamwilliams Nov 29, 2025
fc56f40
fix: return 400 error with useful text on commitment validation failure
samcamwilliams Nov 29, 2025
53dbd6c
chore: `error` event -> `warning`
samcamwilliams Nov 29, 2025
3a5390d
Merge branch 'edge' of github.com:permaweb/HyperBEAM into NickJ202/da…
NickJ202 Nov 29, 2025
dbc8763
chore: update latest hyperbuddy bundle
NickJ202 Nov 29, 2025
68ea6de
fix: filter `not_found` elements from query responses
samcamwilliams Nov 30, 2025
62d1645
Merge pull request #575 from permaweb/fix/item-upload-and-gql
samcamwilliams Nov 30, 2025
2e447c2
fix: polish genesis wasm dedup call
jfrain99 Dec 1, 2025
1ec40e5
fix: improved schedule, now calls
jfrain99 Dec 1, 2025
5464135
Merge pull request #573 from permaweb/impr/genesis-wasm-dedup
samcamwilliams Dec 1, 2025
e6c1d83
fix: Rename function
speeddragon Dec 2, 2025
2d66d2d
fix: Compress code
speeddragon Dec 2, 2025
eacc76a
docs: Update docs
speeddragon Dec 2, 2025
5948225
feat: add redirector for manifest responses
samcamwilliams Dec 5, 2025
5305b9c
wip: manifest without ensuring all loaded
samcamwilliams Dec 5, 2025
51e47a7
fix: appropriately handle links in `force_message` coercion
samcamwilliams Dec 6, 2025
7965d2a
chore: tidy manifest changes
samcamwilliams Dec 6, 2025
efe474b
fix: test correctly encodes manifest as raw JSON
samcamwilliams Dec 6, 2025
b72e58e
Merge pull request #578 from permaweb/feat/global-manifest-support
samcamwilliams Dec 6, 2025
8ce2320
fix: Manifest redirect ID
speeddragon Dec 9, 2025
b5f9ae9
fix: add dev_trie keys function
noahlevenson Dec 10, 2025
31950ef
fix: always pass `Opts` to hb_* functions!
samcamwilliams Dec 10, 2025
f938962
Merge pull request #582 from permaweb/fix/manifest_redirect
samcamwilliams Dec 10, 2025
8acdf68
Merge pull request #567 from permaweb/fix_hb_store_gateway
samcamwilliams Dec 10, 2025
c9acc57
fix: Do not crash when parsing a spaced file path
speeddragon Dec 8, 2025
a03d081
feat: Support fallback on manifest 404
speeddragon Dec 8, 2025
b6f2bff
fix: hb_opts manifest_404 description
speeddragon Dec 9, 2025
f42db9d
chore: return `{error, ...}` form rather than just `not_found`
samcamwilliams Dec 10, 2025
cfa64d0
Merge pull request #581 from permaweb/fix/crash_parse_path
samcamwilliams Dec 10, 2025
f371758
fix: make lua ledger tests efficient
jfrain99 Nov 5, 2025
36f73a3
chore: fix spelling
samcamwilliams Dec 10, 2025
fb14431
chore: remove unnecessary sleep
samcamwilliams Dec 10, 2025
a17ba4a
Merge pull request #546 from permaweb/fix/efficient-lua-ledger-tests
samcamwilliams Dec 10, 2025
c135b7d
chore: remove no-opts `keys` variants; style
samcamwilliams Dec 10, 2025
84a7f93
Merge pull request #583 from permaweb/fix/add-trie-keys-function
samcamwilliams Dec 10, 2025
ea53739
Merge pull request #583 from permaweb/fix/add-trie-keys-function
samcamwilliams Dec 10, 2025
5090661
Merge remote-tracking branch 'hyperbeam-main/edge' into edge
samcamwilliams Dec 10, 2025
acdabc3
fix: only commit with opts
jfrain99 Nov 5, 2025
57f0d15
fix: dev_process-test_vectors no wallet commits
jfrain99 Dec 1, 2025
aba82d2
Merge pull request #547 from permaweb/fix/deprecate-wallet-commit
samcamwilliams Dec 10, 2025
65203e5
Refactor: store decoded JSON instead of raw JSON string
PeterFarber Dec 11, 2025
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
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
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]
}
31 changes: 29 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@ compile:
WAMR_VERSION = 2.2.0
WAMR_DIR = _build/wamr

GENESIS_WASM_BRANCH = feat/http-checkpoint
GENESIS_WASM_BRANCH = feat/hb-unit
GENESIS_WASM_REPO = https://github.com/permaweb/ao.git
GENESIS_WASM_SERVER_DIR = _build/genesis_wasm/genesis-wasm-server

HYPERBUDDY_UI_REPO = https://github.com/permaweb/hb-explorer
HYPERBUDDY_UI_PACKAGE_JSON = https://raw.githubusercontent.com/permaweb/hb-explorer/main/package.json
HYPERBUDDY_UI_TARGET = src/html/hyperbuddy@1.0/bundle.js
ARWEAVE_GATEWAY = https://arweave.net

ifdef HB_DEBUG
WAMR_FLAGS = -DWAMR_ENABLE_LOG=1 -DWAMR_BUILD_DUMP_CALL_STACK=1 -DCMAKE_BUILD_TYPE=Debug
else
Expand Down Expand Up @@ -50,11 +55,16 @@ $(WAMR_DIR):
--single-branch

$(WAMR_DIR)/lib/libvmlib.a: $(WAMR_DIR)
sed -i '742a tbl_inst->is_table64 = 1;' ./_build/wamr/core/iwasm/aot/aot_runtime.c; \
@if ! grep -Fq 'tbl_inst->is_table64 = 1;' ./_build/wamr/core/iwasm/aot/aot_runtime.c; then \
awk 'NR == 742 { print; print "tbl_inst->is_table64 = 1;"; next } { print }' \
./_build/wamr/core/iwasm/aot/aot_runtime.c > ./_build/wamr/core/iwasm/aot/aot_runtime.c.tmp && \
mv ./_build/wamr/core/iwasm/aot/aot_runtime.c.tmp ./_build/wamr/core/iwasm/aot/aot_runtime.c; \
fi; \
cmake \
$(WAMR_FLAGS) \
-S $(WAMR_DIR) \
-B $(WAMR_DIR)/lib \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DWAMR_BUILD_TARGET=$(WAMR_BUILD_TARGET) \
-DWAMR_BUILD_PLATFORM=$(WAMR_BUILD_PLATFORM) \
-DWAMR_BUILD_MEMORY64=1 \
Expand Down Expand Up @@ -104,3 +114,20 @@ setup-genesis-wasm: $(GENESIS_WASM_SERVER_DIR)
fi
@cd $(GENESIS_WASM_SERVER_DIR) && npm install > /dev/null 2>&1 && \
echo "Installed genesis-wasm@1.0 server."

# Update hyperbuddy-ui from remote bundle
update-hyperbuddy-ui:
@echo "Fetching package.json from $(HYPERBUDDY_UI_REPO)..." && \
TX_ID=$$(curl -s "$(HYPERBUDDY_UI_PACKAGE_JSON)" | grep -o '"bundle"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4) && \
if [ -z "$$TX_ID" ]; then \
echo "Error: Could not find 'bundle' field in package.json"; \
exit 1; \
fi && \
echo "Found transaction ID: $$TX_ID" && \
if [ -f "$(HYPERBUDDY_UI_TARGET)" ]; then \
rm "$(HYPERBUDDY_UI_TARGET)" && \
echo "Removed existing bundle.js"; \
fi && \
echo "Downloading source code from Arweave..." && \
curl -sL "$(ARWEAVE_GATEWAY)/$$TX_ID" -o "$(HYPERBUDDY_UI_TARGET)" && \
echo "Successfully updated $(HYPERBUDDY_UI_TARGET)"
1 change: 1 addition & 0 deletions config/vm.args.src
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-sname ${HB_ERL_SNAME:-"hb"}
43 changes: 29 additions & 14 deletions docs/run/configuring-your-machine.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,45 @@

This guide details the various ways to configure your HyperBEAM node's behavior, including ports, storage, keys, and logging.

## Configuration (`config.flat`)
## Configuration (`config.json`)

The primary way to configure your HyperBEAM node is through a `config.flat` file located in the node's working directory or specified by the `HB_CONFIG_LOCATION` environment variable.
The primary way to configure your HyperBEAM node is through a `config.json` file located in the node's working directory or specified by the `HB_CONFIG` environment variable.

This file uses a simple `Key = Value.` format (note the period at the end of each line).
### Flat config file

Another possibility is to use `config.flat` that uses a simple `Key: Value` format.

**Example `config.flat`:**

```erlang
```
% Set the HTTP port
port = 8080.
port: 8080

% Specify the Arweave key file
priv_key_location = "/path/to/your/wallet.json".

% Set the data store directory
% Note: Storage configuration can be complex. See below.
% store = [{local, [{root, <<"./node_data_mainnet">>}]}]. % Example of complex config, not for config.flat

% Enable verbose logging for specific modules
% debug_print = [hb_http, dev_router]. % Example of complex config, not for config.flat
priv_key_location: /path/to/your/wallet.json

% Maps can be used with forward dash (/)
default_store/lmdb/ao-types: store-module=atom
default_store/lmdb/store-module: hb_store_lmdb
default_store/lmdb/name: /tmp/store

% Lists can be used with dot (.) and sequential integer key map
store/ao-types: .=list
store/1/ao-types: store-module=atom
store/1/store-module: hb_store_lmdb
store/1/name: /tmp/store

store/2/ao-types: store-module=atom
store/2/store-module: hb_store_s3
store/2/bucket: hb-s3
store/2/priv_access_key_id: minioadmin
store/2/priv_secret_access_key: minioadmin
store/2/endpoint: http://localhost:9000
store/2/force_path_style: true
store/2/region: us-east-1
```

Below is a reference of commonly used configuration keys. Remember that `config.flat` only supports simple key-value pairs (Atoms, Strings, Integers, Booleans). For complex configurations (Lists, Maps), you must use environment variables or `hb:start_mainnet/1`.
Below is a reference of commonly used configuration keys. Remember that `config.flat` only supports the following value types (Atoms, Strings, Integers, Booleans, Maps and List).

### Core Configuration

Expand Down
2 changes: 2 additions & 0 deletions erlang_ls.config
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@ lenses:
providers:
enabled:
- signature-help
disabled:
- document-formatting
21 changes: 13 additions & 8 deletions rebar.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

{profiles, [
{no_events, [{erl_opts, [{d, 'NO_EVENTS', true}]}]},
{top, [{deps, [observer_cli]}, {erl_opts, [{d, 'AO_TOP', true}]}]},
{store_events, [{erl_opts, [{d, 'STORE_EVENTS', true}]}]},
{ao_profiling, [{erl_opts, [{d, 'AO_PROFILING', true}]}]},
{eflame,
Expand Down Expand Up @@ -63,7 +64,9 @@
{src_dir, "deps/elmdb/native/elmdb_nif"}
]}.

{overrides, []}.
{overrides, [
{override, gun, [{deps, [cowlib]}]}
]}.

{pre_hooks, [
{compile, "bash -c \"echo '-define(HB_BUILD_SOURCE, <<\\\"$(git rev-parse HEAD)\\\">>).\n' > ${REBAR_ROOT_DIR}/_build/hb_buildinfo.hrl\""},
Expand Down Expand Up @@ -115,14 +118,16 @@
]}.

{deps, [
{elmdb, { git, "https://github.com/twilson63/elmdb-rs.git", {branch, "feat/match" }}},
{elmdb, {git, "https://github.com/permaweb/elmdb-rs.git", {ref, "0276d6b04dcf47b7a74fe446c11e15ff3469c37a"}}},
{b64fast, {git, "https://github.com/ArweaveTeam/b64fast.git", {ref, "58f0502e49bf73b29d95c6d02460d1fb8d2a5273"}}},
{cowboy, {git, "https://github.com/ninenines/cowboy", {ref, "022013b6c4e967957c7e0e7e7cdefa107fc48741"}}},
{gun, {git, "https://github.com/ninenines/gun", {ref, "8efcedd3a089e6ab5317e4310fed424a4ee130f8"}}},
{cowlib, "2.16.0"},
{cowboy, "2.14.0"},
{ranch, "2.2.0"},
{gun, "2.2.0"},
{prometheus_cowboy, "0.2.0"},
{prometheus_httpd, "2.1.15"},
{prometheus, "6.0.3"},
{graphql, "0.17.1", {pkg, graphql_erl}},
{prometheus, "4.11.0"},
{prometheus_cowboy, "0.1.8"},
{gun, "0.10.0"},
{luerl, "1.3.0"}
]}.

Expand Down Expand Up @@ -179,4 +184,4 @@
{preprocess, true},
{private, true},
{hidden, true}
]}.
]}.
54 changes: 23 additions & 31 deletions rebar.lock
Original file line number Diff line number Diff line change
@@ -1,50 +1,42 @@
{"1.2.0",
[{<<"accept">>,{pkg,<<"accept">>,<<"0.3.7">>},2},
[{<<"accept">>,{pkg,<<"accept">>,<<"0.3.7">>},1},
{<<"b64fast">>,
{git,"https://github.com/ArweaveTeam/b64fast.git",
{ref,"58f0502e49bf73b29d95c6d02460d1fb8d2a5273"}},
0},
{<<"cowboy">>,
{git,"https://github.com/ninenines/cowboy",
{ref,"022013b6c4e967957c7e0e7e7cdefa107fc48741"}},
0},
{<<"cowlib">>,
{git,"https://github.com/ninenines/cowlib",
{ref,"e2d7749f61b89cc6f8779ba66a5a8ab0fe85c827"}},
1},
{<<"elmdb">>,
{git,"https://github.com/twilson63/elmdb-rs.git",
{ref,"90c8857cd4ccff341fbe415b96bc5703d17ff7f0"}},
0},
{<<"cowboy">>,{pkg,<<"cowboy">>,<<"2.14.0">>},0},
{<<"cowlib">>,{pkg,<<"cowlib">>,<<"2.16.0">>},0},
{<<"ddskerl">>,{pkg,<<"ddskerl">>,<<"0.4.2">>},1},
{<<"graphql">>,{pkg,<<"graphql_erl">>,<<"0.17.1">>},0},
{<<"gun">>,
{git,"https://github.com/ninenines/gun",
{ref,"8efcedd3a089e6ab5317e4310fed424a4ee130f8"}},
0},
{<<"gun">>,{pkg,<<"gun">>,<<"2.2.0">>},0},
{<<"luerl">>,{pkg,<<"luerl">>,<<"1.3.0">>},0},
{<<"prometheus">>,{pkg,<<"prometheus">>,<<"4.11.0">>},0},
{<<"prometheus_cowboy">>,{pkg,<<"prometheus_cowboy">>,<<"0.1.8">>},0},
{<<"prometheus_httpd">>,{pkg,<<"prometheus_httpd">>,<<"2.1.15">>},1},
{<<"quantile_estimator">>,{pkg,<<"quantile_estimator">>,<<"0.2.1">>},1},
{<<"ranch">>,
{git,"https://github.com/ninenines/ranch",
{ref,"a692f44567034dacf5efcaa24a24183788594eb7"}},
1}]}.
{<<"prometheus">>,{pkg,<<"prometheus">>,<<"6.0.3">>},0},
{<<"prometheus_cowboy">>,{pkg,<<"prometheus_cowboy">>,<<"0.2.0">>},0},
{<<"prometheus_httpd">>,{pkg,<<"prometheus_httpd">>,<<"2.1.15">>},0},
{<<"ranch">>,{pkg,<<"ranch">>,<<"2.2.0">>},0}]}.
[
{pkg_hash,[
{<<"accept">>, <<"CD6E34A2D7E28CA38B2D3CB233734CA0C221EFBC1F171F91FEC5F162CC2D18DA">>},
{<<"cowboy">>, <<"565DCF221BA99B1255B0ADCEC24D2D8DBE79E46EC79F30F8373CCEADC6A41E2A">>},
{<<"cowlib">>, <<"54592074EBBBB92EE4746C8A8846E5605052F29309D3A873468D76CDF932076F">>},
{<<"ddskerl">>, <<"A51A90BE9AC9B36A94017670BED479C623B10CA9D4BDA1EDF3A0E48CAEEADA2A">>},
{<<"graphql">>, <<"EB59FCBB39F667DC1C78C950426278015C3423F7A6ED2A121D3DB8B1D2C5F8B4">>},
{<<"gun">>, <<"B8F6B7D417E277D4C2B0DC3C07DFDF892447B087F1CC1CAFF9C0F556B884E33D">>},
{<<"luerl">>, <<"B56423DDB721432AB980B818FEECB84ADBAB115E2E11522CF94BCD0729CAA501">>},
{<<"prometheus">>, <<"B95F8DE8530F541BD95951E18E355A840003672E5EDA4788C5FA6183406BA29A">>},
{<<"prometheus_cowboy">>, <<"CFCE0BC7B668C5096639084FCD873826E6220EA714BF60A716F5BD080EF2A99C">>},
{<<"prometheus">>, <<"95302236124C0F919163A7762BF7D2B171B919B6FF6148D26EB38A5D2DEF7B81">>},
{<<"prometheus_cowboy">>, <<"526F75D9850A9125496F78BCEECCA0F237BC7B403C976D44508543AE5967DAD9">>},
{<<"prometheus_httpd">>, <<"8F767D819A5D36275EAB9264AFF40D87279151646776069BF69FBDBBD562BD75">>},
{<<"quantile_estimator">>, <<"EF50A361F11B5F26B5F16D0696E46A9E4661756492C981F7B2229EF42FF1CD15">>}]},
{<<"ranch">>, <<"25528F82BC8D7C6152C57666CA99EC716510FE0925CB188172F41CE93117B1B0">>}]},
{pkg_hash_ext,[
{<<"accept">>, <<"CA69388943F5DAD2E7232A5478F16086E3C872F48E32B88B378E1885A59F5649">>},
{<<"cowboy">>, <<"EA99769574550FE8A83225C752E8A62780A586770EF408816B82B6FE6D46476B">>},
{<<"cowlib">>, <<"7F478D80D66B747344F0EA7708C187645CFCC08B11AA424632F78E25BF05DB51">>},
{<<"ddskerl">>, <<"63F907373D7E548151D584D4DA8A38928FD26EC9477B94C0FFAAD87D7CB69FE7">>},
{<<"graphql">>, <<"4D0F08EC57EF0983E2596763900872B1AB7E94F8EE3817B9F67EEC911FF7C386">>},
{<<"gun">>, <<"76022700C64287FEB4DF93A1795CFF6741B83FB37415C40C34C38D2A4645261A">>},
{<<"luerl">>, <<"6B3138AA829F0FBC4CD0F083F273B4030A2B6CE99155194A6DB8C67B2C3480A4">>},
{<<"prometheus">>, <<"719862351AABF4DF7079B05DC085D2BBCBE3AC0AC3009E956671B1D5AB88247D">>},
{<<"prometheus_cowboy">>, <<"BA286BECA9302618418892D37BCD5DC669A6CC001F4EB6D6AF85FF81F3F4F34C">>},
{<<"prometheus">>, <<"53554ECADAC0354066801D514D1A244DD026175E4EE3A9A30192B71D530C8268">>},
{<<"prometheus_cowboy">>, <<"2C7EB12F4B970D91E3B47BAAD0F138F6ADC34E53EEB0AE18068FF0AFAB441B24">>},
{<<"prometheus_httpd">>, <<"67736D000745184D5013C58A63E947821AB90CB9320BC2E6AE5D3061C6FFE039">>},
{<<"quantile_estimator">>, <<"282A8A323CA2A845C9E6F787D166348F776C1D4A41EDE63046D72D422E3DA946">>}]}
{<<"ranch">>, <<"FA0B99A1780C80218A4197A59EA8D3BDAE32FBFF7E88527D7D8A4787EFF4F8E7">>}]}
].
2 changes: 1 addition & 1 deletion scripts/dynamic-router.lua
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ local function ensure_defaults(state)
state.routes = state.routes or {}
state["is-admissible"] =
state["is-admissible"] or {
path = "/default",
path = "default",
default = "true"
}
state["sampling-rate"] = state["sampling-rate"] or 0.1
Expand Down
24 changes: 14 additions & 10 deletions scripts/hyper-token-p4.lua
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,27 @@
-- 3. Debit the source account.
-- 4. Increment the balance of the recipient account.
function charge(base, assignment)
ao.event("debug_charge", { "Charge received: ", { assignment = assignment } })
local admin = base.admin
local status, res, request = validate_request(base, assignment)
if status ~= "ok" then
return status, res
end
ao.event({ "debug_charge", { "Charging", { assignment = assignment } } })

-- Verify that the request is signed by the admin.
local committers = ao.get("committers", {"as", "message@1.0", assignment.body})
ao.event("debug_charge", { "Validating request: ", {
local admin = base.admin
local charge_req = assignment.body
local _, committers = ao.resolve(charge_req, "committers")
ao.event({ "debug_charge", { "Validating charge requester: ", {
admin = admin,
committers = committers,
admin = admin
} })
["charge-request"] = charge_req,
} }})

if count_common(committers, admin) ~= 1 then
return "error", base
end

local status, res, request = validate_request(base, assignment)
if status ~= "ok" then
return status, res
end

-- Ensure that the quantity and account are present in the request.
if not request.quantity or not request.account then
ao.event({ "Failure: Quantity or account not found in request.",
Expand Down
29 changes: 18 additions & 11 deletions scripts/hyper-token.lua
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@
--- 3. `credit-notice' messages that do not originate from a sub-ledger's
--- `token' are evaluated for parity of source code with the receiving
--- ledger. This is achieved by comparing the `from-base' field of the
--- credit-notice message with `process/id&commitments=none' on the receiving
--- ledger.
--- credit-notice message with `process/id&committers=none' on the
--- receiving ledger.

--- Utility functions:

Expand Down Expand Up @@ -318,7 +318,7 @@ local function validate_new_peer_ledger(base, request)
status, expected =
ao.resolve(
proc,
{ path = "id", commitments = "none" }
{ path = "id", committers = "none" }
)
ao.event({ "Expected `from-base`", { status = status, expected = expected } })
-- Check if the `from-base' field is present in the assignment.
Expand Down Expand Up @@ -866,18 +866,25 @@ end
--- Index function, called by the `~process@1.0` device for scheduled messages.
--- We route any `action' to the appropriate function based on the request path.
function compute(base, assignment)
ao.event({ "compute called",
{ balance = base.balance, ledgers = base.ledgers } })

assignment.body.action = string.lower(assignment.body.action or "")
local action = string.lower(assignment.body.action or "")
ao.event(
{
"compute called",
{
balance = base.balance,
ledgers = base.ledgers,
action = action
}
}
)

if assignment.body.action == "credit-notice" then
if action == "credit-notice" then
return _G["credit-notice"](base, assignment)
elseif assignment.body.action == "transfer" then
elseif action == "transfer" then
return transfer(base, assignment)
elseif assignment.body.action == "register" then
elseif action == "register" then
return register(base, assignment)
elseif assignment.body.action == "register-remote" then
elseif action == "register-remote" then
return _G["register-remote"](base, assignment)
else
-- Handle unknown `action' values.
Expand Down
2 changes: 1 addition & 1 deletion scripts/schema.gql
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ type Query {
after: String

# Optionally specify the result sort order.
#sort: SortOrder = HEIGHT_DESC
sort: SortOrder = HEIGHT_DESC
): TransactionConnection!
block(id: String): Block
blocks(
Expand Down
Loading
Loading