EdsgerEdsger Docs
Teams

Teams

Collaborate with your team using role-based access control, invitations, and shared products.

Teams

Teams enable multi-person collaboration on Edsger products. Instead of individual ownership, teams provide shared access with role-based permissions, email-based invitations, and a centralized view of team products.

Why Teams?

Solo projects can use personal products, but real software development is a team effort. Teams provide:

  • Shared access: All team members can view and contribute to team products
  • Role-based permissions: Control who can manage members, create products, and make administrative changes
  • Invitation workflow: Add new members by email with a secure acceptance flow
  • Centralized dashboard: See all team products in one place
  • Approval integration: Team members can be assigned as approvers for verification gates

Creating a Team

  1. Navigate to Teams in the sidebar
  2. Click Create Team
  3. Fill in:
    • Name: Your team name (required, max 100 characters)
    • Description: What the team works on (optional, max 500 characters)
  4. Click Create

You automatically become the team Owner with full administrative access.

Team Roles

RoleManage MembersManage ProductsCreate ProductsDelete TeamInvite Members
OwnerYesYesYesYesYes
AdminYesYesYesNoYes
MemberNoNoYesNoYes
ViewerNoNoNoNoYes

Key constraints:

  • Every team has exactly one Owner (the creator)
  • The Owner's role cannot be changed or removed by anyone
  • Only Owners and Admins can change member roles or remove members
  • All active members can send invitations

Inviting Members

Sending Invitations

  1. Navigate to your team → Invitations tab
  2. Click Invite Member
  3. Enter the email address and select a role (Admin, Member, or Viewer)
  4. Click Send Invitation

An HTML email is sent with:

  • Your team name and description
  • The invited role
  • A secure invitation link (https://edsger.ai/invite/<token>)
  • 7-day expiry date

Invitation Rules

  • If the invitee already has an Edsger account and is already a team member, the invitation is rejected
  • If a pending (non-expired) invitation exists for that email, it is resent (no duplicate created)
  • If a previous invitation expired, the old one is deleted and a new one is created
  • Invitations expire after 7 days

Accepting Invitations

  1. The invitee receives the email and clicks the invitation link
  2. They see the team information (name, description, member count)
  3. If not signed in, they sign in with GitHub
  4. Their email must match the invitation email
  5. On acceptance, they become an active team member with the assigned role

Managing Invitations

Owners and Admins can:

  • Resend: Click the Resend button on a pending invitation
  • Delete: Remove a pending invitation before it's accepted

Products and Teams

Associating Products

Each product can belong to one team (team_id on the product). When a product belongs to a team:

  • All active team members can access the product
  • Product visibility follows team membership
  • The product appears on the team's Products tab

Personal products (no team_id) are only accessible to their creator.

Creating Team Products

Team members with the Member role or higher can create products associated with the team.

Team Dashboard

The team detail page at /teams/<id> has three tabs:

Products Tab

Grid of all products belonging to the team. Click any card to navigate to the product.

Members Tab

Table of active team members showing:

  • Name and email with avatar
  • Join date
  • Current role
  • Actions (change role, remove) — visible only to Owners and Admins

Invitations Tab

List of pending invitations with:

  • Invited email and assigned role
  • Invitation date
  • Resend and Delete buttons — visible only to Owners and Admins

Audit Trail

All team actions are logged to team_audit_logs:

  • Team created
  • Member invited
  • Invitation resent / email sent
  • Member joined
  • Member role updated
  • Member removed

Each log entry records the actor, action, and relevant details (JSON metadata).

Best Practices

  • Use teams for shared products: Even small teams benefit from structured access control
  • Keep Admins minimal: 1-2 Admins plus the Owner is usually sufficient
  • Use Viewer role for stakeholders: Give read-only access to executives or external stakeholders who need visibility but shouldn't make changes
  • Set up approvals with team members: Assign team members as phase approvers so the right people review AI work