superstack is the command line interface to Superstack: sign in, claim
devices, push Lua code, and stream events and logs from your fleet. It is a
single static binary talking to the Superstack server's JSON API. The server is
a separate project; this repo is the CLI only. It is laid out as follows:
├── .github/dependabot.yml # Weekly action and module update PRs
├── .github/workflows # CI on pull requests, release on v* tags
├── .gitignore
├── .goreleaser.yaml # Build matrix and every publishing target
├── CLAUDE.md # Coding principles and architectural overview
├── flake.lock # Pins nixpkgs
├── flake.nix # The superstack package, and the dev shell
├── go.mod
├── install.sh # curl-to-shell installer for Linux and macOS
├── LICENSE
├── main.go # Entry point, version constant, and the command table
├── main_test.go
└── README.mdEach option needs a published release.
-
Linux and macOS. Pin a version by putting
VERSION=1.2.3on theshside of the pipe.curl -fsSL https://raw.githubusercontent.com/siliconwitchery/superstack-cli/main/install.sh | sh -
Homebrew:
brew install --cask siliconwitchery/tap/superstack
-
winget:
winget install SiliconWitchery.Superstack
-
Scoop:
scoop bucket add siliconwitchery https://github.com/siliconwitchery/scoop-bucket scoop install superstack
-
Arch Linux:
yay -S superstack-bin
-
Nix. Not in nixpkgs yet.
nix profile install github:siliconwitchery/superstack-cli
-
Any platform. Download an archive from the releases page, unpack it, and move
superstackonto yourPATH.
-
Install Nix with flakes enabled.
-
Clone the repository and enter the dev shell:
git clone git@github.com:siliconwitchery/superstack-cli.git ~/projects/superstack-cli cd ~/projects/superstack-cli nix develop
-
Build and run:
go build -o superstack . ./superstack
Do everything below once.
-
Create public repositories
siliconwitchery/homebrew-tapandsiliconwitchery/scoop-bucket, each with a README. -
Fork
microsoft/winget-pkgsintosiliconwitchery. -
Add a fine-grained token (Settings > Developer settings > Personal access tokens) as the Actions secret
TAP_GITHUB_TOKEN:- Resource owner:
siliconwitchery - Repository access:
homebrew-tapandscoop-bucket - Permissions: Contents, read and write
- Resource owner:
-
Add a classic token with the
public_reposcope as the Actions secretWINGET_GITHUB_TOKEN. A fine-grained token cannot open the pull request. -
Register at aur.archlinux.org, then:
ssh-keygen -t ed25519 -N "" -f aur_key cat aur_key.pub # paste into SSH Public Key in your AUR account settings cat aur_key # add as the Actions secret AUR_KEY rm aur_key aur_key.pub
-
Add one ruleset (Settings > Rules > Rulesets) targeting the default branch: require a pull request with 0 approvals, require the
buildstatus check, block force pushes, restrict deletions. Add a second targetingv*tags: block force pushes, restrict deletions.
-
Bump
versioninmain.go, then open and merge a pull request:git checkout -b version-0.1.0 git commit -am "Version 0.1.0" git push -u origin version-0.1.0 -
Merging creates a new commit, and the tag has to point at that one:
git checkout main && git pull grep '^const version' main.go git tag v0.1.0 git push origin v0.1.0
-
Write the release notes into the empty release body on GitHub, following the shape in CLAUDE.md.
-
Check that the winget pull request opened against
microsoft/winget-pkgs.
A tag carrying a prerelease suffix, v0.0.2-rc1, publishes a GitHub prerelease
and skips every package manager. Tags cannot be moved or deleted.