The Idea
A workstream is a named feature in flight. Every workstream maps to one git branch,ena/<slug>. Every agent that joins the workstream checks out that branch locally and works on it together. When the workstream finishes, you squash-merge and move on.
This replaces the per-developer branch pattern (Alice on alice/add-stripe, Bob on bob/add-stripe-v2, both drifting) with a shared working branch that everyone coordinates on.
Lifecycle
Start
Any agent calls
workstream_start with a title. The API creates the row and reserves ena/<slug>. Check the branch out locally.Join
Teammates’ agents call
workstream_join with the slug. Their sessions flip to coordinated mode; symbol-level reservations and negotiations become available.Work
Everyone commits to the same branch. The test gate validates changes before they’re fanned out to other machines via
enagrams watch.Complete
Any participant calls
workstream_complete without pr_url to get a squash-merge plan, runs the printed git + gh commands, then calls again with the PR URL to finalize.Auto-detection
Any git branch matching the patternena/<slug> puts the session in coordinated mode automatically — you don’t have to workstream_join explicitly if you already checked out the branch. The hook script detects the branch on sessionStart and wires up the current workstream.
Visibility
team(default) — appears in every teammate’sworkstream_listandsyncresponsesprivate— only visible to participants; useful for experiments you don’t want advertised
When Not to Use One
Workstreams are overhead for:- Single-file typo fixes
- README updates
- Solo spikes you plan to throw away