All pages
Start
Install Golem
Put the Golem agent on a Mac, Linux or Windows machine with one line, check it with golem doctor, and take it all back with one command.
You install the Golem agent once per machine. The installer downloads it, checks it, enrolls the machine into your workspace, starts it as a background service and connects the coding agents it finds. Then you restart those agents and run golem doctor.
To roll it out across many machines at once, read this page first, then Roll out to a fleet.
Before you start#
- A workspace key. In the console, open Deploy → Install and choose Install Golem. It creates an enrollment key (it starts
glk_) and shows the install command for macOS and Linux and for Windows, with the key already in it. The key is shown once, so copy the command then. - A supported machine. macOS or Linux on x86-64 or Arm, or 64-bit Windows. Windows on Arm runs the x86-64 build under emulation.
curlorwgeton macOS and Linux. On Windows, PowerShell 5.1 or later, run as administrator.- Your own account, not root. On macOS and Linux the agent runs as the person who uses the machine. Run the installer as that person, without
sudo.
Install on macOS or Linux#
curl -fsSL https://app.golem.team/install.sh | GOLEM_WORKSPACE_KEY=glk_... shIn order, it:
- Downloads the release for this machine and checks its SHA-256 against the release's checksum list. A mismatch stops the install before anything is written.
- Installs the
golembinary. It uses/usr/local/binwhen that is writable or already holdsgolem, and~/.local/binotherwise. When that directory is not on yourPATH, it adds one line to your shell profile, marked# added by the Golem installer. - On macOS, installs the shell jail's shim under
~/.golem/bin. See The shell jail. - Enrolls the machine with
golem join. The key is used for this one command and is not written to any file or service configuration, so the machine never holds a credential that could enroll another one. If enrollment fails, the installer stops here and tells you why. - Starts a per-user background service: a launchd agent labelled
team.golemon macOS, or asystemd --userunit,golem.service, on Linux. On Linux it also tries to turn on lingering for your user, so the service keeps running after you log out. - Waits for the agent to answer and confirm enrollment.
- Connects the coding agents on the machine with
golem setup-client(below). - On a Mac with Apple silicon and macOS 26 or later, sets up the sandbox: it installs Apple's
containerpackage, after checking its checksum and Apple's signature, and macOS asks for your password once. Skip it withGOLEM_NO_SANDBOX=1.
Install on Windows#
Open PowerShell with Run as administrator and paste:
$env:GOLEM_WORKSPACE_KEY='glk_...'; iwr -useb https://app.golem.team/install.ps1 | iexIt does the same checks and enrollment, with three differences:
- The agent runs as a Windows service,
GolemWitness, under LocalSystem, set to start automatically and to restart if it fails. That is why the installer needs administrator rights. - The binary goes to
C:\Program Files\Golemand is added to the machinePATHfor new shells. The agent's state and log live inC:\ProgramData\Golem. - There is no shell jail or sandbox on Windows yet.
Connecting the coding agents is per user. The installer does it for the account that ran it. If that was SYSTEM, it says so, and each person runs golem setup-client in their own session. See Roll out to a fleet.
What it changes on the machine#
golem setup-client adds Golem's entries to each client's own files and leaves every other entry alone. Golem's MCP servers are named golem-witness and golem-context, and both point at the agent on 127.0.0.1. Running it again changes nothing, and it repairs only Golem's entries.
| Client | Files Golem edits | Page |
|---|---|---|
| Claude Code | ~/.claude.json, ~/.claude/settings.json | Claude Code |
| Cursor | ~/.cursor/hooks.json, ~/.cursor/mcp.json | Cursor |
| Codex | ~/.codex/hooks.json, ~/.codex/config.toml | Codex |
| Others | each client's own hook and MCP files | Copilot, Gemini CLI, Devin, Antigravity, OpenClaw, Hermes |
It also gives each client it connected Golem's skills and the /safely and /sandbox commands, in that client's own skills or commands folder.
Clients you install later are picked up too. The agent checks for new clients on a schedule set in the console and connects them, unless you removed Golem from that machine's clients with golem setup-client --remove.
The other files the installer writes:
| What | macOS and Linux | Windows |
|---|---|---|
| Binary | /usr/local/bin/golem or ~/.local/bin/golem | C:\Program Files\Golem\golem.exe |
| Service | ~/Library/LaunchAgents/team.golem.plist or ~/.config/systemd/user/golem.service | service GolemWitness |
| Settings | ~/.config/golem/golem.env, readable only by you | the service's environment |
| State and keys | ~/.golem | C:\ProgramData\Golem |
| Log | ~/.golem/logs/golem.log | C:\ProgramData\Golem\logs\witness.log |
The agent listens on 127.0.0.1 only, on port 39393 unless you change it.
Restart your agents#
Claude Code, Cursor, Codex and the rest read their hooks and MCP servers when they start. Quit and reopen each one, and start a new session in each terminal agent. Until you do, they run without Golem.
Check it with golem doctor#
golem doctorIt checks the install end to end and prints the command that fixes each problem. Among other things it checks that:
- the agent is running and its service is registered;
- the machine is enrolled, with a key that persists across restarts;
- every client entry points at the port the agent actually listens on, and every hook command exists;
- Codex has approved Golem's hooks, when Codex is installed;
- for each agent that has run, its tool calls reached the hooks, so rules could act on them;
- recorded events are being delivered, and the agent is up to date.
It exits non-zero when anything fails, and golem doctor --json gives the same in a form a script can read. The machine also appears in the console under Hosts, Groups & Profiles once it has enrolled.
Other commands you may want:
| Command | What it does |
|---|---|
golem status | Version, host, wiring, identity and anything not yet delivered |
golem logs -f | Follows the agent's log |
golem config | Shows the settings in effect and where each came from. It is read-only: re-run the installer to change them. |
golem setup-client | Connects or repairs the clients on this machine |
Installer options#
Set these in the environment of the install command. On macOS and Linux, flags go after sh -s --.
| Option | What it does |
|---|---|
GOLEM_LABELS=env=prod,team=platform | Linux and Windows: tags the machine so a group's label rule can claim it. Also --labels=. See Roll out to a fleet. |
GOLEM_AGENT_PORT | The local port the agent listens on. Default 39393. |
GOLEM_AGENT_VERSION | Installs this version instead of the latest. |
GOLEM_INSTALL_DIR | Where to put the binary. |
GOLEM_HOST_ID | The name the machine enrolls under. By default a machine that enrolled before keeps its name; otherwise it is the computer's name. |
GOLEM_NO_SERVICE=1 | Installs the binary only. |
GOLEM_NO_SANDBOX=1 | macOS: skips the sandbox and its password prompt. |
GOLEM_NO_MODIFY_PATH=1 | Prints the PATH line instead of adding it to your profile. |
--with-extensions | Also installs the browser extension and the editor extension. --with-browser-ext and --with-editor-ext do one each; GOLEM_WITH_EXTENSIONS=1 is the same as the flag. macOS and Linux only. |
GOLEM_STATE_DIR | Windows: where the agent keeps its state. Default C:\ProgramData\Golem. |
Upgrading#
golem updateIt checks the new release against its checksum, swaps the binary, restarts the service, re-runs golem setup-client and updates any extensions and plugins already on the machine. golem update --version followed by a version number installs that release, and golem rollback puts the previous binary back.
The agent never updates itself. When a newer release is out, it asks your coding agent, once per session, to mention it and offer to run golem update. Turn that notice off with Update notice in a profile's Maintenance section, if you push updates some other way.
Uninstall#
On macOS and Linux, as the same user who installed it:
curl -fsSL https://app.golem.team/install.sh | sh -s -- --uninstall --purgeIt removes Golem's hooks and MCP entries from every client, then stops and removes the service, the binary, the shell jail's shim and the PATH line. --purge also removes the agent's local state in ~/.golem and its settings in ~/.config/golem. Without it, those stay, so a reinstall comes back as the same host.
On Windows, from PowerShell run as administrator:
$env:GOLEM_UNINSTALL='1'; $env:GOLEM_PURGE='1'; iwr -useb https://app.golem.team/install.ps1 | iexWhat uninstalling leaves behind:
- Claude Code's skills and commands. Golem's files in
~/.claude/skills(folders namedgolem-fleet,golem-sandbox,safelyandsandbox) and~/.claude/commands(safely.mdandsandbox.md) stay, because the Cursor CLI reads them too. Delete them by hand if you want them gone. Other clients' Golem skills are removed. - Apple's
containerpackage and the sandbox's images, on a Mac that had the sandbox. - Other people's client entries on Windows. The uninstaller removes the client entries of the account that runs it. Run
golem setup-client --removein each person's session first, before the binary is gone. - The machine in the console. It stays listed, with its signed history. Revoke its key from the host's page if it should never report again.
To keep the agent but disconnect every client on a machine, run golem setup-client --remove. It also stops the agent putting the entries back.