mrkeyoor.com_
Sun 13 Sept 17:41 UTC
Self-Hostedevaluationupdated 13 Sept 2026

kubo review

Kubo is the Go implementation of IPFS, a network daemon that stores and serves files by their content identifier instead of a fixed server address. It gives operators a command line, an HTTP gateway for browsers, an admin API, and a peer-to-peer node for publishing and retrieving IPFS data.

trackingstars / 7d
Verdict

Our Kubo run installed 585 packages and built in 97 seconds, but 9 of 89 tests failed, so adoption now needs a local release gate as well as an ownership plan. Kubo remains the practical choice when a service specifically needs the established Go IPFS daemon, gateway, and RPC interface. Do not start a new dependency on it without deciding who will supply fixes after Shipyard exits on September 30, 2026.

We ran it

Lab card: what happened when we ran kuboScreenshot of kubo (docs.ipfs.tech/how-to/command-line-quick-start)
Install✓ · 96s585 packages
Build✓ · 97s
Tests✗ · 90s80 passed · 9 failed of 89 (go test)
Repo1022 files~132,100 lines of source · 13.1 MB · 17 CI workflows · Dockerfile · tests dir

Answers from our run

Does kubo build from source?

Dependencies installed in 96 seconds (585 packages), and the build succeeded in 97 seconds. We cloned commit 8967407 into a clean Debian container with 3 CPUs and no project-specific setup.

Do kubo's tests pass?

Not all of them: 80 of 89 passed and 9 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use kubo?

New deployments that require a named upstream maintainer beyond September 30, 2026: the v0.43.0 release says Shipyard's IPFS work ends then and names no replacement maintainer.

What are the alternatives to kubo?

Helia, Iroh. Our Kubo run installed 585 packages and built in 97 seconds, but 9 of 89 tests failed, so adoption now needs a local release gate as well as an ownership plan.

Setup3/596-second install; build passed, but 9 of 89 tests failed
Docs5/5Specific guides cover installs, APIs, gateways, limits, and debugging
Community3/517,132 stars and live PRs, but Shipyard exits September 30
Maturity4/5v0.43.0 is capable, but post-September ownership is unresolved

Who it’s for

Operators who need a long-running IPFS node with a command line, HTTP gateway, and remote administration API.
Teams publishing UnixFS files or directories that must stay compatible with the wider IPFS network.
Go developers who want the established IPFS daemon while keeping application code behind HTTP RPC.
Public gateway or archival operators prepared to manage reachability, pinsets, memory, monitoring, and content policy.

Who it’s NOT for

New deployments that require a named upstream maintainer beyond September 30, 2026: the v0.43.0 release says Shipyard's IPFS work ends then and names no replacement maintainer.
Small hosts with no room for network and announcement load: the README recommends at least 6 GB of RAM and 2 CPU cores, with more memory needed as pinsets grow.
Teams that cannot protect a remote admin endpoint: Kubo's security guide says the RPC API should stay on localhost unless authentication is configured.
Browser-only JavaScript applications that do not need a separate daemon: Kubo's README points those users to the TypeScript implementation Helia.
Release pipelines that require the reviewed commit to pass its full Go suite unchanged: our run ended with 9 failures out of 89 tests.

Setup reality

Our sandbox installed Kubo in 96 seconds with 585 packages, then built it successfully in 97 seconds. The test command failed after 90 seconds: Go reported 80 passed and 9 failed out of 89 at commit 8967407.

A basic local node needs no hosted credential. You install a binary or build with Go, Git, GNU Make, and optionally GCC, then run ipfs init and keep the daemon online. The repository holds the node identity, configuration, and stored blocks.

The README recommends at least 6 GB of RAM and 2 CPU cores. Public reachability normally needs TCP and UDP port 4001, while the admin API defaults to localhost port 5001 and the gateway to 8080. Large pinsets add memory and announcement work, and the RPC endpoint needs authentication before remote exposure.

Kubo v0.43.0 combines an IPFS node, gateway, and admin API

Kubo v0.43.0 is a daemon for storing, finding, and serving content addressed by a CID. It speaks to other IPFS peers over the network, exposes a command line, provides an HTTP gateway for browsers, and accepts administrative calls through an RPC API. UnixFS supplies the file and directory model, while Bitswap and HTTP handle verifiable retrieval. The project is dual licensed under Apache 2.0 and MIT.

That breadth explains the size of the code we examined. The measured checkout had 1,022 files and about 132,100 lines of source before dependencies. Kubo is suitable when one service needs to import data, keep it pinned, announce it to peers, retrieve remote blocks, or serve an IPFS gateway. A team that only needs a library should look at Boxo or Helia before adopting a separate network daemon.

