Install the CLI
The CLI is a single binary. Install it with one command for your platform.
Prebuilt binaries cover darwin, linux, and windows on amd64 and arm64. On any other target, build from source with go install github.com/archcore-ai/cli@latest.
Prerequisites
Section titled “Prerequisites”- macOS and Linux:
bash,curl,tar, andsha256sumorshasum. The script runs under bash, not POSIXsh. On a minimal distribution such as Alpine, install the missing pieces first withapk add bash ca-certificates. - Windows: PowerShell 5.1 or later, which ships with Windows 10 and 11.
Install
Section titled “Install”curl -fsSL https://archcore.ai/install.sh | bashirm https://archcore.ai/install.ps1 | iexThe script installs archcore.exe under %LOCALAPPDATA%\Programs\archcore and adds it to your user PATH. Open a new PowerShell window after install to pick up the PATH change.
If you prefer a Linux environment on Windows, install WSL and run inside it:
curl -fsSL https://archcore.ai/install.sh | bashEach script downloads the release archive and checksums.txt, and verifies the SHA-256 checksum before installing.
Install options
Section titled “Install options”The install scripts accept five environment variables (same on Unix and Windows):
| Variable | Default (Unix) | Default (Windows) | Purpose |
|---|---|---|---|
ARCHCORE_VERSION | latest | latest | Pin to a specific release tag (e.g. v1.0.0). |
ARCHCORE_INSTALL_DIR | ~/.local/bin | %LOCALAPPDATA%\Programs\archcore | Override the install directory. |
GITHUB_TOKEN | None | None | Authenticate asset downloads from a private repository. Version resolution reads a public redirect and uses no token. |
DO_NOT_TRACK | None | None | Any value other than 0 disables analytics, in the installer and in the CLI. |
ARCHCORE_TELEMETRY_OPTOUT | None | None | Any value other than 0 disables analytics. Tool-specific equivalent of DO_NOT_TRACK. |
ARCHCORE_VERSION=v1.0.0 ARCHCORE_INSTALL_DIR=/usr/local/bin \ curl -fsSL https://archcore.ai/install.sh | bash$env:ARCHCORE_VERSION = 'v1.0.0'; $env:ARCHCORE_INSTALL_DIR = 'C:\tools\archcore'irm https://archcore.ai/install.ps1 | iexAnalytics and opt-out
Section titled “Analytics and opt-out”Archcore sends anonymous events from two places: the install scripts, and the CLI’s update path.
| Sender | Events |
|---|---|
| Install script | cli_installed on success, cli_install_failed with a stage category on failure |
| CLI update path | cli_updated on success, cli_update_failed with a stage category, cli_update_skipped with a reason |
The update path covers a typed archcore update and the unattended attempt described under Update. A trigger property separates a typed manual run from an unattended auto one. archcore update --check sends nothing.
No event carries an error message, a file path, a directory name, a user name, a host name, or repository data.
Both senders resolve their identifier from the same file, so one machine is one identifier: ${XDG_STATE_HOME:-$HOME/.local/state}/archcore/install-id on Unix, %USERPROFILE%\.local\state\archcore\install-id on Windows.
The installer prints a one-line notice when it sends its event. When a manual event is delivered, archcore update prints one disclosure line naming an opt-out variable and the privacy page.
Two variables opt out of both senders: DO_NOT_TRACK and ARCHCORE_TELEMETRY_OPTOUT, at any value other than 0. Both are read before any filesystem access, so an opted-out machine also creates no identifier file:
DO_NOT_TRACK=1 curl -fsSL https://archcore.ai/install.sh | bashThe opt-out variables stop telemetry only. They do not disable updates.
A build without an injected key sends nothing, so go build, go install, a fork, and a CI build are all inert.
The full policy is at archcore.ai/privacy.
Verify
Section titled “Verify”archcore --versionYou should see a version string. If the binary isn’t on your PATH, see CLI troubleshooting.
Update
Section titled “Update”The CLI updates on two paths. You type archcore update, or the MCP server runs one unattended attempt in the background of a session. Both replace the same binary through the same code.
Typed update
Section titled “Typed update”archcore updatearchcore update reads the latest release tag from the https://github.com/archcore-ai/cli/releases/latest redirect (no GitHub API request), downloads the binary for your OS and architecture, verifies the checksum, and replaces the binary in place. The archcore update reference covers the --check flag.
After the binary phase, archcore update refreshes the Archcore plugin on every host that already carries it. A host without the plugin produces no output, and no command runs there. The archcore plugin reference covers the direct commands.
Two other paths update the binary: re-run the install script, or run go install github.com/archcore-ai/cli@latest.
Unattended update
Section titled “Unattended update”archcore mcp starts one unattended attempt in the background, 60 seconds after it begins serving. The attempt proceeds only when all of these conditions hold, in this order:
- The binary carries the official-build marker from the release workflow.
- The running version is not
dev. - No CI environment variable is set.
- No other process holds the 24-hour claim for this binary path.
- The install directory is writable.
- The latest version parses and is strictly newer.
The running process keeps executing the image it started with. The new version applies at the next launch. A locally built binary carries no official-build marker and never self-updates, which is the intended behavior.
No environment variable disables unattended update. Making the install directory root-owned is the supported way to stop a machine from updating itself, and it costs no bandwidth: the refusal happens before any download.
Next steps
Section titled “Next steps”- Quick start: initialize a project and create your first document.
- Commands: the full command reference.