Quickstart
1. Start a persistent Linux instance
cd /srv/workspaces
aircode start
First run output:
Generated password: k6uu3U6UG8AXgTnvNgNj
Started workspaces (1a2b3c4d5e6f) on http://127.0.0.1:7860.
Service: aircode@workspaces-1a2b3c4d5e6f.service — restart after crashes and automatic boot: enabled.
AirCode Ø picks a free port automatically (7860 upward), generates an access password, and saves a private instance config outside the projects directory. If Tailscale is present, it binds your tailnet IP so your phone can reach it; otherwise it binds localhost only.
aircode start is persistent by default on Linux: systemd restarts the server
after a crash and starts it again at boot. For a foreground process tied to the
current terminal, use aircode serve instead.
2. Open the cockpit
Open the printed URL on any device that can reach the machine and log in with the password. For an installable phone or tablet client, first give the instance a stable HTTPS address through Remote Access, then choose one of these paths:
- On Web app setup, enter only that HTTPS instance address and select Open install page. The same setup remains available on Download. The address is validated in your browser and is never sent to or stored by the marketing website.
- On the instance itself, sign in and choose Install web app from More or Settings → Web app.
- In Chromium, accept the browser-owned install prompt. On iPhone or iPad, follow the in-product guide to choose Share → Add to Home Screen, keep Open as Web App enabled when shown, and launch the new Home Screen icon.
The web app is always available as the store-free client; it does not depend on Google Play, the App Store, TestFlight, or the downloadable release manifest. Plain HTTP LAN addresses can still open in a browser where allowed, but mobile installation, service workers and Web Push require HTTPS.
3. Launch your first session
- Pick a project directory.
- Pick the execution environment:
- Local runs through host tmux or Windows ConPTY.
- Docker sandbox runs one supported direct session in a worker while mounting the selected project.
- Pick an engine (Claude Code, Codex, Antigravity CLI, Grok Build, Kimi Code) and a permission mode.
- Launch. The agent keeps running on the AirCode Ø machine — close the tab, take the train, come back: it’s still working. Notifications ping you when the agent needs input or finishes.
The Web, Desktop and native mobile launchers expose the same environment choice. Docker is currently a Codex source preview; see Docker sandbox before enabling bypass permissions.
4. Operate it like a container
aircode ps # running instances
aircode ps -a # include stopped instances
aircode inspect # current directory's instance
aircode logs --follow
aircode restart
aircode stop # stop now and disable startup at boot
Run lifecycle commands from the instance root, or pass its name, full ID, short ID, or root path. Stopping or updating the server never kills running tmux sessions. A whole-machine reboot necessarily stops operating-system processes, but durable session history remains available for recovery.
5. Choose ports, passwords, and multiple roots
Every value can be supplied on the launch command:
aircode start --projects-root /srv/client-a --port 7860 --generate-password
aircode start --projects-root /srv/client-b --port 7861 --password-file ~/.secrets/client-b
aircode start --projects-root /srv/demo --host 127.0.0.1 --port 7862 --no-password --relay private
Password files must be private (chmod 600). --password-stdin is available
for provisioning systems. --password <value> works too, but exposes the
secret to shell history and potentially process inspection. Disabling auth
must be explicit with --no-password.
One canonical path normally maps to one instance. Add names when the same path needs several independent ports or policies:
aircode start --projects-root /srv/client-a --name internal --port 7860 --generate-password
aircode start --projects-root /srv/client-a --name demo --host 127.0.0.1 --port 7861 --no-password --relay private
6. Sign in before using managed Relay
aircode login
aircode whoami
aircode start --relay managed
The account authorization is shared by this Unix user’s instances. Ports,
passwords, tunnel identities, and Relay enabled state remain isolated per
instance. Managed Relay refuses an instance without a password. Use
aircode logout to remove the machine credential, --relay private for a VPN
without a public tunnel, or --relay off to disable a tunnel without
forgetting its selected transport.
7. Install the agent CLIs
Packaged AirCode Ø releases already carry their pinned CLIs. For a source checkout, install and authenticate the CLIs under the same Unix user. The current distribution targets are:
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.211
claude
curl -fsSL https://chatgpt.com/codex/install.sh | bash -s -- --release 0.153.4
codex login
curl -fsSL https://x.ai/cli/install.sh | bash -s 0.2.118
grok login
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash -s -- --version 0.32.0
kimi login
An older or unreadable version is blocked. A newer release can launch and keeps
screen-verified controls enabled unless a known incompatibility is recorded.
aircode doctor commands report what is available.
Antigravity CLI uses Google’s official installer:
curl -fsSL https://antigravity.google/cli/install.sh | bash
agy
The native engines keep their vendor authentication model:
| Engine | Account/subscription path | API path |
|---|---|---|
| Claude Code | Claude plan sign-in | Anthropic API credentials |
| Codex | ChatGPT plan sign-in | OpenAI API credentials |
| Antigravity CLI | Google account with baseline access, Google AI Pro/Ultra, or a Google Cloud project | Native account catalogue |
| Grok Build | grok login with a Grok subscription or enterprise SSO |
XAI_API_KEY |
| Kimi Code | Kimi Code OAuth | Moonshot API credentials |
Google retired Gemini CLI for individual accounts on June 18, 2026 and directs that plan at the Antigravity suite. AirCode Ø follows that move: Antigravity CLI is the Google engine, and Gemini CLI can no longer be selected. Sessions created with it before the change stay readable in History. See the official transition notice.
An Antigravity subscription is not required to connect: a Google account gets
the baseline plan, while Pro and Ultra increase model access and limits. AirCode Ø
uses the account-specific catalogue returned by agy models. See Google’s
Antigravity plans and
model catalogue.
For bundled API provider profiles, open AI Usage, choose the provider, and
click Connect. AirCode Ø validates the submitted key, stores it locally in
~/.config/aircode/providers.env with private permissions, and activates it
for new sessions immediately. The same screen can replace or disconnect keys.
Keys supplied through the server environment remain supported and are shown as
externally managed instead of being editable in the UI.
DeepSeek, Z.AI and MiniMax are selectable as Claude Code provider profiles;
Meta Muse Spark is selectable through Kimi Code. DeepSeek uses
DEEPSEEK_API_KEY; Z.AI uses a GLM Coding Plan key in ZAI_API_KEY; MiniMax
accepts either a Token Plan Subscription Key or a pay-as-you-go key in
MINIMAX_API_KEY; Meta uses META_MODEL_API_KEY and also recognizes Meta’s
official MODEL_API_KEY alias. AirCode Ø injects each credential only into a
session using that provider and never returns it through the API.
Grok uses a stored browser session before XAI_API_KEY; run grok logout when
you explicitly want the API-key path.