run Command Documentation
Description:
The kaas-cli run
command executes Kontrol proofs either locally, within a Docker container, or remotely on KaaS infrastructure. Kontrol is an open-source formal verification tool for Ethereum smart contracts, maintained by Runtime Verification (Kontrol GitHub repository).
Requirements:
To run your tests you will need:
For remote runs you must have a valid internet connection and license with the KaaS online platform at more info on the website. OR
Kontrol must be installed locally. See Kontrol documentation for installation instructions. OR
Docker must be installed locally. See Docker documentation for installation instructions.
You must have at minimum a
foundry.toml
file at the root of you TEST directory.A
kontrol.toml
file is optional, but if present, it will be used to run the tests using specific configuraiton options passed to kontrol.kontrol.toml
is a kontrol specific configuration file that can be used to specify additional options for the proof run, and manage what kontrol does or does not do.
Usage:
Kaas CLI will attempt to run the tests within the current working directory. So long as a foundry.toml file is present, it will be used to run the tests. If no foundry.toml file is present, it will exit. If a kontrol.toml file is present, it will be used to run the tests using specific configuraiton options passed to kontrol.
If your execution directory for tests are within a subdirectory, either cd
to that directory or use the --test-root
flag to specify the path to the tests.
Key Environment Variables:
FOUNDRY_PROFILE
: Set the preferred profile for your kontrol tests. Example:export FOUNDRY_PROFILE=kprove
Otherwise, the default profile will be used. And if no 'out' definition is provided here kaas-cli will fallback to using 'out' for dumping all kcfg proof files.
Key Options:
--mode, -m
: Specifies the execution mode. Accepted values arelocal
,remote
, orcontainer
.local: Runs Kontrol proofs directly on the host machine. Requires Kontrol to be installed locally, see Kontrol documentation for installation instructions.
container: Executes proofs inside a Docker container on the host machine, ensuring a consistent and isolated environment.
remote: Submits proofs to KaaS remote compute infrastructure, requiring authentication and a valid vault specification.
--watch, -w
: Monitors the job execution status. If set, waits until the job is completed, applicable in all modes.--build-only, -bo
: Only runskontrol build
without executingkontrol prove
.--prove-only-profile, -pop
: Runskontrol prove
on a previously built proof, without executingkontrol build
. Requires a profile name.--kontrol-version, -kv
: Specifies the Kontrol version. Defaults to "v0.0.0" if not provided (Kontrol releases on GitHub).--kontrol-docker-image, -kdi
: Specifies the Docker image for running Kontrol in container mode.--url, -u
: The API server URL. Defaults to the configured server URL and is typically used for development or testing environments.--vault-spec, -vs
: Required inremote
mode. Specifies the vault in<ORG_NAME>/<VAULT_NAME>
format.--token, -t
: A personal access key for authentication against the remote server. If not provided, you must authenticate using environment variables or device flow authentication.--branch, -b
: (Optional) Specifies a Git branch for remote runs, aiding in reproducible CI/CD workflows.--test-root, -tr
: Specifies the test folder root path relative to the project root.--extra-build-args, -eb
: Additional arguments passed directly tokontrol build
. For available options, consult the Kontrol Build Options documentation.
Execution Flow:
Local Mode: Calls
kontrol build
andkontrol prove
directly on the host. Kontrol must be installed beforehand. If Kontrol is not found, the CLI will provide installation guidance (Kontrol Documentation).Container Mode: Runs on the host machine. Uses a Docker container to run
kontrol build
andkontrol prove
. This ensures an isolated environment with Kontrol installed without modifying the host system.Remote Mode: Uses KaasClient to run proofs on the remote KaaS infrastructure. Requires
--vault-spec
and--token
. If--watch
is set, the CLI monitors the job until completion.
Error Handling and Output:
--verbose, -v
enables additional output useful for troubleshooting.
Example (Local Mode):
Example (Remote Mode):
Last updated