bee-check
Retrievability checker for Ethereum Swarm references — like
check.ipfs.network, but for Swarm and built on plain HTTP via
bee-rs.
bee-check c79394...bdc36a \
--bee https://my-bee.example.com \
--bee http://localhost:1633 \
--per-chunk
For each Bee URL ("vantage") it calls GET /stewardship/{ref} in
parallel and reports whether the reference is retrievable through that
node. Each vantage also reports its overlay address, proximity
order to the reference, and Bee version — so a miss tells you
which neighborhood the probe was in, not just that the answer was
no. With --per-chunk it walks the manifest, fetches every reachable
chunk via GET /chunks/{addr}, and shows which chunks are missing on
which vantage, tagged with the per-chunk proximity. With --reseed --stamp <id> it first calls GET /stamps/{id} to confirm the batch
is usable, then issues PUT /stewardship/{ref} against the first
vantage.
Install
Or build from source: cargo build --release then take the binary at
target/release/bee-check.
Quick examples
# Single-vantage check against the default node.
# Multi-vantage; --bee may repeat.
# Manifest drill-down: probe every chunk on every vantage.
# Machine-readable output (see SPEC.md).
# Re-seed after probing (requires the postage batch you want to use).
Configuration
BEE_API_URL— used as the single default vantage when no--beeflag is provided. Falls back tohttp://localhost:1633.
Exit codes
| code | meaning |
|---|---|
0 |
At least one vantage returned retrievable: true. |
2 |
No vantage returned retrievable: true (unretrievable, partial-with-no-success, or all-error). |
| other | Unexpected error (parse failure, invalid arg, etc.). |
Multi-vantage semantics
Each vantage gets its own probe. The top-level status aggregates them:
retrievable— every vantage said yesunretrievable— every vantage said no (or errored)partial— mixed: some yes, some noerror— every vantage errored before producing an answer
This is the "from MY vantage" model, not "globally retrievable" — see the Limitations section.
Limitations
/stewardship/{ref}must be exposed. Most public Swarm gateways serve only/bzzand/bytes. For a meaningful check, point--beeat a Bee node whose API you can reach (your own, a private gateway, etc.).- The probe is "from this vantage", not "globally retrievable".
Stewardship's
IsRetrievablewalks the manifest through the probed node's own retrieval path; another node in a different neighborhood might see different results. - Per-chunk drill-down is best-effort. When the root or a child
manifest can't be fetched, the walker can't recurse past it; the
top-level
stewardshipresult is still authoritative. - Re-seed needs a usable stamp.
--reseedcallsPUT /stewardship/{ref}, which requires the postage batch ID to be known to the probing node.
See also
SPEC.md— JSON output shape (consumed by the in-progressbee-check-webstatic SPA).- bee-rs — the underlying Rust SDK.
License
MIT OR Apache-2.0.