Setup through the terminal
The wizard and the full command reference: the same as on the local page, but scriptable.
A connector on a server without graphics is the usual case, not an exception, so the command line is on an equal footing. There is no setting available only from the page and no setting available only from the terminal: both edit one file, under one check.
The first-time setup wizard
connector setup --config /etc/connector/connector.yaml --cliThe same steps as on the page, in order:
- The relay address (prefilled — Enter) and the state directory.
- Provider — type, address, token. The agent checks access right away and lists the repositories it sees.
- Choosing repositories — numbers separated by commas (
1,3) orall. - One more provider, or finish (empty input).
- The pairing code from the Buff app — you can skip it and pair later.
The wizard speaks Russian; a session looks like this (provider, base URL, access token, then the repository choice):
Провайдер (…): gitea
Base URL: https://gitea.corp.local
Токен доступа: ********
1) team/backend (private)
2) team/frontend
3) team/docs
Выберите репозитории (напр. 1,3 или all): 1,2
добавлено: gitea (2 репо)The token is saved to a file with 600 permissions in the state directory and does not reach us.
Pairing and running
connector pair --config /etc/connector/connector.yaml --code bufc_… [--label "Build server"]
connector run --config /etc/connector/connector.yaml--label — what the agent is called in the app; the host name by default.
Add --admin 127.0.0.1:8765 to have the
local page running along with the agent.
Catalogue
connector catalog --config /etc/connector/connector.yaml # what can be installed
connector catalog show github --config /etc/connector/connector.yaml # a version's access boundaries
connector install github --config /etc/connector/connector.yaml # the latest compatible one
connector install github@1.0.0 --config /etc/connector/connector.yaml # a specific versioncatalog show prints the same as the card on the page: which fields
the allowed addresses are derived from, which credentials are needed, whether the integration accepts
webhooks and what tools it has — marking which ones only read. If the catalogue is
unavailable, the command says so honestly and shows the last one it read.
install without a version installs the latest one compatible with this build of the agent, not
simply the latest: an integration that needs a newer connector will not be installed.
Connections
connector instance list --config … # what is configured
connector instance show <id|slug> --config … # one connection (secrets hidden)
connector instance set <id|slug> --config … … # create or change
connector instance secret <id|slug> --secret api --config … # a secret from standard input
connector instance enable|disable <id|slug> --config …
connector instance rm <id|slug> --config … [--dry-run]
connector instance check <id|slug> # connectivity check on the running agent
connector instance log <id|slug> # the connection's logCreating a whole connection:
connector instance set --config /etc/connector/connector.yaml \
--plugin github --version 1.0.0 \
--alias "Client GitHub" --dev-project backend \
--set base_url=https://api.github.com \
--set repos=acme/api,acme/web \
--set mention_alias=buff
# the secret — with a separate command, from standard input
connector instance secret github --secret api \
--config /etc/connector/connector.yaml < /run/secrets/github-tokenWorth knowing about these commands:
-
--set key=valueis checked against the integration’s schema. Lists are comma-separated (repos=a/b,c/d), numbers and flags are converted to their type. A key that is not in the schema, or a value that does not fit it, is an error, not a silently saved string. -
--dry-runshows what will change and writes nothing — and checks the same things a write would, including the length limit of the notes. -
Notes for the AI are set with
--ai-notes "text"or from a file with--ai-notes-file notes.md(-— from standard input). The 2048-character limit is lifted only with an explicit--ai-notes-unbounded true: the warning the page shows is not here, so you have to spell it out. A flag that was not given changes nothing —--aliasdoes not erase saved notes. -
A secret is entered from the input stream, not as an argument: an argument would end up in the shell history and in the process list. For a tracker that signs in with a pair, add
--account:connector instance secret jira --secret api --account bot@example.com \ --config /etc/connector/connector.yaml < /run/secrets/jira-tokenThe kind of access (bearer, basic or the tracker’s own header) is taken from the integration’s manifest — the command prints which one was applied. Where an integration offers several kinds (Google Drive: a service account or your own account), the choice is named with the
--kind service_account/--kind oauth2flag; the value foroauth2is the JSON of your own OAuth client{"client_id":"…","client_secret":"…"}. -
signinsigns in with your own account for credentials of theoauth2kind:connector instance signin <id|slug> --secret apiprints the sign-in address — open it in any browser — and after consent waits for the address of the page the source returned to (or the code from it). The refresh token goes into the credentials file, and from then on the connector refreshes access itself. The command talks to the running agent, likecheck. -
checkandlogtalk to the running agent on its local address (--addr,127.0.0.1:8765by default), because this is the state of a live process, not of a file. -
The reference (
<id|slug>) is either the connection’s GUID or its slug (the short name the connector derives from the name). The slug also goes into the names of the tools the model sees.
Automation
For Ansible and CI it is usually simpler to write the config directly and put secrets in files, and to use commands for installing integrations and checks:
connector install github --config /etc/connector/connector.yaml
connector instance check github --addr 127.0.0.1:8765The agent watches the config file: edits apply on the fly, no restart is needed.