# go-ipfs crash course - Normally used as a binary that runs on your machine with CLI + HTTP API interfaces - More advanced usage by utilizing go-ipfs as a library or build go plugins is possible - Doing a walkthrough with the CLI, but almost anything you can do with the CLI can also be done with the HTTP API ## Terminals - Start up two terminals - `ipfs id`, we're running a libp2p node here are stats - `ipfs add/get/cat/ls` - `ipfs add file.txt` + `ipfs cat Qm...` - `ipfs add file.txt --chunker=buzhash` + `ipfs cat Qm...` same results - Gateway, showing 127.0.0.1:8080/ipfs/Qm... - `ipfs add -r dir` - `ipfs ls Qm...` - show on gateway - `ipfs pin` - `ipfs pin ls` - `ipfs get bafy...` - `ipfs pin ls` unchanged - `ipfs pin add bafy... --offline` (i.e. no network since we already have it) - `ipfs pin ls` shows data - `ipfs swarm connect /p2p/peer...` p2p DNS - `ipfs pubsub` - If Time: - `ipfs dag` - `ipfs dag put/get` - `ipfs dag import/export` - DNSLink teaser - IPNS