Connect a source

A source is somewhere your team already writes. Mari reads it, it does not ask anyone to move.

Add one

Go to Sources and pick a connector. Each asks for the least it can: usually a token and a scope, such as which repositories, spaces, or channels to track.

Tracking is explicit. Connecting Slack does not read every channel; you choose which ones. The same is true of repositories, spaces, and boards.

A provider can be connected more than once. Two Confluence sites or two Slack workspaces are two sources, each with its own credential and scope. The catalog lists what is already connected by name and offers Add another, and the optional Name field at connect time keeps siblings easy to tell apart. Connecting something that is already connected does not fail into a dead end: Mari names the source in the way and offers to open it for editing.

See the connector reference for the full list and what each one reads.

Change or remove one

Each connector card on Sources carries its own controls.

When a sync fails, the card shows the reason the connector reported.

What happens on a sync

  1. Fetch the tracked refs.
  2. Chunk each document.
  3. Hash each chunk and compare it against what is stored.
  4. Embed only the chunks whose hash changed.

Step four is why a re-sync of an unchanged repository takes seconds. Content that has not moved is never re-embedded.

Syncs are resumable. Cursors survive a restart, and losing one is safe: the sync falls back to a full tree diff by content hash and re-embeds nothing that has not actually changed.

Keeping it fresh

GitHub sends webhooks, so pushes re-sync immediately. Everything else runs on a schedule you set per source on the Sources page, rather than a setting buried in an environment variable.

Sources shows each connection's last delivery and current sync state.

GitHub reads more than files

The GitHub connector ingests commit messages, pull request descriptions, issues, and comments as documents in their own right. Most of the reasoning behind a change lives in those, not in the files.