home/docs/install

Install

One command. It checks your toolchain before it changes anything, and tells you plainly what is missing rather than failing later with something cryptic.

Pre-release: the first version has not been tagged yet. The commands below are the real ones and will keep working unchanged, but until a release is published the installer has no version to resolve and will stop with “could not determine which version to install.”

Install

macOS · Linux
curl -fsSL https://sidekit.net/install.sh | sh
Windows · PowerShell
iwr -useb https://sidekit.net/install.ps1 | iex

Then, in any .NET repository:

shell
sidekit doctor

Re-running the same command is how you upgrade. The installer picks install or update from what is already on your machine, so there is no separate upgrade command to remember.

Piping a script into a shell deserves a look first. Both are plain text and open in a browser: install.sh and install.ps1. They are short, and commented throughout.

Requirements

SDKThe .NET 10 SDK — not just the runtime.
PlatformsLinux, macOS, Windows.
LicensePolyForm Shield 1.0.0. No key, no account, no activation.

The SDK is not optional and no packaging choice could make it so: Sidekit builds and runs your tests on the real toolchain rather than simulating one. The installer checks for it first, so a missing SDK is one clear sentence at the start instead of a confusing failure later.

What the installer actually does

It is a wrapper around dotnet tool install, not a replacement for it:

  1. Checks for the .NET 10 SDK using dotnet --list-sdks. Not dotnet --version — that resolves through any global.json in the current directory, so it reports what the directory wants rather than what is installed.
  2. Resolves the newest published version from the release assets.
  3. Downloads the package to a temporary directory it cleans up afterwards.
  4. Hands it to dotnet tool install --add-source, so what lands on your machine is an ordinary .NET global tool.
  5. Warns if the tool directory is not on your PATH — a warning, not a failure: the install is fine, it just is not reachable yet.

Options

Set these in the environment before running the installer.

VariableEffect
SIDEKIT_VERSIONInstall an exact version instead of the newest.
SIDEKIT_INSTALL_DIRInstall there with --tool-path instead of globally — useful for keeping it inside a project.
SIDEKIT_BASE_URLFetch releases from somewhere else, such as an internal mirror.
macOS · Linux
SIDEKIT_INSTALL_DIR=./.tools curl -fsSL https://sidekit.net/install.sh | sh

Installing by hand

If you would rather not pipe anything into a shell, the package is a plain .nupkg. Download it from the downloads page, then point dotnet at the folder you put it in:

shell
dotnet tool install --global Sidekit --add-source ./folder-with-the-nupkg

Why it is not on nuget.org

During the beta, Sidekit is published as a release on its public repository rather than to nuget.org. Only the install command is branded: the script is fetched fresh from sidekit.net every time, so the download host can change later without breaking a command anyone has already shared or written into a setup guide.

Verify the install

sidekit doctor is the first thing to run and the first thing to reach for when anything behaves oddly. It probes rather than assumes: the SDK, workspace and solution discovery, NuGet restore state, which runner each test project would use, coverage-collector availability, the git working tree, index writability and file watching.

Exit codeMeaning
0Every check passed.
1At least one check failed. The report says which, and how to fix it.

If a sidekit command already exists

An earlier, unrelated version of Sidekit claimed the same command name. The installer will update in place, but if you are installing by hand dotnet tool install refuses with “Tool 'sidekit' is already installed.”

shell
dotnet tool list --global | grep -i sidekit
dotnet tool uninstall --global sidekit
One command tells them apart. Both versions claim sidekit, so a host configured with "command": "sidekit" silently talks to whichever is on PATH. Run sidekit doctor: the old version answers Unknown command: doctor, this one prints a JSON report.

Uninstall

shell
dotnet tool uninstall --global Sidekit

Sidekit also writes a per-workspace index at .sidekit/index.db. Deleting that folder removes everything it learned about a repository — see Coverage map.

Next

With sidekit doctor green, wire it into your agent: Agent host recipes. Something not working? Open an issue — the template asks for sidekit doctor output, which answers most of the first round of questions.