Installing Coyote

Coyote is an open-source cross-platform .NET library and tool, which means it can be used on Windows, Linux and macOS.


Install the .NET SDK for one of the .NET target frameworks supported by Coyote:

Target Framework Operating System
.NET 8.0 Linux, macOS, Windows
.NET 6.0 Linux, macOS, Windows
.NET Standard 2.0 Linux, macOS, Windows
.NET Framework 4.6.2 Windows

Learn more about the .NET target frameworks here and .NET Standard here. Coyote supports new .NET target frameworks once they are released, and until they reach end-of-life.

Additionally, you can optionally install: - Visual Studio Code, which is cross-platform. - Visual Studio 2022 if you are on Windows.

Installing the Coyote NuGet packages

The Coyote libraries can be easily installed by adding the Microsoft.Coyote.Core NuGet package and the Microsoft.Coyote.Test NuGet package to your C# project. You can then immediately start programming the Coyote API as shown in the samples.

You can manually add Coyote to your C# project by using:

dotnet add <yourproject>.csproj package Microsoft.Coyote.Core
dotnet add <yourproject>.csproj package Microsoft.Coyote.Test

Alternatively, Coyote provides the Microsoft.Coyote NuGet meta-package, which includes all the other Coyote packages. You can install this by using:

dotnet add <yourproject>.csproj package Microsoft.Coyote

Installing the Coyote tool

You can install and use the cross-platform coyote command-line tool without having to build Coyote from source. To use coyote from the command-line, you must first install it as a dotnet tool using the following command:

dotnet tool install --global Microsoft.Coyote.CLI

Using the --global flag installs coyote for the current user. You can update the global coyote tool by running the following command:

dotnet tool update --global Microsoft.Coyote.CLI

You can remove the global coyote tool by running the following command:

dotnet tool uninstall --global Microsoft.Coyote.CLI

Alternatively, to install the tool locally on a specific repo, so anyone who clones the repo gets access to the same version that you use, you must first use the following command from the root of that repo:

dotnet new tool-manifest

This creates a new <path>/.config/dotnet-tools.json file. (You can skip this step if you already have such a .NET tool manifest file in your repo.) Now you can install the coyote tool using the following command:

dotnet tool install --local Microsoft.Coyote.CLI
# You can invoke the tool from this directory using the following commands:
#  'dotnet tool run coyote' or 'dotnet coyote'.
# Tool 'microsoft.coyote.cli' (version '...') was successfully installed.
# Entry is added to the manifest file <path>/.config/dotnet-tools.json.

The coyote tool can now be version controlled in your repo, so that it can easily be shared with other developers. The <path>/.config/dotnet-tools.json file will look like this:

  "version": 1,
  "isRoot": true,
  "tools": {
    "microsoft.coyote.cli": {
      "version": "...",
      "commands": [

Each time you clone your repo and want to restore the coyote tool, you can run:

dotnet tool restore

You can also edit the <path>/.config/dotnet-tools.json file to upgrade the version of coyote and run the same dotnet tool restore command to upgrade the tool.

Learn more about .NET tools and how to manage them here.

Note: the above command line tool is only for the cross-platform .NET target frameworks. If you prefer to not install and manage coyote as a .NET tool (via the dotnet tool command), or you need a version of coyote.exe that runs on .NET Framework for Windows, then you can instead download the Microsoft.Coyote.Tool NuGet package, which includes the self-contained tool for all supported target frameworks. To install this package run:

dotnet add package Microsoft.Coyote.Tool

You will find the coyote executable in the tools\<dotnet_target_framework> directory of the package, and you can run it from inside that directory.

Using the Coyote tool

You can now start using the coyote command-line tool! Type coyote --help to see if it is working. To learn how to use the Coyote tool read here.


The element ‘metadata’ in namespace nuspec.xsd has invalid child element ‘repository’…

If you get an error building the nuget package, you may need to download a new version of nuget.exe from