Installation

CrowdControl ships as a single Go binary (cc) plus native SDKs for six languages. Pick the one that matches your deployment.

Pre-built binaries

Every release publishes pre-built binaries for Linux, macOS, and Windows on amd64 and arm64. Grab the latest from GitHub Releases:

# Linux / macOS
OS=$(uname -s)
ARCH=$(uname -m)
curl -L "https://github.com/mikemackintosh/crowdcontrol/releases/latest/download/crowdcontrol_0.1.0_${OS}_${ARCH}.tar.gz" \
  | tar xz cc cc-lsp
sudo mv cc cc-lsp /usr/local/bin/

Each archive includes cc, cc-lsp, README, LICENSE, SPEC.md, and the example policies. A checksums.txt with SHA-256 hashes is published alongside.

Docker

docker run --rm ghcr.io/mikemackintosh/crowdcontrol:latest version
docker run --rm -v "$PWD/policies:/policies:ro" \
  ghcr.io/mikemackintosh/crowdcontrol:latest \
  serve --policy /policies --addr :8080

The release image is built from distroless/static-debian12:nonroot — ~3 MiB, no shell, no package manager, runs as UID 65532.

Go install

If you have Go installed, go-install builds from source and puts the binary in $GOPATH/bin:

go install github.com/mikemackintosh/crowdcontrol/cmd/cc@latest

Verify:

cc version

Build from source

git clone https://github.com/mikemackintosh/crowdcontrol
cd crowdcontrol
go build -o cc ./cmd/cc
./cc version

LSP server

A language server for editor integration (diagnostics, hover, go-to-definition).

go install github.com/mikemackintosh/crowdcontrol/cmd/cc-lsp@latest

VS Code extension

The VS Code extension lives in its own repo at mikemackintosh/vscode-crowdcontrol. Install from source or (once published) via the VS Code Marketplace.

Zed extension

The Zed extension lives at mikemackintosh/zed-crowdcontrol. It references the standalone tree-sitter grammar at mikemackintosh/tree-sitter-crowdcontrol. Both repos include install instructions.

Go library

go get github.com/mikemackintosh/crowdcontrol
import "github.com/mikemackintosh/crowdcontrol"

eng, err := crowdcontrol.New([]string{"./policies"})
if err != nil { panic(err) }

results := eng.Evaluate(map[string]any{
    "user":    map[string]any{"name": "alex", "role": "intern"},
    "request": map[string]any{"action": "delete"},
})

Other SDKs

CrowdControl has native SDKs for Python, TypeScript, Ruby, Kotlin, and PHP. See the SDK page for language-specific install instructions.