Antithesis logomark
DOCS

Snouty CLI

The Snouty CLI lets you or your agents interact with Antithesis from your terminal. You can launch test runs, view the results, validate your system setup, read docs, and more. Agents should only use Snouty in tandem with the Antithesis skills.

This page walks you through setting up Snouty and introduces some of the core features.

For the full docs, see GitHub.

Requirements

To use Snouty, you’ll need:

  • Docker or Podman.
  • Docker Compose v2. Snouty drives either the standalone docker-compose binary or the Docker Compose CLI plugin bundled with Docker Desktop/Engine, whichever it finds on your PATH. Note that podman-compose is no longer supported.
    • Linux: Install Docker Compose or check your package manager.
    • macOS: Install Docker Desktop (includes Compose v2) or run brew install docker-compose.
  • An Antithesis API key.

To launch tests, you’ll also need a system that’s ready to run in Antithesis. See our setup guide for step-by-step instructions how to do this, or use our antithesis-setup skill.

Install Snouty CLI

The recommended way to install Snouty CLI is to use our official installer:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/antithesishq/snouty/releases/latest/download/snouty-installer.sh | sh

This allows you to update with snouty update later.

You can also install Snouty with Cargo. To install prebuilt binaries with cargo-binstall, run:

cargo binstall snouty

Or build and install Snouty from source:

cargo install snouty

For full installation options, see GitHub.

Authenticate

To authenticate, run snouty login.

You’ll be prompted for your Antithesis tenant and repository. You can then choose to sign in with browser-based OAuth, or use an API key.

Run snouty doctor to confirm you’re set up correctly.

Using Snouty CLI

You’re now ready to try Snouty. Here are a few commands to get you started.

You can add --help to all Snouty commands to get help on command options and examples of how to use them.

Read our docs

The snouty docs command lets you navigate through the Antithesis docs and view pages. As a first test of Snouty, try viewing a tree of contents for the docs:

snouty docs tree

For more options, run:

snouty docs --help

Validate your system setup

Use snouty validate to check that your local setup is configured correctly to run in Antithesis. Give snouty validate the path to the config directory containing your docker-compose.yaml file (if you use Docker Compose) or your manifests/ subdirectory (Kubernetes):

snouty validate <./path/to/config>

Snouty will then check your config:

  • Docker Compose: runs docker compose locally (or docker-compose if you use Podman) and watches for the “set up complete” event. Then validates the structure of any test commands.
  • Kubernetes: performs static analysis of the manifests.

Launch a test run

Once you’re happy with your config, you’re ready to launch an Antithesis test with snouty launch.

The simplest way is to use the --config flag to point Snouty at the local config directory that contains your docker-compose.yaml file:

snouty launch --webhook basic_test --config <./path/to/config> \
--test-name "<my-test>" \
--description "example test" \
--duration 30 \
--recipients "team@example.com"

snouty launch pushes all images in your docker-compose file, so make sure you’ve built all required images before launching. If you define build alongside image in docker-compose, you can build and launch by running docker compose build followed by the snouty launch command.

If you’re using Docker Compose, Snouty also pins the current image tag, to ensure Antithesis runs exactly what you tested locally.

If you’d prefer to manage images yourself, you can use the --config-image flag instead and provide a pre-built image directly.

Inspect your test runs

To see recent test runs, run:

snouty runs list

You should see your current run in the list.

To see details for a given run, use:

snouty runs show <run_id>

To see build logs for a given run, use:

snouty runs build-logs <run_id>

Check which properties passed and failed

To see which properties passed and failed in a run, use the properties subcommand:

snouty runs properties <run-id>

Add the --details flag to see specific examples and counterexamples for each property. For a given example, you can then get the logs for the timeline leading up to the moment of that example:

snouty runs logs <run-id> <input-hash> <vtime>

Search events in a run

Use snouty runs search to query everything that happened in a run: log output, SDK assertions, faults, container lifecycle events, and Test Composer commands. For example, to find log lines that contain “connection refused”, run the following:

snouty runs search <run-id> 'contains({output_text: "connection refused"})'

By default, Snouty prints a sample of up to 50 matching events, which can come from different timelines. Use --limit to change the default number of events, or add --count to get the total number of matches across the whole run.

For the full query language and more examples, run snouty runs search --help.

Debug your run

Snouty’s snouty runs exec command lets you use our Multiverse Debugger to jump in to any moment in a test run and run bash commands to investigate further.

To use snouty runs exec, you’ll need an in-progress test run — this can be the one you want to debug a moment from, or a different one. Pass it the id of this run, a moment given as an input hash and a virtual time, and the container to run your bash command in:

snouty runs exec <run_id> <input_hash> <vtime> --container <container> 'uname -a'

If your moment comes from a different test run, you’ll also need to provide either the run id or the session id of that run as the --source-run-id or --source-session-id.

If you don’t have an in-progress run, you can launch a new run from a completed run with the snouty debug command. Pass it the id of the completed run along with the moment you want to debug from:

snouty debug --run-id <run-id> --input-hash <input-hash> --vtime <vtime>