Skip to content

Install & Update

Atomic Agent is a local-first AI agent that runs on your own machine. There’s no cloud account to create and no per-token bill — it talks to a language model running locally and keeps your data on disk. This page gets it installed and ready to run.

The whole app ships as a single binary with a small folder of helpers next to it. Installation is one command; updating is one button.

Supported platforms

v0.5.0 publishes prebuilt binaries for exactly four targets:

PlatformTargetStatus
macOS (Apple Silicon)darwin-arm64Supported
Linux x64linux-x64Supported
Linux arm64linux-arm64Supported
Windows x64win32-x64Supported

Quick install

The fastest path is the install script. It downloads the right binary for your platform, verifies it, and puts it on your PATH.

On macOS (Apple Silicon) or Linux, run it in your shell:

Terminal window
curl -fsSL https://atomicagent.io/install | sh

On Windows, run it in PowerShell:

Terminal window
irm https://atomicagent.io/install.ps1 | iex

Once it finishes, confirm the binary is found:

Terminal window
atomic-agent --help

Then launch the terminal UI to get going:

Terminal window
atomic-agent tui

What you need

Atomic Agent bundles most of what it needs into the binary, but a few things live outside it and must be present on your system.

A local model server

Inference runs through llama-server (from llama.cpp). Atomic Agent can download and manage this for you (managed mode), or you can point it at a server you run yourself (external mode).

A browser (optional)

Browser tools drive Chrome, Edge, or Chromium. Browser binaries are not bundled — install one yourself if you want web automation.

Disk + RAM/VRAM

The download is a self-contained binary that embeds the Node runtime, plus a small vendor/ folder — tens of megabytes in total. Models dominate the footprint: the default model (qwen-3.5-4b) needs a few GB. GPU acceleration is used when available.

Linux desktop tools

Some Linux tools (clipboard, notifications, window control) rely on small system packages. See Linux notes below.

Node.js 25.7+ (source installs only)

The prebuilt binary needs no Node at all. Building or running from source requires Node.js 25.7.0 or newer — see Installing from source.

What’s already inside the binary, so you don’t install it separately:

  • ripgrep — fast file search (shipped as vendor/rg next to the binary).
  • Document extractors — PDF, DOCX, XLSX, PPTX, RTF, ODT text extraction.
  • SQLite — sessions, memory, and tasks are stored locally.

How the pieces fit

Atomic Agent is the binary you install. It connects out to a model server for inference and, optionally, to a browser for web tasks. Everything else — your sessions, memory, and config — lives in a local state directory.

flowchart LR
    subgraph machine["Your machine"]
        CLI["atomic-agent<br/>(single binary)"]
        Llama["llama-server<br/>(llama.cpp)"]
        Browser["Chrome / Edge<br/>(optional)"]
        State["~/.atomic-agent<br/>config.json, .env,<br/>sessions, memory"]
    end

    CLI -->|inference| Llama
    CLI -->|web tools| Browser
    CLI -->|read/write| State

    Install["install.sh"] -->|downloads| CLI
    Llama -->|managed mode<br/>downloads| Models["GGUF models<br/>(HuggingFace)"]
  • Managed mode (default for desktop use): Atomic Agent downloads llama-server and your chosen model, starts the daemon, and watches its health.
  • External mode: you run llama-server yourself; Atomic Agent just talks to it.

Set up the model server

You have two ways to provide inference.

Let Atomic Agent handle the model server for you. Inside the TUI’s first-run setup, or from the CLI:

Terminal window
# See the catalog of available chat models
atomic-agent models list
# Download and select a model (qwen-3.5-4b is the default)
atomic-agent models pull qwen-3.5-4b
atomic-agent models use qwen-3.5-4b
# Start the managed daemon
atomic-agent models start
# Check it's healthy
atomic-agent models status

Managed mode downloads the llama.cpp backend and the GGUF model, spawns the daemon, and polls its /health endpoint until it reports ok. To upgrade the backend or swap models later, use atomic-agent models update, models pull, and models stop.

First run

With a model ready, start a session:

Terminal window
# Interactive terminal UI
atomic-agent tui
# Or a plain stdin/stdout chat loop
atomic-agent run --cwd .

Useful flags on run:

  • --cwd DIR — set the working directory the agent operates in.
  • --max-steps N — cap how many steps a single turn may take.
  • --no-approval — auto-approve dangerous tools (shell, file writes, HTTP). Convenient for trusted/dev use; risky otherwise.

Where Atomic Agent stores things

Everything lives in a single state directory, defaulting to ~/.atomic-agent. Override it with ATOMIC_AGENT_STATE_DIR.

