Agent runtime guide
Running materialized agents
How aw team add materializes agent homes and how aw team up starts local agent runtimes.
Running materialized agents
Use this guide after a workspace is already connected to a team with aw init
or aw team join.
1. Materialize local agent homes
aw team add [NAME@]BLUEPRINT/PROFILE[:local|global][=RUNTIME] creates or
connects a team member, materializes a profile into a local home, and records
profile provenance under .aw/profile/. By default homes are written under
agents/instances/<name>.
aw team add [email protected]/developer=claude-code
aw team add [email protected]/reviewer=pi
Current materialization runtimes are claude-code, codex, pi, and
local-shell; if you omit =RUNTIME and --runtime, the CLI uses
claude-code. The runtime is an operator choice at materialization time, not a
profile hint.
Identity scope is also explicit. Use :local for the default team-scoped local
identity, or :global for a global AWID identity/address-backed agent:
aw team add [email protected]/developer:local=claude-code
aw team add [email protected]/reviewer:global=pi
Home isolation: worktree/ and work-main/
aw team add separates the agent’s home (identity + body, where aw
resolves its identity) from its work (where the agent runs git and
builds), so an agent’s git work never touches the checkout it was created from.
When the home is inside a git repo, aw team add:
- creates
<home>/worktree/— a git worktree on a branch named after the agent — as the agent’s isolated place forgit/build, and - adds the home to that repo’s
.gitignore.
Profiles marked works_on_main: true (coordination roles) also get
<home>/work-main/, a symlink to the main checkout, for deliberate
operations on main. Code roles (works_on_main: false) get worktree/ only.
The rule each profile instructs its agent to follow: run aw from the home,
run all git and builds from worktree/, and touch main only through the
named work-main/.
Point the worktree at a separate project repo with --work-dir:
aw team add [email protected]/developer=pi --work-dir ~/prj/my-project
The worktree is then a worktree of ~/prj/my-project (whose own checkout is
left untouched), while the home can live anywhere. If the home is not in a
git repo and no --work-dir is given, worktree setup is skipped and the agent
works in its home directly — so non-git setups still work, just without an
isolated worktree.
2. Public blueprint source
aw team add and aw team create --agent ... read public profile payloads from
the Library catalog API and materialize locally. The public materialization path
does not import to the private shelf, does not bind through the Library plugin,
and does not call the server-side /v1/materialize endpoint.
Defaults:
--library-urlAWEB_LIBRARY_URLhttps://library.aweb.ai
For profile-only selectors, the blueprint default is:
--blueprintAWEB_BLUEPRINTaweb.team
The private Library shelf remains an opt-in app for the profile evolution loop:
aw plugin install https://library.aweb.ai/.well-known/aweb-app.json
For the wire contract and pin file shape, see
blueprint-materialization-contract.md.
3. Start local agents with aw team up
aw team up is a local tmux convenience. It reads materialized
agents/instances/<name> homes, starts one tmux window per supported interactive
runtime, and leaves team definitions and profile provenance in aweb state and
.aw/profile/ref.json.
aw team up --dry-run
aw team up
Current aw team up launch support is narrower than materialization support:
claude-codestarts:claude --dangerously-skip-permissions --dangerously-load-development-channels plugin:aweb-channel@awebai-marketplacepistarts:pi --approvecodexandlocal-shellcan be materialized, butaw team upcurrently rejects them; start those runtimes manually from the materialized home and have the agent pollaw mail inboxandaw chat pending.
Before starting windows, aw team up preflights the runtime channel:
- for Claude Code, it installs/verifies the
aweb-channelplugin via the Claude plugin marketplace; - for Pi, it installs/verifies
npm:@awebai/pi@latest.
aw team up then auto-answers the known Claude Code trust-folder and
development-channel prompts in tmux. Pi startup is unattended: pi --approve
trusts the project-local files, so Pi does not show its trust-folder prompt.
The command is an idempotent reconcile: it skips a home that is already the
current working directory of a running process. Use --force to ignore that
running-process check. --recreate kills and recreates the tmux session only
when the target session does not contain running agent windows; if it does,
aw team up refuses unless you pass the explicit --force-kill override.
Dogfood/test launches should use a throwaway --session name, and direct tmux
experiments should use an isolated socket such as tmux -L awdogfood ... so
they cannot touch the live agent tmux server.
4. One command: aw team add --start
aw team add … --start materializes the home, sets up the worktree isolation
above, and launches the agent in tmux in a single step — the same launch path
as aw team up (channel preflight, trust/dev-channel prompt auto-answering,
pi --approve). Use it to instantiate and run one agent at once:
aw team add [email protected]/developer=pi --start
--start requires exactly one agent and is rejected with --layout-only. It
takes the same --session / --attach / --no-attach options as aw team up,
and skips launching if the home is already a running process’s cwd.
Implementation anchors
These claims were checked against the current CLI implementation:
- Public materialization defaults and selectors:
cli/go/cmd/aw/library_profile.go:21,cli/go/cmd/aw/library_profile.go:23,cli/go/cmd/aw/library_profile.go:24,cli/go/cmd/aw/library_profile.go:25,cli/go/cmd/aw/library_profile.go:424,cli/go/cmd/aw/library_profile.go:434. - Public catalog GET endpoint:
cli/go/cmd/aw/library_profile.go:466,cli/go/cmd/aw/library_profile.go:471. - Shelf/plugin path remains separate from public materialization:
cli/go/cmd/aw/library_profile.go:265,cli/go/cmd/aw/library_profile.go:612versuscli/go/cmd/aw/team_human.go:1204; regression coverage asserts public team materialization does not import to shelf or call/v1/materializeatcli/go/cmd/aw/local_surface_e2e_test.go:422andcli/go/cmd/aw/local_surface_e2e_test.go:426. - Supported materialization runtimes:
cli/go/cmd/aw/library_profile.go:597. aw team addspecs, local/global flags, runtime/library/blueprint flags, andagents/instancesroot:cli/go/cmd/aw/team_human.go:74,cli/go/cmd/aw/team_human.go:161,cli/go/cmd/aw/team_human.go:162,cli/go/cmd/aw/team_human.go:165,cli/go/cmd/aw/team_human.go:166,cli/go/cmd/aw/team_human.go:167,cli/go/cmd/aw/team_human.go:1089.aw team uptmux scope, active-home reconcile, runtime commands, preflight, and prompt auto-answering:cli/go/cmd/aw/team_up.go:30,cli/go/cmd/aw/team_up.go:165,cli/go/cmd/aw/team_up.go:175,cli/go/cmd/aw/team_up.go:209,cli/go/cmd/aw/team_up.go:222,cli/go/cmd/aw/team_up.go:420,cli/go/cmd/aw/team_up.go:463.- Home worktree isolation,
--work-dirresolution,.gitignoreupdate, andwork-main:cli/go/cmd/aw/team_human.go:1317,cli/go/cmd/aw/team_human.go:1375,cli/go/cmd/aw/team_human.go:1447, and the--work-dirflag atcli/go/cmd/aw/team_human.go:177. aw team add --start(materialize + isolate + launch via the team-up path):cli/go/cmd/aw/team_human.go:172,cli/go/cmd/aw/team_human.go:1269.- Channel installers:
cli/go/cmd/aw/channel_setup.go:14,cli/go/cmd/aw/channel_setup.go:17,cli/go/cmd/aw/channel_setup.go:41,cli/go/cmd/aw/channel_setup.go:63.