Development¶
# Run tests
mise test
# Run linter
mise lint
# Build CLI (without GUI)
mise build-cli
# Build with GUI support — builds the frontend first, then embeds it into
# bin/suve. (A bare `go build -tags production` skips the frontend build, so the
# binary aborts at `suve --gui` with "no index.html could be found".)
mise build-gui
# Run E2E tests (requires Docker)
mise e2e-aws
# Coverage (unit + E2E combined)
mise coverage-all
Local Development with Emulators¶
mise run bash starts the selected cloud's emulator(s) and opens a shell with
the right environment injected, so suve (and suve --gui) talk to the local
emulators and auto-detect the active provider. Flags combine freely (0–4):
mise run bash --aws # AWS (localstack: SSM + Secrets Manager)
mise run bash --gcloud # Google Cloud Secret Manager
mise run bash --azure-appconfig # Azure App Configuration
mise run bash --azure-keyvault # Azure Key Vault
mise run bash --azure # both Azure services
mise run bash --aws --gcloud --azure # everything at once
# inside the shell (with one provider active):
suve --gui # auto-detects the active provider
suve param ls
suve secret list
# with several providers active, name the group:
suve aws param ls
suve gcloud secret list
Containers keep running after you exit the shell; stop them with
docker compose down (or mise run clean).
Every cloud is behind a docker compose profile (aws / gcloud / azure), so
nothing starts by default. To drive the AWS emulator manually instead of the
shell above:
SUVE_LOCALSTACK_EXTERNAL_PORT=4566 docker compose --profile aws up -d
AWS_ENDPOINT_URL=http://127.0.0.1:4566 \
AWS_ACCESS_KEY_ID=dummy \
AWS_SECRET_ACCESS_KEY=dummy \
AWS_DEFAULT_REGION=us-east-1 \
suve param ls
docker compose down
Important
Dummy credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) are required to prevent the SDK from attempting IAM role credential fetching. The mise run bash --aws shell sets these for you.