Skip to main content

Overview

Enagrams is most powerful when every developer on the team connects their agent to the same workspace. This guide walks through onboarding a team of 2–10 developers.

Workspace Setup (Owner)

1. Create the Workspace

Pick the path that matches where you are:
  • You have the repo cloned locally — from the repo root, run npx enagrams init. The CLI authenticates you, binds the workspace to this repo, and writes all IDE configs in one shot.
  • You want to set it up before cloning — create it in the dashboard with New Workspace, then click Connect GitHub on the new workspace and pick the repo. The Enagrams GitHub App resolves the repo fingerprint server-side and binds it for you.
See Workspace Management → Creating a Workspace for all four paths and when to use each.
If you create the workspace in the dashboard without the GitHub App, use the repo’s basename as the slug (github.com/org/chatgpt-wrapperchatgpt-wrapper). The CLI uses slug-matches-basename as the trigger for a one-keystroke “bind this repo to <workspace> shortcut when a teammate runs init.

2. Invite Team Members

From the dashboard: Workspace → Team → Invite (enter email). The teammate gets an email with an accept link. Pick a role when you invite or change it later:
  • Owner — full access, can delete workspace, bind/unbind repo.
  • Admin — can manage members, bind/unbind repo, change settings.
  • Member — can create decisions, claim work packages, use MCP.
Enagrams is invite-only — teammates can’t join by guessing the slug or running init in the bound repo. The invite email is the only path in. See Sharing a Workspace for the full flow the teammate sees.

3. Tell Teammates to Run enagrams login

Nothing to share manually — no slugs, no API keys, no invite codes. Once you’ve sent the dashboard invite, each teammate clones the repo and runs:
npx enagrams login
The CLI fingerprints the repo, recognizes it’s already bound to your workspace, and — because the teammate just accepted your invite — fast-paths them to a “Continue with <workspace> prompt. One keystroke and they’re in. If a teammate runs login before you’ve sent the invite, they’ll see:
This repo is exactly already bound to an Enagrams workspace:
  My Startup (my-startup)

  Ask one of its admins for an invite:
    • owner@example.com

Once you accept the invite, re-run `enagrams login`.
That’s the hint — they forward it to you, you invite them, they retry.

Per-Developer Setup

Once a teammate has accepted an invite:
npx enagrams login   # authenticate + continue with the bound workspace
npx enagrams init    # (optional) drop IDE hooks + MCP configs for this repo
init detects the already-bound workspace and skips straight to writing IDE configs for whichever of Cursor, Claude Code, and Codex it finds installed. After that:
  • IDE-specific tweaks: Cursor · Claude Code · Codex
  • enagrams status to verify the session is live.
  • enagrams watch in a spare terminal for a live team dashboard.
Each developer gets their own API key automatically, stored in ~/.config/enagrams/config.json (global, like gh or vercel) — never in the repo.
Never share API keys. Each developer needs their own — it’s how Enagrams tracks which human is behind each agent session.

Running Your First Coordinated Session

Scenario: Two developers, same codebase

Developer A starts a Cursor conversation:
“Build the user authentication flow with JWT tokens. Open a workstream for it.”
Their agent calls workstream_start to create ena/auth-jwt, begins working, and acquires symbol-level reservations on the auth files. Developer B starts a Cursor conversation soon after:
“Add user registration to the API.”
Their agent’s briefing shows:
Active workstream you can join: ena/auth-jwt ("Build JWT auth flow")
  members: Developer A
  reserved symbols:
    src/auth/login.ts::validateToken    (Developer A, 8 min)
    src/auth/middleware.ts::requireAuth (Developer A, 8 min)

Recent decisions (1):
  Chose JWT for auth (Developer A, 5 min ago)
Developer B’s agent joins the workstream with workstream_join (if registration is the same effort) or starts a new one, builds registration compatible with the JWT decision, and avoids the locked symbols.
  1. Start of day — open the Activity Feed to see active agents and workstreams.
  2. Before a task — check Work Packages for anything from recent meetings; claim what’s yours.
  3. Working — start or join a workstream. Hooks handle locking automatically.
  4. Shipping — call confirm_ready to run the test gate, then sync_commit after committing. Teammates on enagrams watch get the change automatically.
  5. After a meeting — paste the transcript at Meetings to extract decisions and generate work packages.

Dashboard Views

ViewURLPurpose
Overview/dashboardActive agents, active workstreams, recent decisions
Activity Feed/dashboard/feedReal-time event stream
Workstreams/dashboard/workstreamsActive branches, members, tasks
Decisions/dashboard/decisionsFull decision timeline with stale flags
Conventions/dashboard/conventionsTier-grouped team rules
Tasks/dashboard/tasksPer-workstream kanban
Negotiations/dashboard/negotiationsOpen and resolved turns
Work Packages/dashboard/packagesMeeting-derived task board
Team/dashboard/teamPer-person drill-down
Knowledge Graph/dashboard/graphDecisions connected by shared symbols
Meetings/dashboard/meetingsTranscript ingestion and history