Connector
An agent in your network: a git bridge and an integration host. Tokens, keys and network access stay with you.
The connector is a small agent that you run on your own machine, in your own network. It does two things:
- git bridge — carries repositories that are not reachable from the internet over to us and brings pull requests back;
- integration host — runs plugins from our catalogue: task trackers, knowledge sources (Confluence, Notion, Google Drive, Figma, folders and network drives), the web — and your own MCP servers.
What it is
The connector’s core is only the git bridge. It is deliberately small: you can read it in full before letting it into your network, and it does not grow with every new integration. Everything else is plugins: signed bundles that the connector downloads from the catalogue, verifies by signature and runs as separate processes under separate OS users.
your network │ our side
│
your git ◀──locally──┐ │
│ │
your tracker ◀locally┤ CONNECTOR │
├── core: git bridge ─────┼──outbound──▶ Buff platform
(Jira, GitLab, …) └── plugin ──┐ │
plugin ──┴─ own uids, │
own hosts │Three properties of this picture hold everything else up:
- Outbound connections only. The connector calls out by itself; nothing connects into your
network. You do not need to open a port to the outside — not even for tracker events
(polling always works). The exceptions are
GitLab commit comments and Figma without a list of files and projects: they arrive only
by webhook, and the connector’s event receiver must be reachable by whoever sends it; the
FILE_COMMENTwebhook comes from Figma’s cloud, that is, from the internet (more). - Secrets do not cross the perimeter. The git token, the tracker token and the agent’s own key stay on your machine. The plugin does not see them either: the connector builds the outgoing request and inserts the credentials itself — how exactly.
- Boundaries are declared in advance. Where a plugin may go and which tools it gives the model is visible before installation, in the catalogue, and later — in the app.
What leaves and what does not
| Never leaves | access tokens (git, tracker), the agent’s key, the contents of your secrets, any addresses and systems that are not on the allowed list |
| Leaves on your command | the contents of the repositories you selected: the import carries them into your isolated space on our side — without that there is nothing to develop |
| Leaves when the bot is addressed | the text of the request, the ticket title and link, the name of the request’s author, the ticket key and — for a question from a pull request — the branch name |
| Leaves at the model’s request | the content the model read with the connection’s tools for a specific answer: pages, files, tickets, a pull request diff, web pages found — exactly what the tool returned; every call is recorded in the connection’s log |
| Leaves constantly | the agent’s state: version, online/offline, the list of repositories it serves, the list of connections with their tools and allowed addresses |
Everything that comes to us is then processed by the model according to the organisation’s plan: on OpenRouter plans — a third-party provider; on dedicated capacity and in a custom setup — a dedicated machine, without third-party providers. See Plans.
None of this is collected “just in case”: tracker events are read only in the selected projects and only when the bot is addressed directly, and the status report is exactly what you see in the app in the “Connectors” section.
Where to start
- Download and install the agent on a machine that has access to your git and outbound internet access.
- In the Buff app open “Connectors” → “Add connector” and get a one-time pairing code.
- Set up the agent — through the local page or the terminal: the git provider, token, repositories and the pairing code.
- Need a tracker — install the integration from the catalogue and create a connection. How it works from the team’s side — in the “Tracker integrations” section.
You can add a repository, change a token or adjust a connection later without a restart — changes apply on the fly.
Pages
| Page | About |
|---|---|
| Installation | the binary and the image, signature check, privileges, the plugin runtime |
| Local page | the six sections of the setup page: overview, connection, repositories, catalogue, integrations, your own MCP |
| Terminal | the same with commands — a full reference, no graphics |
| Catalogue and plugin installation | what is visible before installation, signature, versions, updates, revocation |
| Isolation and access boundaries | a process per connection, a separate uid, allowed addresses, credentials |
| Tools and the model | how a plugin’s tools reach the model, in which modes, and why writing ones never do |
| Tracker integrations | requests, commands, visibility scope, the pull request branch, events |
| Knowledge sources | Confluence, Notion, Google Drive, Figma and files as context for answers: read tools, questions on a page and on a mock-up, parameters instead of pictures |
| Notion | pages and databases as context; questions in comments; the research report as a child page; scope, webhook and polling |
| Google Drive | documents, spreadsheets and presentations as context; questions in comments; the report as a document; a service account or your own account |
| Files on disk | folders on a server and SMB network folders as context: Word, Excel, PowerPoint, PDF and text; read-only, no index |
| The web | searching and reading public pages within the administrator’s allow and block lists; DuckDuckGo, SearXNG or Brave |
| Jira | Data Center, Server and Cloud: versions, access, specifics |
| Custom MCP servers | an MCP server from an archive, a GitHub repository or by address: what will run, consent, only read-only tools — as you mark them |
| Config by hand (YAML) | the full reference of the settings file for Ansible and CI |
| Management and removal | connectivity check, log, updates, shutdown, revocation |
If something does not work
Buff Code, workspace and connector messages during installation, sign-in, context choice, model and tool calls: what they mean and what to do.
Tracker integrations
How the team works with the bot in its own tracker: requests, commands, visibility scope, the pull request branch, events.