Skip to content

Private Model Collaboration

Bridge Town supports private, invitation-only model collaboration. Multiple analysts in the same workspace can share a model, work on separate scenario branches, review each other’s changes through pull requests, and merge approved work into the main model.

This page explains how collaboration works and how it differs from the public publish/fork path.

Private collaboration vs. public templates

Section titled “Private collaboration vs. public templates”

Bridge Town has two distinct ways to share model work.

Private collaborationPublic templates
AudienceNamed individuals, invited by emailAll workspace members
Access controlPer-user role on the modelNo role — anyone can clone
Entry pointinvite_model_collaboratorcreate_model_from_template
ResultShared model with live editsIndependent copy with provenance link
Typical useFP&A team co-owns a budget modelFinance shares a deal template for others to adapt

Private collaboration is for teams that need ongoing joint access to the same model. Public templates are for one-time reuse — the new model is independent and not linked to the original after cloning.

Every collaborator on a model has one of three roles.

RolePermissions
OwnerFull control: manage collaborators, create and delete branches, merge pull requests, and manage template governance through the app/API
EditorRead and write: create branches, create models, open pull requests, submit reviews
ViewerRead only: view models, branches, pull requests, and history

The model creator is automatically the first Owner. There must always be at least one active Owner — the last-owner guard prevents removing or demoting the sole owner.

When you invite a collaborator, Bridge Town creates one of two grant types depending on whether the invitee is already a workspace member.

The invitee’s email matches an existing workspace account. Access is granted immediately — no waiting, no invitation email required. The new collaborator can begin working right away. An in-app notification appears in their /dashboard page so they can open the model directly (the legacy /feed route redirects there).

The invitee’s email is not in the workspace. Bridge Town creates:

  1. A pending model grant — records the intended role for this model.
  2. A pending workspace invitation — invites the person to join the workspace.

Both grants are held in a pending state. When the invitee accepts the workspace invitation and completes sign-up, both grants are activated in a single transaction: the workspace membership becomes active, and all pending model grants for that email are resolved to active grants in one step.

If the invitee’s email matches an existing Bridge Town account (even one from a different workspace), an in-app notification is also created so it appears in their /dashboard page. The notification includes a link to accept the workspace invitation.

Until the invitee signs up, they appear in list_model_collaborators with pending: true.

Use cancel_model_invite with the invite_id (the grant_id returned by invite_model_collaborator) to cancel a pending invite before the invitee signs up. This removes the pending model grant. The workspace invitation is left in place — other models in the workspace may have also sent invites to the same email.

Calling invite_model_collaborator twice with the same pending email is safe. If a pending model grant already exists for that email on the same model, the existing grant is returned and no duplicate is created.

The MCP tool response reports this as workspace_invite: "reused". The REST API uses the same values under the field name workspace_invite_outcome.

All model grants are scoped to a single workspace (tenant). A user who is an Owner on model A in workspace X has no visibility into workspace Y — even if they have an account there. This is enforced at the database layer via row-level security.

Local Git clone and direct repository access are not supported in this release.

Collaboration in Bridge Town happens through the MCP tools and the web UI. There is no public Git remote, no SSH access, and no personal access token flow for local git clone. Analysts access model code and history through:

  • list_versions and diff for version history
  • read_file to inspect model source
  • create_branch and merge_branch for scenario management
  • The pull request workflow for code review

Separate power-user Git tooling is tracked as a future phase and is explicitly out of scope here.