Launching tests
Once you’ve written a test, you’re ready to run it. You can launch a test run from the web app, the Snouty CLI, the API or your CI.
To control how quickly the test explores your system, choose a performance tier.
To keep verbose logging on without slowing down your test run, use retroactive logging to keep verbose logging on without slowing the test down.
Test launchers
Test launchers give you a pre-configured set of options for running a test against your system. You supply run-specific details, such as your config image and the test duration, as parameters.
Every tenant comes with the setup and basic_test launchers. Antithesis can also add custom launchers for you.
| Launcher | Use it to | Faults injected |
|---|---|---|
setup |
Check that your system starts up correctly in Antithesis | None |
basic_test |
Find bugs | Set by antithesis.fault_tolerance. Currently defaults to legacy. |
| Custom launchers | Run tests with fault settings tailored to your system | Set by antithesis.fault_tolerance, combined with the launcher’s own settings |
The basic_test launcher
The basic_test launcher is the general-purpose launcher for finding bugs in your system.
Set the level to none if you don’t want to inject faults. This is useful when first setting up your system. You can also enable setup mode, which provides a setup assistant in the web app.
The resilient fault tolerance level injects node and network faults that degrade the system without stopping any node or persistently cutting off any network link. Packets may still be dropped intermittently.
The high_availability level adds partitions, Stopped clogs, and node termination. It can persistently drop packets on a network link, including in one direction only.
We recommend building up to high_availability in stages:
- Run
basic_testwithnoneuntil your system starts reliably with no faults. - Run
basic_testwithresilientto find bugs while your system is slowed down and disrupted. - If your system is designed to keep working when a node goes down or the network splits, run
basic_testwithhigh_availability.
The basic_test launcher currently defaults to the legacy fault tolerance level. This enables all network faults and thread pausing, but does not inject node faults.
See Fault tolerance levels for more details on the available fault tolerance levels.
By default, faults affect every container in your system. To exclude a container, see Excluding containers from faults.
The setup launcher
The setup launcher is for getting your system running in Antithesis. It doesn’t inject faults, so that any problems you see come from your setup itself. If you launch it from the web app, it defaults to running your test in setup mode.
You can also get the same result with basic_test, by setting the fault tolerance level to none and turning on setup mode.
Custom launchers
Antithesis can create a custom launcher for you, tailored to your system and use cases. To set one up, talk to your forward-deployed engineer, or contact us at support@antithesis.com.
You can still use the antithesis.fault_tolerance and antithesis.fault_exclusions parameters with a custom launcher. Antithesis combines them with the launcher’s own settings:
- The run injects both the faults for your
fault_tolerancelevel, and any faults the custom launcher adds. Where the two set the same fault differently, thefault_tolerancelevel takes priority. - Faults skip any container that matches either your
fault_exclusionspattern or the custom launcher’s own exclusions. Yourfault_exclusionspattern doesn’t apply to the custom launcher’s extra faults, apart from container faults.
Launch methods
From the web app
In the web app, the Test launchers tab lets you configure test parameters and launch a test.

Antithesis tests are all configurable using a standard set of parameters. Clicking on a test launcher opens a dialogue box with the available parameters for that test.
The main dialogue includes parameters that you must provide in order to launch the test, such as test duration, performance tier, and your config image. Optional parameters are hidden in fold-down menus. All parameters come with sensible default values pre-filled where possible.
To choose which faults Antithesis injects, select a level from the Fault tolerance dropdown. To exclude containers from faults, enter a pattern under Advanced parameters, in Fault exclusions. See Controlling faults for the available levels and the pattern syntax.
To check your setup before running a full test, check the Setup mode option.
If you’d like to receive the triage report by email, make sure to specify a report recipient. The report is always accessible in the web app.
To suppress verbose logs with retroactive logging, set a pattern under Advanced parameters, in Filter logs matching.

