# IPFS in Go
# Boxo SDK
Boxo (opens new window) is the Go SDK for building IPFS applications and custom implementations. It provides reusable building blocks that can be composed to fit your needs.
- GitHub repository (opens new window)
- Go reference (pkg.go.dev) (opens new window)
- Examples (opens new window)
# Key packages
Content retrieval and exchange:
boxo/gateway(opens new window) -- HTTP Gateway server for serving IPFS content over HTTPboxo/bitswap(opens new window) -- peer-to-peer block exchange protocolboxo/routing(opens new window) -- content and peer routing (DHT, delegated)boxo/provider(opens new window) -- advertise content availability to the network
Data and storage:
boxo/blockstore(opens new window) -- content-addressed block storageboxo/blockservice(opens new window) -- block retrieval combining local storage and remote exchangeboxo/ipld/unixfs(opens new window) -- UnixFS file and directory encodingboxo/chunker(opens new window) -- file chunking strategiesboxo/pinning(opens new window) -- pin management
Naming and resolution:
boxo/path(opens new window) -- IPFS/IPNS path parsing and resolutionboxo/ipns(opens new window) -- IPNS record creation and validationboxo/namesys(opens new window) -- name resolution (IPNS, DNSLink)
Network setup:
boxo/bootstrap(opens new window) -- bootstrap peer list managementboxo/autoconf(opens new window) -- automatic node configuration (routing, bootstrappers)
# Other Go packages in the IPFS ecosystem
# Kubo RPC Client
If you have a running Kubo (opens new window) node, you can control it from Go using its /api/v0 HTTP RPC endpoint. This is the same interface used by the ipfs CLI when a daemon is already running.
- Kubo RPC client (Go) (opens new window): the recommended Go client for the Kubo RPC API
- Kubo RPC API reference: full list of available RPC commands
- RPC API clients in other languages: JavaScript, Python, Java, and more
Looking for an embedded/in-process IPFS API?
If you're considering embedding Kubo directly in your Go application via its internal CoreAPI, look at using the Boxo SDK instead. Boxo provides modern, modular building blocks that replace Kubo's internal CoreAPI for most use cases.
# Kubo reference docs
For more about configuring and running Kubo:
- Configuration reference (opens new window)
- Installing command completion (opens new window)
- Mounting IPFS with FUSE (opens new window)
- Installing plugins (opens new window)
- Performance debugging guidelines (opens new window)
- IPFS API implementation guide (opens new window)
- Connecting with Websockets (opens new window)
- Building on Windows (opens new window)
- Additional guides (opens new window)
# Hands-on examples
There are use-case examples in the ipfs/kubo GitHub repository (opens new window). They're all self-contained projects that let you spin up and test environments quickly. Check them out (opens new window).
A good starting place is Use Kubo as a library to spawn a node and add a file (opens new window).