First Steps with the AZET CLI: A Beginner's Walkthrough
Maker's note: 기준일 2026-10-03. Every command in this post comes from the AZET project README for version 0.3. We're the team that maintains it, and this walkthrough adds nothing the README doesn't support.
What the AZET CLI is
AZET 0.3 is a macOS app and CLI built around four primitives: a Chromium browser, work sessions, a persistent JavaScript REPL, and a usage ledger. The packaged app and the CLI are two surfaces over the same runtime — the Electron app runs the actual tabs you see and shares them with the execution engine, while the CLI can launch a per-profile Chromium on its own.
One thing AZET deliberately is not: a local AI model. Nothing ships inside it; text generation runs through provider CLIs you connect yourself. This post covers the first steps — install, login, your first run, sessions, providers — and flags the places where the desktop app is required. Everything here is a README-verified command or a README-stated boundary.
Two ways in
The packaged app. The downloaded macOS app bundles
its own Electron Chromium and Node.js, so a source checkout, a separate
Node install, and a separate Google Chrome install are all unnecessary.
On first run it creates a launcher at ~/azet/bin/azet
inside the default data location (~/azet) and leaves your
global PATH untouched. An existing bin/azet is never
overwritten — in that case, use the direct command shown in the app's
settings screen. If you move the app to a new location, run it once from
there and AZET updates its managed launcher path.
From source. A development checkout needs Node.js 24
or later. Run npm ci, put $HOME/azet/bin on
your PATH, and you're in. The source CLI's standalone browser execution
uses Google Chrome; point AZET_CHROME_PATH at a different
binary if you need to.
The first commands
| Command | What it does |
|---|---|
azet --version |
Confirms the executable responds |
azet login |
Creates the per-profile grant for local execution authority; the execution server checks scope, expiry, and revocation |
azet run 'open https://example.com and return the page title' |
Your first browser task |
azet session list |
Shows the SQLite session history |
azet credits |
The local usage ledger: per-task model, tokens, credits, time |
That run example is the README's own first example, and
it's a good one because it shows the shape of the task language: an
action, a target, and a result to bring back. The default
--engine auto parses explicit syntax like this first and
sends only goals it cannot parse to a structured selection loop;
--engine deterministic restricts execution to explicit
syntax. Steps chain together with and, then,
or semicolons, and --expect conditions such as
title:Example Domain, url:EXACT, or
text:CONTAINS pin down what the final observed page state
must be.
Connecting AI providers
The CLI ships no models, so the natural next step is connecting one.
azet providers lists what's available.
azet login --provider claude connects Claude;
azet login --provider codex connects an existing Codex
subscription.
It is worth being exact about what "connects" means, because the
boundary is deliberate. AZET verifies the authentication state and
models of an official CLI you have already logged into. It does not copy
provider credentials, it does not perform provider login or logout on
your behalf, and logging out of AZET does not revoke the provider's
OAuth session. New provider authentication happens in the official CLI
itself; AZET sees it afterwards. When something looks off,
azet doctor is the command that checks the setup.
Profiles keep multiple setups separate:
azet account add work Work, then
azet account use work, then
azet login --account work. Each profile can carry its own
provider connections and model defaults, and
-m/--model provider/model overrides all of it per run.
What requires the desktop app
The packaged CLI keeps working after you fully quit the app — it carries its own bundled Node runtime. But browser tasks still route through the app: the CLI opens the same app in hidden mode so the run uses the same profile's browser storage, and opening the GUI app shows the window. In the app, a window's close button only switches that process to hidden mode; the menu's Quit terminates it fully; and a hidden browser quits on its own after 15 idle minutes.
Storage follows the same split. Persistent cookies, localStorage, IndexedDB, and the AZET CLI credentials survive an app quit. Session cookies may not — they can be lost when the whole browser engine quits, including on that idle timeout.
Boundaries stated up front
- The current package is ad-hoc signed. That is not Developer ID signing and not notarization, and macOS first-run security procedures still apply.
- Fresh-install conditions — a new data location, a machine without Node and Chrome — are verified only as far as each version's package run receipt shows. Read the receipt, not the roadmap.
- Full Intel desktop execution is not claimed as verified.
- The public stable update channel is prepared, but whether a release actually shipped is judged by its final release receipt. We won't call it shipped in a blog post first.
Next steps
From here the surface widens: azet guide repl introduces
the persistent REPL, azet memory search and
azet skills list open the memory and skills surfaces, and
azet credits --cloud reads the hosted ledger. If the
terminal isn't your preferred surface, our next post compares the
desktop app and the CLI directly. And if you want to follow the azet.io
portal itself, the waitlist at https://azet.io is open.
FAQ
Does the AZET CLI ship with an AI model inside? No.
AZET is deliberately not a local model — text generation runs through
provider CLIs you connect yourself, which is why the natural step after
install is azet login --provider claude or
azet login --provider codex.
Do I need Node.js installed to use it? Not with the
packaged app: it bundles its own Electron Chromium and Node.js, and the
launcher it creates at ~/azet/bin/azet leaves your global
PATH untouched. A source checkout is different — that path requires
Node.js 24 or later and npm ci.
Does the CLI stop working when I quit the desktop app? No. The packaged CLI carries its own bundled Node runtime and keeps running after a full quit. Browser tasks are the exception in routing, not in survival — they still go through the app, opened in hidden mode so the run uses the same profile's browser storage.
Does connecting a provider hand AZET my credentials?
No. AZET verifies the authentication state and models of an official CLI
you have already logged into — it does not copy provider credentials and
never performs provider login or logout on your behalf. If the
connection looks off, azet doctor is the command that
checks the setup.