docs
Start

Overview

An agent here is a container that stays running, wakes up when something happens, and reaches the outside world only through credentials it never sees.

The shape of it

Two halves, and one question between them

There is the console you type at, and the plane the agents live in. You install the console on the computer you are sitting at, and the first run asks the one question the halves differ on: whether the agents should live here, or on a server you have SSH to.

on your laptop
$ curl -fsSL https://squad.mormon.garden/client.sh | sh
$ squad

Node 22.18 or newer, and nothing else on this computer — no Docker here whichever answer you give. The install page is the long version, including the same thing done by hand.

Everything after that question is the same program. A plane answers the same protocol whether its socket is in a directory here or at the far end of ssh vps squad relay, so the agent list, the log feed, the conversation and a port forwarded out of a sandbox all run on this computer and reach the agents wherever they are.

It is a runtime rather than a harness. The thinking is done by pi; squad gives it a machine to live on, a way to be woken, and a boundary to work inside.

The first five minutes

Type its name, and make one

squad with nothing after it opens the console, because someone typing the command with nothing after it is asking to see the thing rather than to be told a fact about it. With no agents at all it opens on the one row there is:

╭──────────────────────╮╭────────────────────────────────────────────────────────────────╮
│ agents               ││ new agent                                                      │
│                      ││                                                                │
│ + new agent          ││ A name, and ⏎ builds it: a container, a repository of its own, │
│                      ││ nothing in its memory, and exactly what defaults in the config │
│ logs                 ││ allows it to reach.                                            │
│ config               ││                                                                │
│                      ││ ╭────────────────────────────────────────────────────────────╮ │
│ ↑↓ moves             ││ │ name  scout                                                │ │
╰──────────────────────╯╰────────────────────────────────────────────────────────────────╯
 ↑↓ agents   ⏎ build   ^C quit

The name is the whole of what the keyboard decides there. What the new agent may reach is defaults in the config, answered in advance by whoever wrote that file — because the one thing a keyboard may never do here is grant. Then you talk to it, and it takes a turn.

The console is every key and every command on that screen. Agents is what one turns out to be made of.

Before you go looking

Three places a setting lives

Nearly every question that starts "where do I put…" is answered by which of these three it belongs to, and they are told apart by who may write them.

the consoleA slash command or the config screen. Keys, models, hosts, MCP servers, the mailbox and a ceiling, all holding from the next turn with nothing restarted.
config.yamlThe operator's file, on the machine the plane is on, which no plane may write: agents, schedules, webhooks, and every credential attached to a host by name.
the repositoryInside the agent's own volume: who it is, what it remembers, the skills it loaded and the tools it wrote for itself. Its own to edit, and nothing else's.

The console keeps what it is given in a store beside config.yaml and never in it, so the operator's file stays the operator's: what a redeploy brings back is what was written there, and what was typed at the console survives the redeploy on its own.

Everything there is

The map

Start

Overviewthe two halves, and what an agent turns out to be
A serverrenting the cheapest one on any list, and getting in with a key or a password
The consolethe screen, the keys, and every command there is
Agentsmaking one, what it is made of, and taking it away

Being reached

Telegrama bot per agent, paired to you by a phrase
Emailone mailbox for the whole plane, and a list of who may write to it
Webhooksthe one published port, and what a signature proves
Schedulescron you wrote, and the turn an agent books for itself

What an agent can do

Modelswhat it thinks with, and where the key goes
MCP serverstools that live somewhere else, on a shelf the plane keeps
Web searchone granted endpoint, and the reading done on the far side of it
Repositoriesa GitHub repository, the branches it may push, and the token it never holds
Writing to another agenthanding a piece of the work sideways, and who says it may go
Serving a portopening what an agent built on the machine your browser is on

Bounds

Trustwho may instruct, and who is only ever quoted
Reachthe proxy, the grants, and the credential the agent never holds
Spendingdollars a day, and what happens at the ceiling
config.yamlthe file that is yours, and the store beside it that is the console's
Reading this without a browser

One address hands an agent the whole of it

Every page here is also written as markdown at the same address with .md on the end, and all 18 of them are in one file. That file is the thing to paste when what you are explaining squad to is a coding agent rather than a person:

the whole documentation
https://squad.mormon.garden/llms-full.txt

/llms.txt is the index instead — the same list as the map above, with a link to each page's markdown, for a reader that would rather fetch the one page it needs. Both are converted from these pages at build time rather than written beside them, so neither can be a version behind what you are reading now.