The README recommends 6 GB of RAM and 2 CPU cores

Kubo's README recommends at least 6 GB of RAM and 2 CPU cores for ordinary use. It also estimates about 1 GiB of RAM per 20 million items when large pinsets are reprovided to the Amino DHT. An underprovisioned node may restart, miss its announcement window, and leave some content undiscoverable to other peers. This is service capacity that has to be planned, not a one-time installation cost.

Our sandbox had 3 CPUs and 8 GB of RAM, enough to complete the 96-second install and 97-second build. We did not keep a daemon online, publish a large pinset, or measure retrieval speed, so those results say nothing about production throughput. Kubo's low-memory guide separately tells operators to coordinate the Go memory limit, process limits, routing mode, relay service, and DHT announcement workers on constrained hardware.

What happened when we ran it

Our sandbox installed 585 packages in 96 seconds and built Kubo successfully in 97 seconds. The test step then ran for 90 seconds and exited with code 1. Go reported 80 passed and 9 failed out of 89. These results came from commit 8967407 in a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets.

The end of the log placed failures in github.com/ipfs/kubo/test/cli, its autoconf package, and its migrations package. It named TestAutoConfExtensibility_NewSystem, TestMixedMigration15ToLatest, and TestMigration16ToLatest. The integration package passed in the same tail. The excerpt does not show the error messages for those failed cases, so it does not support a claim about their cause or a workaround.

The repository scan found 17 CI workflow files, a Dockerfile, and a tests directory. The checkout occupied 13.1 MB and contained about 132,100 source lines across 1,022 files. That is a well-instrumented project on paper, yet the clean-container result still matters: the exact commit we tested did not clear its full go test command, even though installation and compilation succeeded.

Ports 4001, 5001, and 8080 need different exposure rules

Kubo's swarm listens on TCP and UDP port 4001 by default, and the firewall guide says a public node should allow both. The admin RPC API defaults to localhost port 5001. The HTTP gateway defaults to localhost port 8080. Operators may expose each service differently, but opening all three with the same firewall rule would give public clients more access than the documented defaults intend.

The configuration guide says to keep the RPC API on localhost unless API.Authorizations is configured. A basic node generates its own peer identity during ipfs init, so Kubo itself does not require a hosted account or API token. Remote administration still needs authentication and careful routing. A public gateway also needs a decision about arbitrary CID fetching, because the guide recommends Gateway.NoFetch when the operator wants to prevent it.

Shipyard exits September 30 while pull requests still arrive

The v0.43.0 release, published August 3, 2026, says it is Shipyard's last Kubo release with new features. Shipyard says its IPFS work ends September 30 and that no one there will maintain Kubo afterward. The same notice allows security and bug-fix releases before that date. It does not name the team or person who will own releases after the handoff.

Current activity is real and should not be mistaken for abandonment. GitHub recorded the last push on September 9, 2026, while new pull requests were opened on September 12 and 13. The repository had 17,132 stars and 876 combined open issues and pull requests when fetched, split by GitHub search into 794 issues and 82 pull requests. That queue and the approaching maintainer exit create an ownership risk despite recent code movement.

The 9 failed tests make a cautious trial more sensible than a blind upgrade. Choose Kubo when IPFS compatibility, the Go daemon, or its gateway behavior is the requirement, then pin a version and run the relevant migration and autoconfiguration tests in your environment. Helia is the closer fit for JavaScript and browser work. Iroh suits new Rust networking projects that can give up IPFS compatibility. After September 30, every Kubo operator should know who will review security fixes and cut the next release.

Alternatives

ProjectWhat it isPick it when
HeliaA TypeScript implementation of IPFS designed for JavaScript applications.pick this instead when IPFS must run inside a browser or JavaScript process and a separate Go daemon would add needless operations.
Iroh gh↗A Rust library for direct QUIC connections and NAT traversal using endpoint keys.pick this instead when you are designing a new Rust peer-to-peer application and do not require IPFS protocol or CID compatibility.

What people are saying

  1. [github-trending] ipfs/kubo

Sources

  1. Kubo README
  2. Kubo v0.43.0 release
  3. Kubo configuration security guidance
  4. Kubo low-memory operations guide
  5. Kubo developer guide
  6. Kubo open issues and pull requests
  7. Tested Kubo commit 8967407

More self-hosted reviews

fleetbase · ever-gauzy · obot · InvisiProxy · bagisto · keepassxc · the whole board →