Sign in from a terminal, land in an interactive CLI, mint an account management key (slt_mgmt_…) for automation, create an inference API key (slt_…) for OpenAI-compatible SDKs, check credits, and manage a provider fleet. Bracket is the coding harness in this same binary (scalattice bracket). Optional MCP mode for other editors.
Product: scalattice.com/cli · npm: scalattice-cli · Cloud docs: developers#cli · providers#fleet-api · Installer: scalattice.cloud/install/cli
Product: scalattice.com/cli · npm: scalattice-cli · Cloud docs: developers#cli · providers#fleet-api · Installer: scalattice.cloud/install/cli
# Paste-friendly (installs a local Node runtime if you do not have Node 18+)
curl -fsSL https://scalattice.cloud/install/cli | sh
# Or with npm (Node 18+)
npm install -g scalattice-cliOr sign in on Cloud /auth and run the curl command shown there. That stores a session in ~/.config/scalattice/config.json (or %APPDATA%\scalattice on Windows), signs the browser tab in, installs this CLI if needed, and opens the prompt.
scalatticeYou get a scalattice> prompt. Type commands without the scalattice prefix:
scalattice> whoami
scalattice> login
scalattice> credits
scalattice> help
scalattice> exit
login stores a session only. For the OpenAI SDK, create a key and export it:
scalattice developers keys create
eval "$(scalattice init)" # after SCALATTICE_API_KEY is in the envOne-shot from any shell still works: scalattice login, scalattice whoami, and the rest.
Then use any OpenAI SDK:
from openai import OpenAI
client = OpenAI() # uses OPENAI_BASE_URL + OPENAI_API_KEY
print(client.models.list())| Prefix | Role |
|---|---|
slt_mgmt_… |
Account management: credits, inference-key CRUD, fleet |
slt_… |
Inference only (chat/completions via api.*) |
slt_provider_… |
Machine agent token (provider machines create / roll; goes on the GPU host) |
Create management keys on Account or account keys create if you need a long-lived secret for MCP. The CLI itself uses your session.
Inside the prompt, drop the scalattice prefix. From a normal terminal, keep it.
| Command | What it does |
|---|---|
scalattice |
Interactive prompt (login, whoami, …) |
login / logout |
Session only (what config.json stores) |
| `developers keys list | create |
| `account keys list | create |
init |
Print env exports (SCALATTICE_API_KEY plus OpenAI SDK aliases) |
credits |
Wallet + model grants |
whoami |
Show CLI version / session / account |
update |
Check npm and install scalattice-cli@latest into this prefix |
provider machines |
List fleet (id, status, token last four) |
provider machines create |
Add a machine (prints slt_provider_… once) |
provider machines roll |
New token for an existing machine (prints once) |
provider machines revoke |
Remove a never-connected machine |
provider earnings |
Fleet earnings |
provider pause / resume |
Pause or resume all machines |
provider schedule |
Patch one machine’s schedule |
mcp |
MCP stdio server (run as scalattice mcp, not inside the prompt) |
bracket |
Coding harness: read/edit files and run commands in this directory |
| `bracket provider [list | add |
bracket provider key [show|set|new|roll|revoke] |
Key for the active provider (bracket.key for Scalattice; --show prints the secret) |
developer/developers, provider/providers, machine/machines, key/keys, and bracket/brackets are aliases (any capitalization).
Config: ~/.config/scalattice/config.json (mode 0600): session + email only. Keys are never written there. Bracket may store its own inference key at ~/.config/scalattice/bracket.key (also 0600).
Env overrides: SCALATTICE_CLOUD_URL, SCALATTICE_API_URL, SCALATTICE_API_KEY, SCALATTICE_MGMT_KEY, SCALATTICE_SESSION_TOKEN, SCALATTICE_BRACKET_MODEL, SCALATTICE_STREAM, SCALATTICE_THINKING, SCALATTICE_REGION, SCALATTICE_VET_REPLICAS, SCALATTICE_SECURITY, SCALATTICE_NO_UPDATE.
On a terminal the CLI checks npm every few hours and updates itself when the install prefix is writable. scalattice update does it immediately. --no-update or SCALATTICE_NO_UPDATE=1 skips that. MCP and init never auto-update (their stdout is consumed).
Bracket is the coding harness in this CLI. scalattice bracket takes over the terminal. scalattice with no args is still the account prompt.
scalattice login
scalattice bracket
scalattice bracket "fix the failing tests"
scalattice bracket --print "what does this repo do?"
scalattice bracket --yolo "apply the refactor"Login is enough: Bracket mints a developer inference key (slt_…) named CLI bracket into ~/.config/scalattice/bracket.key. That is the key type chat completions use. An account management key (slt_mgmt_…) cannot call the inference API. To set a key yourself: export SCALATTICE_API_KEY=slt_… (OPENAI_API_KEY is accepted as an alias). Env wins over the file.
scalattice bracket provider key # source, last four, path (no secret)
scalattice bracket provider key roll # new secret, rewrite bracket.key
scalattice bracket provider key revoke # revoke Cloud key and delete the file
scalattice bracket provider key --show # print the full secretInside Bracket, /provider key, /provider key roll, and /provider key revoke do the same. /provider key never prints the full secret. Default model is qwen-3-coder-30b-a3b (override with --model or SCALATTICE_BRACKET_MODEL).
Streaming is on by default and sends X-Scalattice-Vet-Replicas: 1 plus X-Scalattice-Security: tier1 (required by the API). Thinking is on by default. Toggle with --no-stream, --no-think, --region auto|us|eu|ap, --vet 1|2|3, --security tier1|tier2.5, or the matching slash commands. Multi-vet or tier2.5 turns streaming off.
Inside the prompt: /help lists commands; /help stream (or region, vet, settings, chats) explains one. /settings prints labeled inference options. /chats lists saved conversations; /chat 2 switches; /new starts a blank one. /clear /compact /model /yolo /credits /whoami /provider. Shell and file writes ask before running unless you pass --yolo (also --auto / --dangerously-skip-permissions).
Chats are stored locally under ~/.local/share/scalattice/bracket-sessions/ (or %LOCALAPPDATA%\scalattice\bracket-sessions on Windows). --continue resumes the last chat in this workspace.
--print is one-shot (CI / scripts) and does not open the TUI. Writes and shell still need --yolo when stdin is not a TTY.
scalattice login
scalattice provider machines create
scalattice provider machines
scalattice provider pause # or resumeSee Fleet API docs.
MCP is not a second install. After login, leave the prompt and run scalattice mcp. For a headless process without a session, set SCALATTICE_MGMT_KEY in that environment.
{
"mcpServers": {
"scalattice": {
"command": "scalattice",
"args": ["mcp"]
}
}
}MIT
