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.
Install
curl -fsSL https://sidekit.net/install.sh | sh
iwr -useb https://sidekit.net/install.ps1 | iex
Then, in any .NET repository:
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.
Requirements
| SDK | The .NET 10 SDK — not just the runtime. |
| Platforms | Linux, macOS, Windows. |
| License | PolyForm 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:
- Checks for the .NET 10 SDK using
dotnet --list-sdks. Notdotnet --version— that resolves through anyglobal.jsonin the current directory, so it reports what the directory wants rather than what is installed. - Resolves the newest published version from the release assets.
- Downloads the package to a temporary directory it cleans up afterwards.
- Hands it to
dotnet tool install --add-source, so what lands on your machine is an ordinary .NET global tool. - 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.
| Variable | Effect |
|---|---|
SIDEKIT_VERSION | Install an exact version instead of the newest. |
SIDEKIT_INSTALL_DIR | Install there with --tool-path instead of globally — useful for keeping it inside a project. |
SIDEKIT_BASE_URL | Fetch releases from somewhere else, such as an internal mirror. |
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:
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 code | Meaning |
|---|---|
0 | Every check passed. |
1 | At 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.”
dotnet tool list --global | grep -i sidekit dotnet tool uninstall --global sidekit
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
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.