Skip to content
On this page

Connecting Sources

Sources connect a board to the code, documents, notes and URLs that describe the real system. The Sources Overview has the source types and the governing-source rules.

Two kinds of source

A board gets its sources in one of two ways.

The app's repo is automatic. Every new app gets a Code Plugin source of its own, named after the board and bound as governing in the same step. That happens however the app is made:

  • Make this an app on a node or in the board menu
  • a click or drag in the canvas Apps palette
  • an agent calling convert_node_to_app over MCP access

Then run /login in the repo. It connects the repo to that binding and writes the plugin's credentials, and the first /sync ties the binding to that repo. You never register or bind a repo in Sources.

The context around the app, you add yourself. That is what reference sources are for. Designs and ADRs in Confluence, specs in Notion, decisions in notes, vendor docs on the web and errors in Sentry all come in this way. Chat and insights read them on demand, and they never change the board. You register one in the workspace catalog, then attach it to each board that needs it.

The repo comes with the app; the context around it, you register and attach.
Watch: what comes with the app, and how to add the rest

Before you start

The steps below are for the sources you add yourself. You need the Editor role or above.

A binding is governing when it shapes the board, or reference when it is context for Chat, insights and tools. Sources Overview covers source limits and the exclusive Code Plugin slot.

Register a source

Open Sources Catalog in the workspace sidebar and choose Add Source.

  • Note — paste the markdown or text, and give it a title.
  • Web URL — paste the address, and give it a title.
  • Import from a connector — pick Confluence, Notion or Sentry, browse your connected account, and select what to add. See Sources that come from a connector.

You can also register a source while you bind it. On a board's hub, Add on the Bindings card has a Create New tab with Web URL, Note and Browse Providers.

A source in the catalog does nothing until a board binds it.

Bind it to a board

Open the board's hub and choose Add on the Bindings card. Pick the source under Pick from Catalog and choose Attach reference source. The list leaves out Code Plugin sources: a repo is bound only to the app it governs.

The card doesn't bind a governing source; that comes with the app. Until a board is an app, the card's governing half reads "No governing source."

The credentials you get once

A governing Code Plugin binding gives you no secret to copy. Run /login in the repo on each machine that needs a credential; the app hub's App agent access (changed 12 October 2026) shows the step. The plugin signs in through your browser and writes its own credentials.

A reference Code Plugin binding that already exists keeps its own credentials. We show a live secret only when it's issued; later credential views show pmap_cp_live_****. To issue another, open Binding actions → Copy credentials on its row in the Bindings card and choose Generate new secret. Each machine keeps its own credential, and existing ones keep working until you revoke them from the dialog's Connections list.

Signing In & Credentials covers the lifecycle, The Code Plugin the fields, and the Boards API the request format.

Sources that come from a connector

Connect your own Confluence or Notion account once in Settings → Connectors; an owner or admin connects Sentry for the organization. A provider you haven't connected shows a Connect pill in the Add Source menu, which opens Settings → Connectors. Each item you select in the provider's browser becomes its own source, ready to bind.

You can also skip the catalog: paste a page's link in Chat, and ProvenMap offers to add the page as a reference source. Provider Sources covers what each provider brings and who can read what you add.

When a binding breaks

The board hub shows binding problems, and each binding's pulse says when its data last arrived.

ProblemWhat to do
A connected page stopped readingYour connection to that provider lapsed or was revoked. Reconnect it in Settings → Connectors; the source and its bindings stay in place.
The plugin's credentials stopped workingThe credential was revoked, or a fresh /login on that machine replaced it. Re-run /login on that machine. For a reference binding, you can also generate a new secret and update credentials.json or your CI environment variables.
/sync refuses over the branchA binding is tied to one branch. Match the repo's config to the branch named by the binding.
A governing document source built nothingA document builds a board only when asked. In chat, ask ProvenMap to build the board from it.
Tip

If no connector reaches where a document lives, use Web URL or Note. Neither needs setup.

What's next