Prerequisites
Everything you need installed and configured before working on Crawbl.
Treat this page as the minimum setup checklist for your laptop and accounts. Once it is complete, you can run the backend locally and work with the shared dev environment without guessing which tools or credentials are missing.
Install the tools
Use mise when possible so everyone works with the same pinned versions. If you prefer manual installs, use the Homebrew list below.
Set up your accounts
Make sure GitHub, DigitalOcean, AWS, Pulumi, Cloudflare, and Snyk access are in place before you touch the cluster.
Configure credentials
Put the required tokens into crawbl-backend/.env, then authenticate doctl so the cluster tools can talk to DigitalOcean.
Run crawbl setup
./crawbl setup checks prerequisites, creates .env, and configures Snyk MCP (step 4/5 in the setup flow).
Verify access
Run the short credential checks at the end of the page to confirm your shell can reach GitHub, DigitalOcean, AWS, and Pulumi.
Install Tools
Option A: mise (recommended)
We use mise to pin exact tool versions. The .mise.toml file in crawbl-backend defines versions for all required tools.
# Install mise
curl https://mise.run | sh
eval "$(~/.local/bin/mise activate zsh)"
# Install all pinned tools
cd crawbl-backend
mise install
This installs the main tools the repos expect, using versions the team already pinned.
Option B: Homebrew
If you prefer managing tools manually:
brew install go kubectl helm doctl awscli pulumi/tap/pulumi
You also need Docker Desktop because local development starts supporting services in containers. Download it from docker.com/products/docker-desktop and verify:
docker info
And golangci-lint:
brew install golangci-lint
If you skip that, crawbl dev lint installs it on first use.
Version Checklist
| Tool | Minimum | Check command |
|---|---|---|
| Go | 1.25.8+ (see go.mod) | go version |
| kubectl | 1.30+ | kubectl version --client |
| Helm | 3.x | helm version --short |
| Docker | Latest stable | docker --version |
| doctl | Latest stable | doctl version |
| awscli | 2.x | aws --version |
| Pulumi | Latest stable | pulumi version |
| Snyk CLI | Latest stable | snyk --version |
The Snyk CLI is pinned in .mise.toml and installed automatically by mise install. It is used for security scanning of first-party Go code before each release.
The exact Go version is pinned in crawbl-backend/go.mod. Always check that file if you are unsure which version to use.
Accounts & Tokens
| Service | Used for | How to get access |
|---|---|---|
| GitHub | Source code | Org invite to Crawbl-AI from your team lead |
| DigitalOcean | Kubernetes cluster, container registry | Team-shared account — get a personal API token from the dashboard |
| AWS | Secrets Manager (eu-central-1) | IAM user with SecretsManager read/write |
| Pulumi | Infrastructure state backend | Free account at app.pulumi.com |
| Cloudflare | DNS and TLS certificates | Team-shared account — API token scoped to the Crawbl zone |
| Snyk | Security scanning of first-party Go code | Free account at app.snyk.io — ./crawbl setup configures the MCP integration automatically |
Configure credentials
All tokens live in a single .env file inside crawbl-backend. It is created automatically when you run ./crawbl setup, but you still need to fill in a few values for cluster operations:
cd crawbl-backend
cp .env.example .env # if it doesn't exist yet
Edit .env and set:
PULUMI_ACCESS_TOKEN="pul-..."
DIGITALOCEAN_TOKEN="dop_v1_..."
CLOUDFLARE_API_TOKEN="..."
Then authenticate the DigitalOcean CLI:
doctl auth init
Never commit .env to Git. It is already in .gitignore.
Verify access
# GitHub
gh repo list Crawbl-AI --limit 5
# DigitalOcean
doctl account get
# AWS
aws sts get-caller-identity --region eu-central-1
# Pulumi
pulumi whoami
What's next: Run the Backend — start the orchestrator locally.