Skip to main content
Browse the documentation

Getting started

Install and first run

Install Snaga Code, sign in, and run your first task. The agent runs on your machine, against your files.

Snaga Code is a coding agent that runs on your machine. It reads and edits files in the directory you start it from, runs commands there, and uses your toolchain. Nothing is uploaded to be executed somewhere else.

That is the thing to understand first, because it explains everything that follows: why it asks permission before it does certain things, why it can undo its own edits with git stash, and why you can drive it from your phone while the work still happens on your computer.

Install

macOS and Linux

curl -fsSL https://snaga.ai/install.sh | bash

The installer detects your OS and architecture, downloads the matching tarball from https://snaga.ai/dist/, verifies it against the published SHA-256 sums, installs snaga into ~/.snaga/bin, and adds that directory to your PATH via your shell profile. No sudo required.

Options, if you need them:

--version 1.3.0install a specific version instead of the latest
--dir /usr/local/bininstall somewhere else (same as INSTALL_DIR=)
--libc gnuLinux only — use the dynamic glibc build instead of static musl
--helpprint the installer's own documentation
# a specific version
curl -fsSL https://snaga.ai/install.sh | bash -s -- --version 1.3.0

# system-wide
curl -fsSL https://snaga.ai/install.sh | INSTALL_DIR=/usr/local/bin sudo -E bash

Linux users: the default build is statically linked against musl, so the same binary runs on Ubuntu 18.04+, Debian, CentOS 7+, Alpine, Amazon Linux and others with no glibc version constraint. Pass SNAGA_LIBC=gnu only if you specifically want the dynamic build, which needs glibc 2.30 or newer.

Direct download

Every release publishes signed binaries for seven targets — macOS x86_64 and ARM64, Linux x86_64 and ARM64 (both glibc and musl), and Windows x86_64 — plus a .deb package. Each artifact ships with a cosign signature (.sig) and certificate (.pem), and the release carries a sha256sums.txt.

Download them from the releases page.

There is no ARM64 Windows build: the cryptography library Snaga depends on ships no assembly for that target.

Verify the install

snaga --version

Sign in

snaga login

You get two choices:

  • Email — Snaga sends a one-time code to your address and you paste it back.
  • API token — paste a token that starts with uarp_. Create one in account settings.

Credentials are stored in the macOS Keychain where available, and in ~/.snaga/credentials.json otherwise. To check what account a machine is using:

snaga whoami

About the model

There is no model picker. Snaga runs on the Stels platform and the platform chooses the model. There is no flag to point the CLI at a different endpoint.

This is deliberate, not a missing feature. The platform's choice moves as models improve, and a pinned model name silently diverges from that the moment it does. Streaming, tool calling, and failover to a backup model are handled for you; when a failover happens, the session tells you it happened without naming what it switched to.

Your first session

Change into a project directory and start it:

cd ~/projects/my-app
snaga

You get an interactive prompt. Type what you want in plain language:

> what does the authentication middleware do?

The agent reads the files it needs and answers. Ask it to change something and it edits the files directly.

Start in Plan mode if you are nervous

The first thing worth knowing is that you can stop the agent from writing anything at all:

> /mode plan

Plan mode is read-only. The agent can read files, search the codebase, and tell you what it would do — but every tool that writes a file or runs a command is refused. It is the right way to get comfortable with an agent in a repository you care about.

Switch back when you are ready:

> /mode act

Undo

Before every destructive action, Snaga snapshots your working tree with git stash. To roll the last one back:

> /rewind

Up to 20 checkpoints are kept per session. This works without you approving each individual write, which is the point — you are not asked to sign off on every edit, but nothing is unrecoverable.

A single task without the prompt

For scripting, or when you know exactly what you want:

snaga -p "add a test for the empty-list case in cart.rs"

Add --output-format json for one result object, or --output-format stream-json for one JSON event per line as the turn runs. With either, stdout carries nothing but the machine-readable payload — banners, notices and progress all go to stderr, so you can pipe it straight into another tool.

snaga -p --output-format json "list the public API of this crate" | jq .

Picking a session back up

snaga --continue          # reopen the most recent session here
snaga sessions list       # see the session ids
snaga --resume <id>       # reopen a specific one

A resumed session keeps its transcript: new turns append to the same session rather than starting a new one.

Where things live

PathWhat
~/.snaga/bin/snagathe binary
~/.snaga/credentials.jsonsaved credentials (when not in the Keychain)
.snaga/sessions/transcripts and event logs, per project
.snaga/tools/tools the agent has written for itself
SNAGA.mdproject memory — notes the agent keeps about your repo

Everything under .snaga/ is per-project and lives in the directory you started the agent from.

Keeping it current

snaga update

Next