Walk a new agent from key creation through first infrastructure builds in Structs.
Coding
structsd-install
Try itInstalls the structsd binary on Linux or macOS via prebuilt release assets or a Go 1.23+ Makefile build.
What it does
Covers both supported install paths for the Structs chain binary: downloading a signed prebuilt release from GitHub (recommended, no Go toolchain needed) and building from source with the project's Makefile, which requires Go 1.23 or newer. After installation, structsd is on your PATH and `structsd version` reports the chain version. Re-running the same steps against a new tag updates an existing install.
When to use it
- Setting up a new machine that needs structsd
- Updating structsd to a newer release tag
- Building an untagged branch or local patch from source
- Cross-compiling structsd for another supported OS/arch
The skill document
Install structsd
There are two supported paths for installing structsd:
- Prebuilt release binary (fastest; no Go toolchain needed)
- 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 viamake serve. The Makefile builds via plaingo build.
Path A: Prebuilt Release Binary (recommended)
The chain ships signed binaries via GoReleaser on every tag. Pick the asset for your OS/arch from the latest release at .
# Pick one (replace VERSION with e.g. v0.17.0):
VERSION=v0.17.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)
⚠️ Confirm with the user before running — the step below removes /usr/local/go. Ask first if an existing Go install is present.
GO_VER=1.23.6
wget https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz
# Removes existing Go installation — confirm with user before running
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.17.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
structsd: command not found— Ensure~/go/bin(Path B) or/usr/local/bin(Path A) is on your PATH. Runcommand -v structsdto confirm.go: command not found— Ensure/usr/local/go/binis on your PATH. Reload your shell profile.ERROR: Go version 1.23+ is requiredfrommake install— Your Go is too old. Re-install per step 1 above; the Makefile'scheck_versiontarget enforces this hard.- Build fails on
go mod tidy— Network access is required for the first build. Retry once you have connectivity, or setGOPROXY=directif you are behind a restrictive proxy. - Permission denied on
/usr/local— Usesudofor the tar extraction or forinstall -m 0755. On shared systems, ask your administrator. Path B does not require root because it installs to~/go/bin. gcc not installed for ledger support— Either installgcc(sudo apt install build-essential/xcode-select --install) or build withLEDGER_ENABLED=false make install.
See Also
- TOOLS — Environment configuration (servers, account, after structsd is installed)
- structs-onboarding skill — Player creation and first builds (requires structsd)
- structsd releases — Prebuilt binaries per OS/arch and changelog per tag
Related skills
Permissions, address management, and delegation in Structs. Use when granting/revoking permissions on objects or addresses, registering additional signing keys, managing multi-address accounts, or setting up minimum-permission delegate agents (mining bot, defense watcher, co-pilot). Covers the full 25-bit permission model and delegation recipes for multi-agent play.
Building interfaces and clients in the Structs universe — dashboards, forms, menus, HUDs, and companion apps using SUI, the design system the game itself is built with. Use when asked to build, style, or extend any Structs UI, or when writing client code that signs transactions, computes proof-of-work, or consumes GRASS events. This is about building software, not playing the game.
Earning and trading in Structs — selling energy via providers, buying capacity via agreements, allocations, reactor staking economics, the guild Central Bank (mint/redeem/convert), and token transfers. Use when you want to monetize surplus energy, shop for an energy agreement, set provider pricing, stake Alpha into a reactor for capacity, mint/redeem/convert guild tokens, or send tokens. For just keeping your own structs powered, see structs-energy.
Manage Structs guilds end-to-end — discover, join, rank members, moderate UGC, and run the central bank.
Walk an AI agent from install to producing Alpha Matter in Structs, using the gentlest CPU setting.