Installation

The CLI is one static binary — pick whichever install path fits your machine.

Homebrew (macOS, Linux)

brew install commstate/tap/commstate

The tap lives at commstate/homebrew-tap and is updated automatically by goreleaser on every v* tag.

brew upgrade commstate              # later
brew uninstall commstate            # if you ever need to

Direct download

Each release publishes archives for 5 OS/arch combos to the GitLab release entry. Pick the one that matches uname -ms.

# Linux x86_64
curl -L https://gitlab.wexron.io/commstate/core/cli/-/releases/v1.0.0/downloads/commstate_1.0.0_linux_x86_64.tar.gz \
  | tar -xz
sudo mv commstate /usr/local/bin

# macOS Apple Silicon
curl -L https://gitlab.wexron.io/commstate/core/cli/-/releases/v1.0.0/downloads/commstate_1.0.0_macos_arm64.tar.gz \
  | tar -xz
sudo mv commstate /usr/local/bin

# Windows x86_64 (PowerShell)
Invoke-WebRequest `
  -Uri https://gitlab.wexron.io/commstate/core/cli/-/releases/v1.0.0/downloads/commstate_1.0.0_windows_x86_64.zip `
  -OutFile commstate.zip
Expand-Archive commstate.zip -DestinationPath $env:USERPROFILE\bin

Verify the checksum against the SHA256SUMS.txt published with the release:

curl -L https://gitlab.wexron.io/commstate/core/cli/-/releases/v1.0.0/downloads/SHA256SUMS.txt
sha256sum commstate_1.0.0_linux_x86_64.tar.gz
# Compare manually

From source

Requires Go 1.22+.

git clone https://gitlab.wexron.io/commstate/core/cli.git
cd cli

make build           # produces ./commstate in the cwd
make install         # go install — drops binary in $GOBIN
make test            # race + coverage
make snapshot        # full goreleaser cross-compile to ./dist/, no publish

The Makefile injects version metadata at link time so commstate version is useful even on local builds:

make build VERSION=1.2.3-dev
./commstate version
# commstate 1.2.3-dev
#   commit: abc1234
#   built:  2026-05-03T18:06:00Z

Verify

commstate version
commstate --help

You should see the version line, the build commit, and a list of subcommands. If you get command not found, the binary isn't on your $PATH — either move it into a directory that is, or symlink it.

Shell completion

Cobra-generated, supported on bash, zsh, fish, and PowerShell:

# bash
commstate completion bash > /etc/bash_completion.d/commstate        # system-wide
commstate completion bash > ~/.local/share/bash-completion/completions/commstate  # user

# zsh — most common path
commstate completion zsh > "${fpath[1]}/_commstate"

# fish
commstate completion fish > ~/.config/fish/completions/commstate.fish

# Test it works
commstate <TAB><TAB>

Upgrading

Homebrew users: brew upgrade commstate and re-run any command — your ~/.commstate/config.toml and stored credentials carry over without changes.

Direct-download / from-source users: replace the binary, that's it. Config and credential formats are versioned; older binaries silently ignore unknown keys, newer binaries default missing fields.

Uninstalling

brew uninstall commstate                                  # if installed via Homebrew
sudo rm /usr/local/bin/commstate                          # direct install
rm -rf ~/.commstate                                       # config + file-fallback creds
# Tokens in your OS keychain stay until you `commstate auth logout` first