Skip to main content

Workspaces

A workspace is the shared coordination context for a team working on one codebase. All agents connected to the same workspace share decisions, conventions, reservations, workstreams, tasks, and the symbol graph.

Creating a Workspace

  1. Go to enagrams.com/dashboard.
  2. Click New Workspace.
  3. Set a name and slug.

Workspace Slug

The slug is a URL-safe identifier (e.g. my-startup). It’s what you supply for ENAGRAMS_WORKSPACE in each developer’s .env. Slugs are unique across all workspaces.

Members

Roles

RolePermissions
ownerFull access, delete workspace, manage all members
adminManage members, view all data, change settings
memberCreate decisions, claim work packages, propose conventions, use MCP tools

Adding Members

POST /workspaces/:id/members
Authorization: Bearer ek_...

{ "user_id": "usr_...", "role": "member" }

Removing Members

DELETE /workspaces/:id/members/:userId
Authorization: Bearer ek_...
When a member is removed their active sessions end, reservations release, and any workstreams they were the sole owner of are marked abandoned.

API Keys

Each team member has their own API key:
  1. npx enagrams login creates one automatically and saves it to ~/.config/enagrams/config.json.
  2. Or generate one manually at Dashboard → API Keys.
API keys have the prefix ek_ and are tied to a user account. A key can access any workspace the user is a member of.

Revoking Keys

Revoke from Dashboard → API Keys → Revoke. Active sessions using the key are terminated immediately.

Workstreams

Workstreams are the primary unit of shared work within a workspace. Each one maps to a branch (ena/<slug>). See Workstreams for the full lifecycle. List active workstreams:
GET /workspaces/:id/workstreams?status=active
Authorization: Bearer ek_...
Or via MCP: workstream_list.

Reservations

View current reservations (file and symbol level):
GET /workspaces/:id/reservations
Authorization: Bearer ek_...
Reservations auto-expire after 10 minutes of inactivity and release on sessionEnd. Manual release: end the owning conversation.

Conventions

Conventions are workspace-scoped rules. must-tier conventions are enforced by the preToolUse hook. Manage them through:

Workspace Settings

SettingDescription
nameDisplay name
slugURL-safe identifier — changing requires updating every .env and MCP config
default_base_branchBranch new workstreams fork from (defaults to main)
PATCH /workspaces/:id
Authorization: Bearer ek_...

{ "name": "New Name", "default_base_branch": "develop" }