Skip to main content

Working as a team

Developer, Professional and Enterprise

Prerequisite: GitHub integration setup

By connecting a canvas to a GitHub repository, your team can collaborate on UDFs through pull requests, pull the latest changes back into the canvas, and share the canvas via a permanent link tied to your org rather than an individual user.

Here's what we'll do:

  1. Save the canvas state as a checkpoint and push the UDFs to a shared GitHub repo via a PR
  2. Pull any GitHub changes back into the canvas
  3. Configure canvas access and generate a shared team link

Step 1: Create a checkpoint and open a PR

A checkpoint saves the current state of your canvas so you can push it to GitHub or restore it later.

Open your canvas and click the checkpoint icon (🕐) in the top toolbar (step 1 below). This opens the Canvas checkpoints panel. Click + Create checkpoint, give it a name, and click Create.

Once the checkpoint is saved, click Create a PR next to it. Fill in the folder name (the directory it will be pushed to in the repo), select the repository, and confirm the commit message — then click Create PR (step 2 below).

Fused opens a pull request on GitHub. Once a maintainer merges it, the UDFs are version-controlled in your team repo.

Step 2: Pull GitHub changes into the canvas

When there are newer commits on GitHub that aren't reflected in the canvas yet, the checkpoint icon shows a "Newer changes on GitHub" badge. Click it, choose See changes to review the diff, then Pull all to bring those changes into the canvas.

This is how teammates who push changes via PR — or locally via a tool like Claude Code — get their updates reflected in the canvas.

Step 3: Configure canvas access

Open the Share dialog from the canvas (workbench) to configure access permissions.

The Share dialog supports three access control options:

  • None — revokes shared access to the canvas
  • Team — accessible only to members of the team
  • Public — accessible to anyone with the link, including in incognito mode

Changing the access setting automatically creates a PR on the linked repository to change shared_token.json. The access change takes effect only after the PR is merged.

The canvas is now accessible at a permanent URL in the format:

https://fused.io/canvas/fc_<org>/<canvas_name>
note

This link is scoped to your team. Anyone outside the team — or accessing it in incognito — will see:

Error loading canvas fc_<org>/<canvas_name>: {"detail":"This canvas is not shared publicly."}

What this enables

  • Stable canvas URL — the link is tied to the org, not an individual user. It stays the same when team members rotate.
  • GitHub-based collaboration — multiple people can contribute changes through PRs. Pull updates into the canvas whenever you're ready to reflect them.
  • Works with AI coding tools — clone the repo locally, ask Claude Code to make changes, open a PR, merge it, then pull into the canvas.

Calling team UDFs

# Tracks main — always latest
my_udf = fused.load("team/my_udf")
my_udf()
Production

Pin to a specific commit to avoid breaking changes when main updates:

# Pinned to a specific commit
✅ my_udf = fused.load("https://github.com/org/repo/<COMMIT_SHA>/my_udf")

# Follows main — may break if main changes
❌ fused.load("team/my_udf")
❌ fused.load("https://github.com/org/repo/main/my_udf")

See all ways to load a UDF.

See also