Install the Smallstep Agent
The Smallstep Agent brings automated certificate management, device identity, and configuration management features to your endpoints across macOS, Windows, and Linux.
The agent runs as a background service on all platforms. Smallstep also has an optional desktop UI for transparency and troubleshooting, offered as a separate package.
Introduction
This guide covers installation of the Smallstep Agent on:
Using an MDM? See:
- Connect Jamf Pro to Smallstep (macOS)
- Connect Intune to Smallstep (Windows)
- Connect Workspace ONE to Smallstep (Windows)
Running into trouble? See the Smallstep Agent troubleshooting guide.
System requirements
Windows
- Windows 10 or later (Windows Home editions are not supported)
- Trusted Platform Module (TPM 2.0)
- Architectures:
amd64,arm64
macOS
- macOS 13 (Ventura) or later
- Apple Silicon M1 or later
- The agent must be installed for a single user
Linux
- Supported operating systems:
- Enterprise Linux (RHEL, CentOS Stream, Rocky Linux, Alma Linux, etc)
- Ubuntu (Current Stable and LTS)
- Debian (Current Releases)
- Fedora (Current Releases)
- NixOS
systemd-based service manager- A TPM 2.0 module is required. Smallstep depends on TPMs to create a high-assurance device inventory.
p11-kit,tpm-tss2- Architectures:
amd64,arm64
Runtime requirements
All platforms require an internet connection for normal operation.
On Windows and Linux, the agent supports multi-user environments, with a couple caveats:
There's currently a 1:1 mapping in our backend between users and devices.
This works well on shared systems.
It only becomes a problem if user-based properties need to be included
in credentials issued by the agent.
Also, on Linux, a TPM access broker (eg. tpm2-abrmd) is needed when multiple processes are using the TPM.
Windows
- Administrator privileges — the Smallstep Agent requires privilege escalation to be able to communicate with the TPM.
macOS
- Location permission — only required if the agent will manage Wi-Fi network configurations.
- Keychain access — the agent uses the macOS keychain to store both keys and certificates it manages.
- Network Extension entitlement — the Smallstep Agent requests the Network Extension entitlement so that it can manage VPN connections.
Linux
- TPM read/write permission — the Smallstep Agent communicates to the TPM from user-space using
tpm-tss2, and the running user must have read/write permissions to the TPM resource manager (typically/dev/tpmrm0).
Connectivity requirements
The agent connects to the following Smallstep hosts:
- Your CA:
<your-team>.ca.smallstep.comand subdomains - Agent API:
control.infra.smallstep.com - Smallstep API:
gateway.smallstep.com - TPM Attestation CA:
att.smallstep.com - Telemetry:
tel.smallstep.com
Downloads
All versions
See releases.smallstep.com for all release history of the Smallstep Agent, Smallstep Desktop app, and more.
Latest stable agent packages
Here are URLs that always point at the latest stable release of the agent:
macOS
Windows
Linux
- step-agent_amd64_latest.deb
- step-agent_arm64_latest.deb
- step-agent_x86_64_latest.rpm
- step-agent_aarch64_latest.rpm
- step-agent_amd64_latest.pkg.tar.zst
- step-agent_arm64_latest.pkg.tar.zst
Linux installation
Smallstep also offers Debian and RPM package repositories.
Quick install
On a Linux system with bash and curl, run the following:
curl -fsSL https://packages.smallstep.com/scripts/smallstep-agent-install.sh | sudo env STEP_AGENT_TEAM=[your-team] bash
Manual install
Fedora
-
In the Terminal, add our package repository to your system:
cat << EOF | sudo tee /etc/yum.repos.d/smallstep.repo [smallstep] name=Smallstep baseurl=https://packages.smallstep.com/stable/fedora/ enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://packages.smallstep.com/keys/smallstep-0x889B19391F774443.gpg EOF
-
Install the Smallstep agent:
sudo dnf makecache && sudo dnf install -y step-agent
-
Check that it was installed correctly:
step-agent version
Output:
step-agent/0.67.3 (linux/amd64) Release Date: 2026-05-19 17:16 UTC
Enterprise Linux (RHEL, CentOS stream, Rocky Linux, Alma Linux, etc)
-
In the Terminal, add our package repository to your system:
cat << EOF | sudo tee /etc/yum.repos.d/smallstep.repo [smallstep] name=Smallstep baseurl=https://packages.smallstep.com/stable/el/ enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://packages.smallstep.com/keys/smallstep-0x889B19391F774443.gpg EOF
-
Install the Smallstep agent:
sudo dnf makecache && sudo dnf install -y step-agent
-
Check that it was installed correctly:
step-agent version
Output:
step-agent/0.67.3 (linux/amd64) Release Date: 2026-05-19 17:16 UTC
Debian
-
In the Terminal, install dependencies:
sudo apt-get update && sudo apt-get install -y --no-install-recommends curl gpg ca-certificates
-
Add our package repository to your system:
sudo curl -fsSL https://packages.smallstep.com/keys/apt/repo-signing-key.gpg -o /etc/apt/keyrings/smallstep.asc cat << EOF | sudo tee /etc/apt/sources.list.d/smallstep.sources Types: deb URIs: https://packages.smallstep.com/stable/debian Suites: debs Components: main Signed-By: /etc/apt/keyrings/smallstep.asc EOF
-
Install the Smallstep agent:
sudo apt-get update && sudo apt-get -y install step-agent
-
Check that it was installed correctly:
step-agent version
Output:
step-agent/0.67.3 (linux/amd64) Release Date: 2026-05-19 17:16 UTC
Ubuntu
-
In the Terminal, install dependencies:
sudo apt-get update && sudo apt-get install -y --no-install-recommends curl gpg ca-certificates
-
Add our package repository to your system:
sudo curl -fsSL https://packages.smallstep.com/keys/apt/repo-signing-key.gpg -o /etc/apt/keyrings/smallstep.asc cat << EOF | sudo tee /etc/apt/sources.list.d/smallstep.sources Types: deb URIs: https://packages.smallstep.com/stable/debian Suites: debs Components: main Signed-By: /etc/apt/keyrings/smallstep.asc EOF
-
Install the Smallstep agent
sudo apt-get update && sudo apt-get -y install step-agent
-
Check that it was installed correctly
step-agent version
Output:
step-agent/0.67.3 (linux/amd64) Release Date: 2026-05-19 17:16 UTC
NixOS
The step-agent package is in nixpkgs, on the nixos-unstable channel.
NixOS has no services.step-agent module yet,
so the system user, systemd service, and PKCS#11 wiring that the Debian and RPM packages install are declared in your own configuration instead.
The agent requires a hardware TPM 2.0 on NixOS.
The Debian and RPM packages fall back to a software TPM on hosts without one,
but the helper scripts that set that up are not part of the nixpkgs package,
so a host with no /dev/tpmrm0 cannot enroll yet.
-
If you track a stable NixOS channel, add an overlay so that
pkgs.step-agentresolves. Skip this step onnixos-unstable.nixpkgs.overlays = [ (final: prev: { inherit (import (builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") { system = prev.stdenv.hostPlatform.system; config.allowUnfreePredicate = pkg: prev.lib.getName pkg == "step-agent"; }) step-agent ; }) ]; -
Download
step-agent.nix, place it alongside yourconfiguration.nix, and add./step-agent.nixto yourimportslist. The.nixfile declares thestep-agentsystem user, the systemd service and its restart path unit, thepolkitrules the agent needs, and thep11-kitmodule that publishes our PKCS#11 server.curl -fsSLO https://files.smallstep.com/step-agent.nix
-
Rebuild your system:
sudo nixos-rebuild switch -
Register the device with your team:
sudo step-agent register [team name]
Registration writes
agent.yamlinto/etc/step-agent, which systemd creates and keeps writable throughConfigurationDirectory=. Do not manageagent.yamlwithenvironment.etc: that produces a read-only symlink into the Nix store, and the service refuses to start. -
Check that it was installed correctly:
step-agent version
Output:
step-agent/0.67.3 (linux/amd64) Release Date: 2026-05-19 15:50 UTC
Registering and approving endpoints
Self-registration
Users can configure the agent and register their Linux device with your Smallstep team by running:
sudo step-agent register [team name]
By default, self-registration is not trust-on-first-use (TOFU). Devices must be approved by an admin before they can be used.
Pre-registration via API
Alternatively, you can pre-register all of your team's devices:
-
Register and approve your devices via API. The devices you add via API will be pre-approved.
-
Then, on your endpoints, update the
/etc/step-agent/agent.yamlconfig file with your Smallstep team name and Smallstep Agent CA fingerprint.team: "myteamname" fingerprint: "40523785c1d1d11EXAMPLE017b660d52a5fa5f2cb94cf0e1a9e9209dbea0826"
- Your
teamID (team slug). This is the value after/app/in your Smallstep console URL. - Your agent CA
fingerprint. Find this value in your console:- In the Smallstep console, select Authorities
- Select the Smallstep Agents authority
- Use the sha256 Root fingerprint displayed on this page
- Your
Start the agent
Finally, enable and start the agent:
sudo systemctl daemon-reload
sudo systemctl enable --now step-agent
sudo systemctl enable --now step-agent-restart.path
On NixOS, nixos-rebuild switch enables and starts both units, so skip this step.
If you get any errors, check the agent’s status:
sudo systemctl status step-agent.service
PKCS#11 support
Keys managed by the Smallstep agent are bound to the device's TPM and cannot be exported. To let other software use those keys for TLS handshakes and other purposes, the agent runs a PKCS#11 server, exposed as a UNIX socket at /run/step-agent/step-agent-pkcs11.sock.
PKCS#11 is the supported integration point for software like NetworkManager, wpa_supplicant, VPN clients, and web browsers.
The Linux packages register the agent as a PKCS#11 module for you, by installing /etc/pkcs11/modules/step-agent.module. Software that discovers modules through p11-kit picks up the agent's keys with no further configuration.
Module registration requires Smallstep agent v0.67.4 or later.
NSS-based applications, such as Google Chrome and Firefox, don't read p11-kit module configuration. For those, register the module manually, as shown below.
Example usage: Google Chrome
For this example, we’re using Ubuntu 24.04. The location of p11-kit-client.so may vary.
Let’s make client certificates and keys from the agent available to Google Chrome via PKCS#11 tokens. We will use modutil and an NSS database. Google Chrome defaults to storing an NSS database in ~/.pki/nssdb, so we can leverage that.
To use Smallstep certificates in Chrome, first point the p11-kit client library at the agent's running PKCS#11 socket, then register it with modutil:
export P11_KIT_SERVER_ADDRESS=unix:path=/run/step-agent/step-agent-pkcs11.sock
modutil -dbdir ~/.pki/nssdb -add step-agent \
-libfile /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-client.so
Export P11_KIT_SERVER_ADDRESS and point it at the running agent's socket before you run modutil. modutil loads and initializes the module as it adds it, so running it first fails with a load error and can leave a broken module registered in the NSS database. If you hit this, see Recovering from a failed modutil add.
On NixOS, p11-kit-client.so lives in the Nix store rather than under /usr/lib.
Point modutil at it with -libfile $(nix eval --raw nixpkgs#p11-kit)/lib/pkcs11/p11-kit-client.so.
Next, start Chrome from the command line.
In Chrome, you should now have access to certificates managed by Smallstep.
For regular usage, add P11_KIT_SERVER_ADDRESS to your environment more permanently. For example, you might add P11_KIT_SERVER_ADDRESS=unix:path=/run/step-agent/step-agent-pkcs11.sock to your global /etc/environment file.
If PKCS#11 isn't working as expected, see PKCS#11 troubleshooting.
Uninstall
To uninstall the Smallstep Agent from a Linux system:
-
Remove the agent package:
For Fedora/RHEL/Enterprise Linux:
sudo dnf remove step-agentFor Debian/Ubuntu:
sudo apt-get remove step-agent
For NixOS: remove
./step-agent.nixfrom yourimportslist, then runsudo nixos-rebuild switch. -
Optionally, remove configuration and certificate files:
sudo rm -rf /etc/step-agent /var/lib/step-agent /run/step-agent
macOS installation
Manual install
-
Download the latest package from packages.smallstep.com
-
Install the package on your endpoint (double-click the
.pkgfile, or use the built-ininstallercommand)
Registering the agent
Your agent needs to enroll with your team. To self-enroll a device, run:
/Applications/SmallstepAgent.app/Contents/MacOS/SmallstepAgent register <team-id>
Replace <team-id> with your Team ID from the Smallstep UI (found in Settings → Team).
Confirmation
There's two ways to confirm installation on a macOS endpoint:
- In the Smallstep UI, go to the device's profile page. In the Device Registration section, you'll see an Enrolled At timestamp.
- On the device itself, run
/Applications/SmallstepAgent.app/Contents/MacOS/SmallstepAgent versionto see that the agent is installed. And, in System Settings, check Login Items to confirm that there is a Smallstep Agent entry.
Uninstall
To uninstall the Smallstep Agent from a macOS system:
-
Run the following to uninstall the launch agent and remove runtime state:
/Applications/SmallstepAgent.app/Contents/MacOS/SmallstepAgent svc uninstall /Applications/SmallstepAgent.app/Contents/MacOS/SmallstepAgent reset <team-id> rm /Library/LaunchAgents/com.smallstep.launchd.Agent.plist
Replace
<team-id>with your Team ID from the Smallstep UI (found in Settings → Team). -
Remove the application directory:
rm -rf /Applications/SmallstepAgent.app
-
Remove the package receipt:
if pkgutil --packages | grep -q com.smallstep.Agent; then pkgutil --forget com.smallstep.Agent fi
Windows installation
Install via Winget
Install the agent via Winget:
winget install Smallstep.step-agent
To upgrade, run winget upgrade Smallstep.step-agent. To uninstall, run winget uninstall Smallstep.step-agent.
Manual install
-
Download the agent installer:
- For most systems: step-agent_amd64_latest.msi
- For ARM64 systems: step-agent_arm64_latest.msi
-
Install the agent silently:
msiexec.exe /i "path\to\step-agent_amd64_latest.msi" /quiet
Registering the agent
Using the Smallstep API
Before you begin, create an API token with at least all “device” scopes (put-device, patch-device, etc.)
- On the device, configure the agent for enrollment:
New-Item -Path "HKLM:\Software\Policies\Smallstep"
Set-ItemProperty -Path "HKLM:\Software\Policies\Smallstep" -Name "TeamSlug" -Value "<team-slug>"
Set-ItemProperty -Path "HKLM:\Software\Policies\Smallstep" -Name "CAFingerprint" -Value "<agents-ca-fingerprint>"
Replace <team-slug> and <agents-ca-fingerprint> with your Smallstep team ID and the CA fingerprint of your Smallstep Agents CA.
- On the device, navigate to the agent installation directory and obtain the device's TPM fingerprint:
cd 'C:\Program Files\Smallstep\SmallstepAgent\'
.\smallstep-agent.exe tpm --fingerprint
- Register the device's TPM using Add Device and the following request body:
{
"os": "Windows",
"ownership": "company",
"permanentIdentifier": "<tpm-ek-fingerprint>",
"user": {
"email": "<user-binding-email>"
}
}
-
Restart the device OR manually ensure the
Smallstep AgentWindows service is started
After installation and configuration, the agent will automatically register with your Smallstep team. You can verify registration in the Smallstep UI by checking the device's profile page for an Enrolled At timestamp in the Device Registration section.
Confirmation
To confirm the agent is installed and running on Windows:
- In the Smallstep UI, go to the device's profile page. In the Device Registration section, you'll see an Enrolled At timestamp.
- On Windows, check that the agent service is running in the Services control panel, or run:
sc query "Smallstep Agent"
Uninstall
To uninstall the Smallstep Agent from a Windows system, run the following PowerShell:
& cmd /c "$(((Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like "*Smallstep Agent*" }).UninstallString -replace '/I', '/X')) /quiet"
Alternatively, uninstall via the Windows "Add or Remove Programs" settings.
Last updated on July 27, 2026
Introducing
Device Identity
Ensure that only company-owned devices can access your enterprise's most sensitive resources.