Skip to main content

KaaS CLI

Simple Installation

Our deployments can be found on Pypi.

Installation

pip install --user kaas-cli or sudo pip install kaas-cli

For Developers

Prerequisites: python >= 3.11, pip >= 20.0.2, poetry >= 1.3.2.

Installation

To install the package using pip, start by building from Source

make build
pip install dist/*.whl

Installation with uv

uv is a fast Python package manager that can be used as an alternative to pip and poetry.

uv sync

This will create a virtual environment and install all dependencies.

Environment Variables

Configure the CLI by copying the example environment file and setting up the necessary environment variables:

cp .flaskenv.example .flaskenv

Then, edit the .flaskenv file to match your settings.

Usage

After installing the dependencies with poetry install, you can spawn a shell using poetry shell, or alternatively, use make:

make shell
kaas-cli hello
kaas-cli --version

Usage with uv

After installing the dependencies with uv sync, you can run CLI commands directly:

uv run kaas-cli hello
uv run kaas-cli --version

Or activate the virtual environment and use the CLI as usual:

source .venv/bin/activate
kaas-cli hello
kaas-cli --version

To verify the installation, run kaas-cli hello. If you see the message Hello World!, the CLI is set up correctly.

Static Analysis

kaas-cli uses Pyright for static type checking.

make check-pyright
make check

Run Command by Mode

kaas-cli run supports multiple test modes. Flags are mode-specific:

  • kontrol: --build-only, --prove-only-profile, --kontrol-version, --kontrol-docker-image, --extra-build-args, --extra-prove-args
  • forge: --foundry-version, --foundry-docker-image, --extra-build-args, --extra-test-args
  • go (remote only): --fuzz-targets, --go-version, --go-build-directory, --go-module-root, --execution-timeout
  • rust (remote only): --fuzz-targets, --rust-version, --rust-build-directory, --rust-fuzz-engine, --rust-fuzz-args, --execution-timeout

Remote Fuzzing Jobs

kaas-cli run supports remote fuzzing with --test-mode go and --test-mode rust.

Use --fuzz-targets with a comma-separated list (up to 5 targets). Each target starts a separate remote job.

The CLI checks available fuzzing capacity before submitting jobs. If the vault's concurrent job limit is reached, you'll see a message indicating how many slots are available.

Go fuzzing

kaas-cli run \
  --mode remote \
  --test-mode go \
  --vault-spec org/vault \
  --token "$KAAS_TOKEN" \
  --branch main \
  --fuzz-targets "^FuzzTransfer$,^FuzzMint$" \
  --go-version 1.23.8 \
  --go-build-directory "./..."

For repositories where go.mod is not at the repo root (e.g. golang/go: module at src/go.mod), set --go-module-root to that directory (e.g. src) and pass --test-root / --go-build-directory relative to it (e.g. ./html/template, not ./src/html/template).

kaas go test shorthand

The kaas go test command mirrors go test -fuzz syntax for a more familiar interface. It supports persistent configuration via .kaas-cli.toml (see below).

kaas go test -fuzz='^FuzzVerifyInteropMessagesValid$' ./op-supernode/supernode/activity/interop/

Multiple fuzz targets can be specified as a comma-separated list:

kaas go test -fuzz='^FuzzTransfer$,^FuzzMint$' ./path/to/pkg/

Each target starts a separate remote job (up to 5 targets).

Additional flags for kaas go test:

  • --commit: Pin a specific git commit hash (defaults to HEAD)
  • --fuzztime: Go-style duration of at least 1m (e.g. '1m', '5m', '1h'), converted to execution timeout
  • --execution-timeout: Execution timeout in minutes (mutually exclusive with --fuzztime)

Rust fuzzing

kaas-cli run \
  --mode remote \
  --test-mode rust \
  --vault-spec org/vault \
  --token "$KAAS_TOKEN" \
  --branch main \
  --fuzz-targets "fuzz_transfer,fuzz_mint" \
  --rust-version stable \
  --rust-build-directory "." \
  --rust-fuzz-engine libfuzzer

Configuration File (.kaas-cli.toml)

The kaas go test command supports persistent configuration via a .kaas-cli.toml file. If no config file is found, the CLI will interactively prompt you to create one.

CLI flags always take priority over config values. The config file is automatically added to .gitignore.

[default]
vault_spec = "org/vault"
token = "your-token"
branch = "main"
url = "https://kaas.runtimeverification.com/"

[go]
go_version = "latest"
go_build_directory = "./..."
go_module_root = "" # optional; e.g. "src" for golang/go stdlib fuzzing
# skip_go_build = true  # optional; skip runner's upfront `go build` (fuzz still uses `go test`)
execution_timeout = 480

Documentation

For detailed usage instructions of the kaas-cli tool, please refer to the official documentation.

Metadata

Release files for kaas-cli 0.1.310

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kaas-cli 0.1.310
File Size Uploaded Provenance
kaas_cli-0.1.310.tar.gz 37.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for kaas-cli 0.1.310
File Interpreter ABI Platform
kaas_cli-0.1.310-py3-none-any.whl Python 3 none any Details

Total release size: 78.9 kB

Release files / kaas_cli-0.1.310.tar.gz

Download URL kaas_cli-0.1.310.tar.gz
Size 37.8 kB
Tags Source
SHA-256 checksum
How to use checksums
004fb859acc3959a41740c60c4c632c18d3e48207668a45ef88f740d84e09132
BLAKE2b-256 checksum
How to use checksums
428e595d49f2e17f01930b0d0257953ece4e3f73373bda4c853c0550d15d3e46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / kaas_cli-0.1.310-py3-none-any.whl

Download URL kaas_cli-0.1.310-py3-none-any.whl
Size 41.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
12bad3caa71dec3591796fc68bdd19bcb43e80d8cc7b8e246b6d4132c76592bb
BLAKE2b-256 checksum
How to use checksums
df677fabb67953f02c7395190d15416052782dadf7788e20eb4271b42d6e28f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for kaas-cli 0.1.310

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.310 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page