Install the CLI
Two programs are released together and they run on two different machines:
mikroscope, the CLI and collector, runs on your computer — the laptop or server you type commands on. This page is about that one.mikroscope-agentruns on the router, inside a container.mikroscope installputs it there for you; you never run it yourself, and the only time you download it by hand is the--agent-tarroute.
So the archive you want here is picked by your operating system and CPU, not by the router’s. The router’s architecture decides something else, and Requirements has that table.
Install script
Section titled “Install script”curl -fsSL https://raw.githubusercontent.com/jmrplens/mikroscope/main/install.sh | bashor, in PowerShell on Windows:
irm https://raw.githubusercontent.com/jmrplens/mikroscope/main/install.ps1 | iexEither script, install.sh or install.ps1, does by itself everything
the rest of this page does by hand: work out your platform, resolve the newest version, download
that archive and the release’s checksums.txt, and refuse to install anything whose SHA-256
is not the one the release published. There is no flag to skip that check. A
script piped into a shell is the least inspectable way to install anything, so
the one thing it must not do is trust what it just downloaded. Where cosign
is already on the machine it also verifies that checksums.txt came from the
release workflow; where it is not, the checksum is still enforced.
It installs into /usr/local/bin when that is writable and ~/.local/bin
otherwise, and if the directory is not on your PATH it prints the line to add
and the file to add it to. It will not reach for sudo on its own: a script
read off the network should not be the thing that decides to become root.
Two arguments, which are also the VERSION and BIN_DIR variables so they can
be set through a pipe:
curl -fsSL .../install.sh | VERSION=1.6.1 BIN_DIR=~/bin bash./install.sh --version 1.6.1 --dir ~/bin # the same, with the file downloaded firstThe rest of this page is what those scripts do, one platform at a time, for
anyone who would rather read the archive’s checksum themselves — or who is on a
machine where curl | bash is not something to type.
Choose an archive
Section titled “Choose an archive”| Your machine | Download |
|---|---|
| Linux, ordinary PC or server | mikroscope_ |
| Linux on ARM (Raspberry Pi 4/5, …) | mikroscope_ |
| macOS, Apple silicon (M1 and later) | mikroscope_ |
| macOS, Intel | mikroscope_ |
| Windows | mikroscope_ |
Scroll sideways to see every column
They are on the latest release.
Anything whose name starts with mikroscope-agent is the other program.
Manual install
Section titled “Manual install”-
Download the archive and the checksums:
Terminal window VERSION=1.6.1curl -fsSLO https://github.com/jmrplens/mikroscope/releases/download/v$VERSION/mikroscope_${VERSION}_linux_x86_64.tar.gzcurl -fsSLO https://github.com/jmrplens/mikroscope/releases/download/v$VERSION/checksums.txt -
Check it against the list before unpacking it:
Terminal window sha256sum --ignore-missing -c checksums.txt -
Unpack and put it where the shell looks:
Terminal window tar xzf mikroscope_${VERSION}_linux_x86_64.tar.gz mikroscopesudo install -m 0755 mikroscope /usr/local/bin/mikroscopeWithout
sudo,mkdir -p ~/.local/bin && install -m 0755 mikroscope ~/.local/bin/works as well, as long as~/.local/binis on yourPATH.
-
Download the archive for your CPU —
darwin_arm64for Apple silicon,darwin_x86_64for Intel — and the checksums:Terminal window VERSION=1.6.1curl -fsSLO https://github.com/jmrplens/mikroscope/releases/download/v$VERSION/mikroscope_${VERSION}_darwin_arm64.tar.gzcurl -fsSLO https://github.com/jmrplens/mikroscope/releases/download/v$VERSION/checksums.txt -
Check it:
Terminal window shasum -a 256 --ignore-missing -c checksums.txt -
Unpack, clear the quarantine flag the download put on it, and install it:
Terminal window tar xzf mikroscope_${VERSION}_darwin_arm64.tar.gz mikroscopexattr -d com.apple.quarantine mikroscope 2>/dev/null || truesudo install -m 0755 mikroscope /usr/local/bin/mikroscopeThe binary is not signed or notarized, so without that
xattrline macOS refuses to run it and says it “cannot be opened because the developer cannot be verified”.
-
Download
mikroscope_and<version>_ windows_ x86_64.zip checksums.txtfrom the release page. -
Check it in PowerShell, against the line for your file in
checksums.txt:Terminal window Get-FileHash .\mikroscope_1.6.1_windows_x86_64.zip -Algorithm SHA256 -
Unpack it somewhere permanent and put that folder on your
PATH:Terminal window Expand-Archive .\mikroscope_1.6.1_windows_x86_64.zip -DestinationPath $HOME\mikroscope$env:PATH += ";$HOME\mikroscope"That line lasts for the session. To keep it, add the folder in Settings → System → About → Advanced system settings → Environment Variables, or:
Terminal window [Environment]::SetEnvironmentVariable("PATH", "$env:PATH;$HOME\mikroscope", "User")
If you have Go 1.27 or later and would rather build it:
go install github.com/jmrplens/mikroscope/cmd/mikroscope@latestThat puts mikroscope in $(go env GOPATH)/bin, which is ~/go/bin unless
you moved it, and that directory has to be on your PATH. A binary built this
way reports the module version rather than a release stamp.
A checkout builds either program, which is the contributor’s route:
git clone https://github.com/jmrplens/mikroscopecd mikroscopemake build # leaves bin/mikroscopemake build-agent # leaves bin/mikroscope-agent-<goarch>Verify the install
Section titled “Verify the install”mikroscope versionIt prints the version, the commit and the build date:
mikroscope 1.6.1 (commit <commit>, built <time>)Then, with a router to point at:
mikroscope doctor --router admin@192.168.88.1doctor writes nothing. It reads the device, prints what it is, and marks each
prerequisite ok or MISSING, and an advisory check that finds something
WARN, with the command that fixes it — including the one nobody can do
remotely — then reports what an agent already running shows
(Health checks).
Run it first, before any install method.