Swarm Bee: Go Client for Publishing and Accessing Swarm Data
Bee is a Swarm client implemented in Go. It’s the basic building block for the Swarm network: a private; decentralized; and self-sustaining network for permissionless publishing and access to your (application) data.
At a glance
- What is it?
- Swarm Bee is the Go client that forms the peer-to-peer Swarm network described by ethersphere/bee. It targets operators who need to publish, retrieve, and manage application data through Swarm, but its versioning and deployment details require careful review before adoption.
- Who is it for?
- Adopt Bee when the requirement is to operate a Go-based client within the Swarm network and you can manage peer connectivity, persistence, upgrades, and protocol changes. Do not adopt it as a generic HTTP file server or as a system whose client API and wire protocol can be upgraded without review.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Why the Bee Client Exists
Bee solves a specific infrastructure problem: operating a node in the Swarm network rather than relying on a centrally controlled service to publish and access application data. The repository describes Swarm as a permissionless publishing and access network, and identifies Bee as a basic building block for that network. The intended users are operators, developers, and organizations that need a node implementation rather than only a client library for an unrelated protocol.
The distinction matters. Bee is not presented as a general-purpose database or a conventional web server. Its dependencies include `go-ethereum`, `libp2p`, storage-related components, postage components, batch archive support, and an OpenAPI specification. Based on the repository layout, the client spans networking, data storage, incentives or postage handling, API exposure, and operational tooling. The README points to the official documentation for the full deployment model rather than describing every configuration option.
The project also carries a network and account risk boundary. Its disclaimer says that using Bee involves risks including damage to hardware and loss of funds associated with the Ethereum account connected to a node. That warning makes Bee unsuitable for an operator who wants a passive, zero-touch deployment or who cannot separate public node participation from sensitive Ethereum account activity.
How Bee Is Structured in the Go Repository
The repository is a Go module named `github.com/ethersphere/bee/v2`, and its `go.mod` declares Go 1.26. That module path matters to Go consumers because it explicitly carries the `/v2` component. The project is not a small single-purpose utility in the repository layout. It contains `cmd/`, `pkg/`, `openapi/`, packaging files, multiple Dockerfiles, and build configuration, which indicates a node application with internal libraries and an externally specified API.
The dependency list provides a more concrete view of the architecture. `github.com/libp2p/go-libp2p` supports peer-to-peer networking, while `github.com/ethereum/go-ethereum` connects the client to Ethereum-related functionality. `github.com/ethersphere/batch-archive`, postage-related ABI packages, and storage-incentive-related packages point to participation in Swarm's storage and incentive mechanisms. `goleveldb` appears as a local storage dependency, and Prometheus and OpenTelemetry packages provide operational and telemetry surfaces.
The OpenAPI file at `openapi/Swarm.yaml` is treated separately from the main Bee version. This separation implies that operators may need to distinguish a node's executable version from the HTTP API contract exposed to applications. The README explicitly states that the API version follows Semantic Versioning, while the main Bee version does not.
Building Bee and Running the First Local Check
The README does not include shell installation commands or a first-use workflow. It directs users to the official installation guide at `https://docs.ethswarm.org/docs/bee/installation/quick-start`. The repository does contain build commands, so a developer can build from a checkout using the documented Makefile target. The command below is taken from the repository's `Makefile` and produces the `dist` artifact through the `binary` target.
make binaryThe build target runs with `CGO_ENABLED=0`, invokes the Go toolchain, and writes the executable to `dist`. The repository's Dockerfile calls the same target during its image build, then copies the resulting binary into the runtime image. A successful build is therefore a useful compile check, but the README does not document the CLI syntax for starting a node, creating an Ethereum account, selecting a network, or confirming that a node has joined Swarm.
For developers who want to resolve the module dependencies before a build, the repository Dockerfile uses the following command:
go mod downloadThat command downloads modules declared by `go.mod`. It does not configure Bee, start a node, or upload data. The missing startup instructions are a real onboarding constraint, not something that can be safely reconstructed from the module dependencies.
Docker Deployment and Persistent Bee State
The Dockerfile provides a concrete container shape. It builds in `golang:1.26`, creates a Debian 12.12 slim runtime, installs `ca-certificates`, creates a non-root `bee` user with UID and GID 999, and copies the binary to `/usr/local/bin/bee`. The image exposes ports 1633 and 1634, declares `/home/bee/.bee` as a volume, sets `ENTRYPOINT ["bee"]`, and runs as the `bee` user.
EXPOSE 1633 1634
USER bee
WORKDIR /home/bee
VOLUME /home/bee/.bee
ENTRYPOINT ["bee"]The volume declaration means container removal does not necessarily remove the directory that the image uses for Bee data. An operator still needs to confirm how that data is organized and backed up. The Dockerfile does not show a command-line startup invocation, environment variables, health check, configuration file, or network mode. It also does not explain which port belongs to which Bee service.
This packaging is useful for teams that already manage container volumes and non-root runtime users. It is less suitable for a quick local experiment where the operator expects the image to be self-configuring. The project documentation remains the authoritative place for those missing deployment details.
Versioning, Upgrades, and API Compatibility
Bee has an unusual compatibility policy. The README says the main Bee version does not strictly follow Semantic Versioning. A minor version bump can include breaking changes to individual peer-to-peer wire protocol implementations, while patch releases are expected to carry backward-compatible features and bug fixes. Major bumps are reserved for significant changes to Swarm's incentive structure. This policy makes automatic minor upgrades risky for a node operator.
The API follows a different rule. Its version is represented in `openapi/Swarm.yaml` and follows Semantic Versioning. Applications can therefore use that version to assess API compatibility, but the API version does not eliminate the possibility that the node's network protocol has changed. A deployment may therefore need two separate reviews: whether client software can talk to existing peers, and whether local applications can continue using its API.
Recent releases include `v2.8.3`, `v2.8.3-rc3`, and `v2.8.3-rc2`, all dated in October 2026. The repository's last push was on 2026-10-16, shortly after the listed stable release. That information supports recent project activity, but it does not establish that every upgrade is operationally safe. The documented versioning policy is the stronger adoption constraint.
Limits of the Available Bee Documentation
The README does not document a rollback procedure, a migration guide for existing node data, a supported upgrade sequence for an operator, or a health endpoint. It also does not provide a complete list of ports, configuration keys, environment variables, API examples, or the command needed to start a production node. The `Makefile` supports development workflows such as building, linting, testing, and binary generation, but those targets are not a substitute for node operations documentation.
The disclaimer further limits what can be promised. It provides the software without warranties and warns that interaction with other nodes and the Ethereum account connected to a node carries risks. It does not quantify those risks, explain recovery, or state how account isolation should be configured. The documentation should be treated as the place to resolve those points before an operator attaches funds or exposes a service.
A central storage or HTTP delivery service is the practical alternative when predictable operations, a documented rollback path, and a stable interface matter more than participation in Swarm. Bee's approach is a decentralized peer-to-peer client with its own protocol, API, storage state, and network account concerns. That approach is a meaningful trade-off, but it is not automatically the better choice for every deployment.
Editorial conclusion
Adopt Bee when the requirement is to operate a Go-based client within the Swarm network and you can manage peer connectivity, persistence, upgrades, and protocol changes. Do not adopt it as a generic HTTP file server or as a system whose client API and wire protocol can be upgraded without review. Verify the official installation instructions, the selected release's API changes, the Ethereum account exposure described in the project disclaimer, and the volume required for `/home/bee/.bee` before deployment.
Frequently asked questions
How do I install the Bee client?
The README directs users to the official installation guide at `https://docs.ethswarm.org/docs/bee/installation/quick-start`. For source builds, the repository includes the `make binary` target, which creates the binary through the `dist` output.
Does Bee use Semantic Versioning?
The main Bee version does not strictly follow Semantic Versioning because protocol changes may appear in minor releases. The separate Bee API version, represented in `openapi/Swarm.yaml`, does follow Semantic Versioning.
What does the Bee Docker image expose?
The repository Dockerfile exposes ports `1633` and `1634`, declares `/home/bee/.bee` as a volume, runs as the non-root `bee` user, and uses `ENTRYPOINT ["bee"]`.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ethersphere-bee)Was this useful?