With Snouty CLI
Install Snouty CLI, then run snouty launch to push your container images and start a test run.
To suppress verbose logs with retroactive logging, pass your pattern with --filter-logs-matching:
snouty launch --webhook basic_test --config ./config --duration 30 \ --filter-logs-matching '(?i)^\s*(TRACE|DEBUG)\b'Snouty has no dedicated flag for source matching, so pass that one as a parameter:
snouty launch --webhook basic_test --config ./config --duration 30 \ --param 'antithesis.filter_source_matching=^metrics-agent$'With the API
The Launch a test run endpoint lets you configure test parameters and start a test run programmatically.
curl -X POST \ "https://<tenant>.antithesis.com/api/v1/launch/<launcher_name>" \ -H "Authorization: Bearer $ANTITHESIS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "params": { "antithesis.description": "nightly test run", "antithesis.duration": "30", "antithesis.filter_logs_matching": "(?i)^\\s*(TRACE|DEBUG)\\b" } }'To choose which faults Antithesis injects, set the antithesis.fault_tolerance parameter. Use the antithesis.fault_exclusions parameter to exclude containers from faults, by setting a regular expression that matches their names.
Set the antithesis.is_setup parameter to "true" to check your setup in the web app before running a full test. Tests launched through the API will not run in setup mode by default, even with the setup launcher.
To suppress verbose logs with retroactive logging, set your pattern on the antithesis.filter_logs_matching or antithesis.filter_source_matching parameter.
Through your CI
Antithesis integrates natively with GitHub Actions through the Antithesis Trigger Action. You can easily trigger a test run through your workflow and have the results reported back natively in GitHub. Follow the README to set it up.
Choose a performance tier
Antithesis lets you choose a performance tier when launching a test run. Higher performance tiers explore system states faster through increased parallelism, and so consume compute hours faster. You can track your compute hour usage in the web app.
Antithesis provides three performance tiers:
- Standard
- Fast
- Turbo
You can configure the performance tier when you launch a test.
Retroactive logging
Retroactive logging lets you keep verbose logging on during a test with minimal performance overhead. Log lines matching a pattern you provide are suppressed while Antithesis fuzzes your system, and they remain fully recoverable in a multiverse debugging session.
Use one or both of these methods to select logging output to suppress:
filter_logs_matchingsuppresses individual log lines whose content matches your pattern.filter_source_matchingsuppresses everything from a particular source, which is useful for silencing a chatty component outright rather than picking lines out of it. This method is only available via API or CLI, not the Test Launcher.
Each launch method below details where to set these. Both take an RE2 pattern:
- Matching is unanchored and case-sensitive. Prefix your pattern with
(?i)for case-insensitive matching. - Lookahead, lookbehind and backreferences are not supported.
- Prefer a simple substring or basic pattern over a full-featured regex.
Matching log lines
If your log lines begin with their level, a good starting point is:
(?i)^\s*(TRACE|DEBUG)\bThis suppresses lines whose first non-whitespace token is TRACE or DEBUG, case-insensitive, and leaves your INFO, WARN and ERROR lines untouched.
Anchoring to the start of the line only works if the level is the first thing on it. Structured loggers typically lead with a timestamp, or emit JSON, so match the level field instead:
(?i)"level":"(trace|debug)"Either way, check your pattern against a handful of real log lines from your system before launching a long test. Because matching is unanchored, a loose pattern like error suppresses every line that merely contains that word.
Matching sources
A source is the emitter of a log line, usually the name of the process that wrote it. The source field on each line in your logs shows you the names available to match against. Use them exactly as they appear there, especially if you intend to anchor your pattern.
This pattern is matched against the source name rather than against the line, so a match suppresses that source’s entire output:
metrics-agentMatching is unanchored here too, so that pattern also suppresses a source named metrics-agent-v2. Anchor it with ^ and $ when you want to name a source exactly.
Source matching is set with the antithesis.filter_source_matching parameter through the API, or with --param through the Snouty CLI. It cannot be set in a test launcher dialog.
What’s next
Once your test is running, Antithesis will set up your system and explore it for the duration that you configured (minimum 15 minutes). Note that this is minutes of test time — the test run itself will last longer because it also includes set up and build time.
During the test run, you can watch the logs stream in with the logs explorer. Once the run is complete, you can view the triage report summarizing the test results.
See Understand your test results for more ways to explore your test run.