# API resources for go-ipfs
# Working with go-ipfs
go-ipfs is the primary reference implementation of IPFS. It is a command-line application, but can also be used as a library in other Go programs.
For more about using
go-ipfs, see any of the following reference documents:
- Configuration reference
- Installing command completion
- Mounting IPFS with FUSE
- Installing plugins
For more technical information about building, debugging or using the API, see:
- Performance Debugging Guidelines
- IPFS API Implementation
- Connecting with Websockets
- Building on Windows
- Additional guides
If you plan to use
go-ipfs as a package in your own Go application, you can take any of three main approaches:
go-ipfsto run IPFS directly in your own process. See the CoreAPI constructor.
go-ipfs-htp-clientto communicate with an IPFS daemon in a separate process via its HTTP API (this is what
go-ipfsdoes if a daemon is already running). See the http client.
- Use other Go packages to communicate with the HTTP API directly. See the HTTP API reference.
# Go CoreAPI
CoreAPI interfaces for go-ipfs. Package iface defines IPFS Core API, which is a set of interfaces used to interact with IPFS nodes.
# Go embedded client
Package coreapi provides direct access to the core commands in IPFS. If you are embedding IPFS directly in your Go program, this package is the public interface you should use to read and write files or otherwise control IPFS. This package is experimental and subject to change.
If you are running IPFS as a separate process, you should use
go-ipfs-api to work with it via HTTP. As we finalize the interfaces in this embedded client,
go-ipfs-api will transparently adopt them so you can use the same code with either package.