Install structsd

There are two supported paths for installing structsd:

  1. Prebuilt release binary (fastest; no Go toolchain needed)
  2. Build from source via the Makefile (required for unreleased branches or local patches)

After either path, structsd will be available on your PATH and structsd version will print the chain version.

Ignite CLI is no longer required to build structsd. It is only needed if you want to run a local devnet via make serve. The Makefile builds via plain go build.


The chain ships signed binaries via GoReleaser on every tag. Pick the asset for your OS/arch from the latest release at https://github.com/playstructs/structsd/releases.

# Pick one (replace VERSION with e.g. v0.16.0):
VERSION=v0.16.0

# Linux amd64
curl -L -o structsd.tar.gz \
  "https://github.com/playstructs/structsd/releases/download/${VERSION}/structsd_$(echo ${VERSION#v})_linux_amd64.tar.gz"

# macOS Apple Silicon
curl -L -o structsd.tar.gz \
  "https://github.com/playstructs/structsd/releases/download/${VERSION}/structsd_$(echo ${VERSION#v})_darwin_arm64.tar.gz"

tar -xzf structsd.tar.gz
sudo install -m 0755 structsd /usr/local/bin/structsd
rm structsd.tar.gz structsd

Verify:

structsd version

If asset names differ on the release page (GoReleaser layouts evolve), copy the URL directly from the release rather than relying on the template above.


Path B: Build from Source (Makefile)

Use this when you need a branch that has not been tagged yet, or when you are developing the chain locally.

1. Install Go (1.23+)

The Makefile enforces REQUIRE_GO_VERSION = 1.23. Newer minor versions (1.24, 1.25) are also fine.

Linux (amd64)

GO_VER=1.23.6
wget https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.linux-amd64.tar.gz
rm go${GO_VER}.linux-amd64.tar.gz

If an older Go was installed via apt, remove it first: sudo apt remove -y golang-go

macOS (Apple Silicon)

GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-arm64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-arm64.tar.gz
rm go${GO_VER}.darwin-arm64.tar.gz

macOS (Intel)

GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-amd64.tar.gz
rm go${GO_VER}.darwin-amd64.tar.gz

Alternatively on macOS: brew install go@1.23 (or any newer 1.x).

Configure PATH

Add to ~/.profile (or ~/.zshrc on macOS):

export PATH=$PATH:/usr/local/go/bin:~/go/bin

Reload: source ~/.profile (or source ~/.zshrc).

Verify

go version

Expected: go version go1.23.x linux/amd64 (or darwin/arm64, etc.). The Makefile will refuse to build with anything older than 1.23.

2. Clone and Build

git clone https://github.com/playstructs/structsd.git
cd structsd

# Most common: install into GOPATH/bin (~/go/bin), which is on your PATH
make install

# Or, build a binary into ./build/ without installing it
make build

make install runs go install -mod=readonly ./cmd/structsd, embedding the version, commit hash, and build tags via ldflags. The resulting binary lands at ~/go/bin/structsd.

make build writes to ./build/structsd instead.

If you need cross-compiled binaries, the Makefile also exposes build-linux-amd64, build-linux-arm64, build-darwin-amd64, build-darwin-arm64, and build-windows-amd64, plus build-all to do every supported platform in one shot.

Verify

structsd version

3. Update structsd

cd structsd
git fetch --tags
git checkout v0.16.0   # or `git pull origin main` for tip-of-tree
make install

make install is idempotent – it overwrites the previous binary at ~/go/bin/structsd.


Optional: Local Devnet (Ignite)

Only required if you want to run a chain locally for development.

# One-time
curl https://get.ignite.com/cli! | bash
ignite version

# In the structsd repo:
make serve              # ignite chain serve
make serve-reset        # ignite chain serve --reset-once
make serve-reset-verbose

For mainnet/testnet client use, you do not need Ignite – a structsd binary from Path A or Path B is sufficient.


Quick Check

Run all verifications in sequence:

go version && structsd version

If you also installed Ignite for local serving:

go version && ignite version && structsd version

If any command fails, revisit the corresponding step above.

Troubleshooting

See Also