PathWhat it holds
config.jsonUser-facing settings (model, browser, tasks, memory, MCP servers)
.envSecrets — API keys, tokens (mode 0600)
sessions.sqliteConversation transcripts and session state
memory.sqliteProfile facts, notes, lessons, procedures
tasks.sqliteDurable task queue
skills/Globally installed skills

Linux notes

Atomic Agent runs on Linux x64 and arm64. A few desktop capabilities depend on small system packages that are not bundled. Install the ones you want:

Optional Linux desktop packages
  • xclip — clipboard read/write (os.clipboard).
  • libnotify / notify-send — desktop notifications (os.notify).
  • wmctrl — window control (os.window.*). Atomic Agent probes for this at startup and reports it in capabilities.
  • gio — trash/move-to-trash support.

ripgrep is already bundled, so you do not need to install it separately. (To point at a different ripgrep, set ATOMIC_AGENT_RG_PATH.)

Two more things to know on Linux:

  • GPU acceleration uses Vulkan, which covers all GPU vendors. Managed mode enumerates devices via llama-server --list-devices; prefer a discrete GPU when present.
  • Browser sandboxing can fail inside containers or unusual kernels. If Chrome won’t launch, set ATOMIC_AGENT_BROWSER_NO_SANDBOX=1 (containers/CI only — it disables the browser sandbox).

Browser setup (optional)

Browser binaries aren’t shipped with Atomic Agent — install Chrome, Edge, or Chromium yourself. Then tune behavior with environment variables:

Terminal window
# Which browser channel to drive
export ATOMIC_AGENT_BROWSER_CHANNEL=chrome # chrome | msedge | chromium
# Explicit binary path (overrides auto-detect)
export ATOMIC_AGENT_BROWSER_EXECUTABLE_PATH=/path/to/chromium
# Run headless
export ATOMIC_AGENT_BROWSER_HEADLESS=1
# Attach to an already-running browser via CDP instead of launching one
export ATOMIC_AGENT_BROWSER_CDP_URL=http://127.0.0.1:9222

The same options exist as browser.* keys in config.json if you prefer not to use environment variables.

Installing from source

Building from a checkout is the fallback when there’s no prebuilt binary for your machine — notably Intel Macs.

Terminal window
git clone https://github.com/AtomicBot-ai/atomic-agent
cd atomic-agent
npm install
npm run build

The prebuilt binary has no such requirement: it embeds its own Node runtime, so you never install Node to use a released build.

Updating

How you update depends on how you installed.

If you installed via the script, Atomic Agent can update itself. When the TUI starts, it checks GitHub for a newer release (when eligible) and surfaces a prompt. Confirm it, and Atomic Agent re-runs the install script in place.

The check is a single anonymous GET to the GitHub Releases API (/repos/<repo>/releases/latest) and compares the latest tag with your running version. It is fire-and-forget: if you are offline, rate-limited, or the API errors, the failure is swallowed and your launch proceeds as normal. The result is cached in-process for ten minutes, so rapid relaunches do not re-query. If GITHUB_TOKEN or GH_TOKEN is set in your environment, it is sent as a bearer token to lift the anonymous rate limit.

Two honest caveats:

  • No silent auto-restart. Atomic Agent will not restart the running process for you. Once the update is written, the TUI shows a restart prompt so you know the new version is waiting — it takes effect when you relaunch.
  • Installed binary only. Self-update is refused when the running process is node or tsx, so it can never overwrite your Node runtime. See the Development checkout tab.

The update settings are environment-only — there is no update block to add to config.json:

SettingVariableDefault
Startup version checkATOMIC_AGENT_UPDATE_CHECK_ON_STARTUPtrue
Repository queried and installed fromATOMIC_AGENT_REPOAtomicBot-ai/atomic-agent
Terminal window
# Disable the on-startup update check (skips the network call and the prompt)
export ATOMIC_AGENT_UPDATE_CHECK_ON_STARTUP=0
# Target a fork or a specific repo
export ATOMIC_AGENT_REPO=AtomicBot-ai/atomic-agent

ATOMIC_AGENT_REPO sets both halves of the flow: the release the check looks at, and the install.sh (or install.ps1) the in-app update downloads and runs.

Next steps

Run your first task

Open the TUI with atomic-agent tui and ask the agent to do something real — read a file, search the web, or run a command.

Configure it

Tune models, browser, memory, and tasks in config.json. See the Configuration reference.

Serve an API

atomic-agent serve exposes an OpenAI-compatible endpoint at POST /v1/chat/completions.

Bring your own model server

Prefer external mode? Set localModels.url in config.json and skip managed downloads.

Hit a snag?

Model server, GPU, ports, or browser issues — see Troubleshooting.