Agent tribes¶
This page describes tribe membership, panels, and navigation behavior.
Agent Tribes¶
An agent tribe is a user-facing label for related agents across clans and sessions.
Assign one at launch with the tribe= keyword on %id, or use #tribe when the agent
should be auto-named:
%id(api-review, tribe=review) Review the API boundary.
---
#tribe:review Review another boundary with an automatic id.
sase's TUI displays tribes with an @ prefix and splits the Agents tab into panels such
as @review and @epic. The clan's single declaration assigns one effective tribe to
the whole generation; joiner prompts omit tribe=. Older clan generations without any
clan_tribe value fall back to the distinct post-hoc member tribe assignments they
carry.
Press N in sase's TUI to set or clear the focused agent's tribe (or every marked
agent). On a clan row or any clan member, the modal targets clan <name> and sets the
whole clan generation's recorded tribe (see
Launch-time clan summaries). When the
focused or marked agent is the declaring clan member itself, sase's TUI also rewrites
its stored %clan(<clan>, tribe=<tribe>) and its clan_tribe metadata. For a joiner,
sase's TUI updates only the metadata and never invents a second %clan declaration.
Pressing N on the clan row itself writes only the clan record and leaves member
prompts alone. The CLI manages the per-agent assignment store for any named agent:
sase agent tribe set -n <agent> -t <tribe>
sase agent tribe unset -n <agent>
sase agent tribe list [-n <agent>]
Pass a bare tribe name to set, without the display-only @ prefix. Names may contain
letters, digits, underscores, dots, and dashes. set exits with status 2 for an
invalid name, an unknown agent, or the reserved name default. The CLI updates only the
assignment store; it does not rewrite the agent's prompt or metadata. Per-agent
assignments are stored canonically in ~/.sase/agent_tribes.json with a tribe field.
If that file does not exist, SASE reads the legacy ~/.sase/agent_tags.json scalar
tag and list tags shapes. The first mutation writes all imported assignments to the
canonical store, which is authoritative from then on. Existing artifacts and saved
bundles can still be read when they use the legacy tag field, but rewritten metadata,
new bundles, CLI output, and editor projections use tribe. Clan-wide assignments use
the separate per-member clan_tribe metadata and are resolved across the generation.
For sase's TUI panel grouping, that explicit clan assignment takes precedence over
per-agent assignments.
sase's TUI derives the reserved @default panel for agents whose outer presentation
root has no effective tribe. This fallback is display-only: SASE does not write
default into agent metadata or the assignment store. An agent that nonetheless carries
a stored default tribe joins the same panel, and clearing any user-managed tribe
returns the agent there. Because the panel never resolves to a real entity,
%wait:@default and #fork:@default are rejected at launch.
Moving agents between tabs¶
Press N in sase's TUI to open the Tribe & Tab modal: the second input moves the
focused agent (or every marked agent) to a named tab with tab completion, leaving the
tribe untouched when its input is empty. Typing main (or pressing Ctrl+T) moves back
to the default tab. The move is optimistic with rollback, shows a
Moved 2 agents to blog toast, and remote rows are skipped with the reason "tab moves
run on the owning machine". The same move is available from the CLI, which rewrites the
whole presentation root (session, clan generation, or workflow) and its stored %tab
directive:
sase agent tab set -n <agent> -t <tab>
sase agent tab unset -n <agent>
sase agent tab list [-n <agent>] [-j/--json]
A move writes agent_tab with agent_tab_source: moved to the root's metadata. set
exits with status 2 for an unknown agent or an invalid tab name (reserved
local/all are rejected with guidance, and main is redirected to unset).
The built-in job tribe¶
Agents launched by AXE jobs belong to the built-in @job
tribe, whose panel starts collapsed so routine background work stays quiet. For
compatibility, SASE stores that tribe under its historical name chop. Assigning job
through %id(tribe=job), #tribe:job, %clan(<clan>, tribe=job), the N modal, or
sase agent tribe set -t job persists chop, and @job in %wait or #fork targets
the same agents. A few surfaces show the stored name instead of the public one:
sase agent tribe list prints chop, and prompt completion and the panel's W/F
keys insert @chop, which targets the same tribe.
Two exceptions apply. If existing agent or clan records already use a literal job
tribe, job refers to that literal tribe instead of the built-in one. If your
configuration defines both ace.tribes.chop and ace.tribes.job with different
settings, assigning job fails with an error that names both keys, and nothing is
written.
Tribe panel focus and folding¶
In the split layout, a tribe panel is also a selectable container. Repeated lowercase
h follows the validated workflow → session → clan → tribe ladder and selects the whole
expanded panel after the structural parent chain is exhausted; h on the selected panel
collapses it when another panel remains visible. Press l to expand a collapsed panel
while keeping container focus, then l again to return to the row sase's TUI remembered
for that panel. Uppercase L instead hints every visible agent-node, clan, and banner
fold in the focused tribe so one key toggles one fold; on a collapsed panel it warns
instead of expanding. Lowercase h on a collapsed panel selects the visually
bottom-most expanded panel without changing panel folds; Ctrl+O returns to the
collapsed origin. If every live panel is collapsed, h retains the existing
already-collapsed warning. While an expanded whole panel is selected, j / k cycle
across every panel, including collapsed ones, without descending, and l or Esc
returns to the remembered row. J / K skip collapsed panels and move to the first /
last selectable row of the next / previous expanded panel; they do nothing when no other
panel is expanded. Whole-panel focus is unavailable in the merged layout. Apostrophe
jump can select any split-panel title, including a lone expanded panel, but a lone panel
cannot be collapsed. Press Z with a whole tribe panel selected to zoom that tribe's
metadata document. Press = to isolate the focused panel by keeping it expanded and
collapsing every sibling without changing its remembered row. = works from whole-panel
focus and from a row selection inside a panel alike; from a row, it isolates the panel
that holds the cursor without changing the selected row. When isolation changes the
layout, sase's TUI remembers the prior collapsed-panel set for the session: ↺ title
markers and the = restore panels footer hint show that the next = will restore it. A
separate sibling-panel or layout mutation invalidates that one-step restore.
Press - to sweep every open agent node and clan — never a grouping banner such as
Done or Running — in the focused panel closed in one press. It resolves scope the
same way = does — from whole-panel focus, from a row or banner selection inside a
panel, and in merged layout, where it treats the merged roster as one scope — and it
never collapses the panel itself. When the focused panel has nothing left to collapse,
- reverses itself and re-expands exactly the folds its own last sweep in that panel
closed, restoring each structural fold to the level it held before. The restore is
filtered at press time to folds still live in that panel and still collapsed, so it
tolerates folds re-expanded by hand and never resurrects a fold absent from the data.
Each panel remembers at most one sweep; a fresh sweep replaces that panel's record.
Armed panels mark each fold - would re-expand with a gold ▿ on the owner row and
▿N in the panel title, clearing the markers as soon as the next press would sweep
instead. The footer shows - collapse folds or - restore folds depending on which
direction the next press would take. A panel with only open grouping banners reports
nothing to collapse or restore.
Press _ for -'s all-panels sibling: one press sweeps every open agent node and clan
fold in every eligible tribe panel at once, sharing -'s per-panel records so the two
compose freely. It skips any effectively collapsed panel in both directions and works
identically from any selection, including whole-panel focus on a collapsed panel. With
nothing left to sweep anywhere, it restores every panel's last sweep. The footer shows
_ collapse all folds / _ restore all folds once at least two panels are eligible.
Uppercase H on a selected expanded panel hints every currently expanded agent node,
clan, and top-level grouping banner in that panel — including owners hidden behind a
collapsed banner — using the same adaptive hint keys as L, restricted to folds that
are not already collapsed. Typing a hint fully collapses that one fold and leaves the
remembered row and every other fold untouched; H never expands and never collapses the
panel itself, which stays lowercase h's job. A panel with nothing expanded warns
without arming hint mode; an already collapsed panel keeps the existing
already-collapsed warning. Whole-panel H is unavailable in merged layout, where the
existing row/group-scoped ladder remains in effect. Use ,H to open the same collapse
hints from any row, or from a selected panel to hint every tribe. That row ladder first
retreats a selected open workflow or session one fold level, then remaining group-wide
agent nodes, then the selected open clan, then every remaining open canonical clan in
the next group; the grouping banner closes only after those structural rungs are
saturated. Custom keys bound to hooks_or_collapse_all receive the same contextual
behavior and footer labels.
Whole-panel focus replaces the ordinary agent detail with a TRIBE document. Its four
zz metadata detail levels are:
| Level | Name | Tribe summary content |
|---|---|---|
| 1 | Glance | Header, compact numbered top-level roster (in the jump panel), attention previews, clan-summary and prompt headline indexes (up to 8 each), and headings/counts for non-empty sections |
| 2 | Triage | Bounded previews for every represented section |
| 3 | Inspect | Nested roster detail and grouped full section bodies, still with protective bounds |
| 4 | Forensics | Unbounded bodies, tracebacks, the richest member annotations, and all-time runtime statistics and percentiles |
From levels 1-3, zZ opens every fold to level 4; at level 4, it closes every fold to
level 1. za and zA adjust the section, or the CLAN SUMMARIES/PROMPTS entry, at
the top of the metadata viewport. Reply, slow-call, prompt, and clan-summary presence
enrichment is requested off-thread at every tribe level so known-empty sections can
remain absent; all-time runtime statistics remain level-4-only. Unknown required
disk-backed content produces one dim ⋯ scanning member data… document tail rather than
per-section placeholders. The compact roster and its fixed numeric jump targets remain
present at all four levels; the number keys jump to top-level clans, sessions,
workflows, or agents and expand only the required ancestors.
Use z1-z3 to select the collapsed, expanded, or fully expanded view directly; z4
selects the exhaustive view, including unbounded roster annotations and runtime
statistics. Direct numeric fold chords remain inside fold mode and do not trigger
numbered member jumps. Outside fold mode, these fixed metadata-member numbers are
separate from ordinary apostrophe entry hints, whose adaptive keys may use two
characters in a large list.
The ,H leader chord opens the same collapse-by-hint picker as whole-panel H, from
any selection. From a row or banner it hints every expanded agent node, clan, workflow,
session, and top-level grouping banner in the focused tribe. From a selected tribe panel
it hints those owners across every expanded tribe panel and adds a title chip on each
expanded panel so picking it collapses that panel. Typing a hint fully collapses that
one entry and exits; Esc cancels. The ordinary apostrophe jump mode includes both
expanded and collapsed split-panel titles as destinations and preserves Ctrl+O
jump-back history.
Tribe wait and fork targets¶
Use an @<tribe> reference where %wait or #fork normally accepts an agent name:
%wait:@review
#fork:@review
This is a next-entity target, not a request to wait for every historical member of the
tribe. %wait:@review selects the earliest successfully completed @review entity
launched after the waiting agent: either one standalone agent or one complete clan
generation. Older entities, the waiting agent itself, failed agents, and incomplete
clans do not satisfy the dependency. A tribe-assigned member of a clan enrolls the whole
generation, so that candidate becomes eligible only after every member required by the
normal clan wait succeeds.
#fork:@review implies the same wait, then resumes from the selected entity. A
standalone match contributes its full conversation. A clan match contributes one
launch-ordered clan summary containing each member's sanitized prompts, outcome/model
metadata, reply size, and transcript path; full member replies are deliberately omitted
so the child can open only the transcripts it needs. Tribe targets can be mixed with
explicit agent or clan parents in a multi-parent fork, and sase's TUI prompt completion
offers visible @tribe values for both %wait and #fork. When no %id is supplied,
tribe waits and forks use neutral auto-names rather than derived .w* or .f* names
because the eventual parent is unknown at launch planning time.
sase's TUI can insert these group references directly. Select a clan's synthetic
container row and press F for #fork:<clan>, or press W for %wait:<clan>. For a
tribe, give its named panel whole-panel focus—expanded or collapsed—and use the same
keys for #fork:@<tribe> or %wait:@<tribe>. The reserved @default panel and
grouping banners are not group targets, and marked rows take precedence over the focused
clan or tribe for W. For a selected clan or tribe, sase's TUI prefixes either prompt
with a VCS tag only when every real agent currently in that scope resolves to the same
workflow and ref. Otherwise it omits the VCS tag so you can add the intended #git,
#gh, or other workflow reference yourself. Marked waits instead take VCS context from
the selected marked row, or the first named mark when the selection is elsewhere. The
current rows determine only that optional VCS prefix; they do not pin the eventual clan
or tribe fork source. See
Forking Agents and Groups for
selection and revalidation behavior.
Related¶
- Agents and workspaces — the section hub.
_[project]: A sase project is a named unit of work registered with SASE. _[workspace]: A sase workspace is a numbered clone of a project's primary repo, managed by the workspace store and tracked in that project's registry.json. _[agent]: A sase agent is an agent session or a single agent that does not belong to a session. _[prompt]: A prompt is the text SASE hands to a provider to start an agent turn. _[macro]: A macro is a reusable prompt triggered with #name in agent prompts. _[Patch]: A Patch is SASE's local unit of change. _[bead]: A bead is one tracked work item in SASE's git-native issue tracker. _[plan]: A plan is a persisted, approved artifact recording the intent behind agent work. _[TUI]: The TUI is SASE's terminal interface for running agents and reviewing results. _[epic]: An epic is an executable multi-phase plan run with sase bead work. _[gate]: A sase gate is a durable, command-backed request for one user decision, created when work must pause for the user. _[monitor]: A sase monitor is a monitor turn that runs one long command under a detached supervisor, so the command outlives the agent that started it. *[stitch]: A stitch is the lightweight ordered change record inside a Patch's STITCHES: section.