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-argsforge:--foundry-version,--foundry-docker-image,--extra-build-args,--extra-test-argsgo(remote only):--fuzz-targets,--go-version,--go-build-directory,--go-module-root,--execution-timeoutrust(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 least1m(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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| kaas_cli-0.1.310.tar.gz | 37.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.