Docs navigation
Command Reference

brainbase integrations

Manage an agent's Pipedream apps — the same list the Integrations section of the agent's Tools page shows in the web app. Find an app, install it, connect the account it acts as, and decide which of its actions the agent may run on its own. Every subcommand acts on the agent linked in this folder unless --agent <id> names another, and takes --json. integration is an alias for integrations.

bash
brainbase integrations search gmail
brainbase integrations add gmail
brainbase integrations actions gmail
brainbase integrations deny gmail.send_email
brainbase integrations list
Needs a login session
These commands call the web app, which holds the Pipedream credentials, and it accepts only a brainbase login session. With BRAINBASE_TOKEN set they refuse and tell you to unset it. BRAINBASE_WEB_URL picks the web app they use. See Authentication.
Kafka agents only, for now
Only Kafka agents can use integrations today. On any other agent, list says so above its results, and --json carries permissions_available: false.

brainbase integrations list

The apps on the agent, the accounts each is connected with, and the app-level permission. An app whose account needs reconnecting is marked !; an app with no rule of its own shows the agent's default effect, marked (default).

bash
brainbase integrations list
brainbase integrations list --agent <agent-id> --json

--json prints { agent_id, integrations[], default_effect, permissions_available }. Each entry has app, name, needs_account, accounts[] (id, name, healthy) and effect — the app's own rule, or null when it follows the default.

Find apps in the Pipedream catalog. Everything after search is the query. The catalog is not per agent, so this needs no linked folder. --json prints { apps[] }.

bash
brainbase integrations search google sheets

brainbase integrations actions <app>

An app's actions and the effect each one gets: its own rule, else the app's rule, else the agent's default. The column beside each effect says which, (app) or (default). Use the action keys shown here with allow, ask and deny.

--json prints { app, default_effect, app_effect, actions[] }, each action with key, name, description, effect and source (action, app or default).

brainbase integrations add <app>

Install an app on the agent. An app that needs no account is added straight away, and --json prints { app, name, needs_account: false, added: true }. An app that needs an account runs connect instead, with the same flags.

brainbase integrations connect <app>

Connect an account for an app. The command prints a link to Pipedream's Connect page for that app, opens it in your browser, and waits until a new account for the app appears on the agent. An app that needs no account is refused with a pointer to add.

bash
brainbase integrations connect slack
brainbase integrations connect slack --no-open
brainbase integrations connect slack --no-wait
brainbase integrations connect slack --json
FlagDescription
--no-openPrint the link without opening a browser. Implied when there is no terminal.
--no-waitPrint the link and exit 0. Check later with integrations list.
--jsonPrint { app, url, expires_at } and exit 0 without opening a browser or waiting.
--agent <id>Act on this agent instead of the one linked in this folder.
Treat the link as a credential
Anyone who opens it can connect an account to this agent until it expires, so do not paste it anywhere public.

The wait ends when the account appears (exit 0), when the link expires (exit 1), or when Brainbase stops answering for five polls in a row (exit 1). Ctrl-C stops waiting and exits 130; the link keeps working, and finishing in the browser still connects the account.

brainbase integrations disconnect <app>

Delete the app's connected account from the agent. Everyone using the agent loses it. The command asks first; --yes skips the question.

bash
brainbase integrations disconnect gmail
brainbase integrations disconnect gmail --account <account-id> --yes
brainbase integrations disconnect gmail --yes --json
FlagDescription
--account <id>Which account to remove, when the app has more than one. Without it, an app with several accounts is refused with the list of their ids.
--yes, -yDisconnect without the prompt. Required with no terminal. See destructive commands.
--jsonPrint { app, account_id, disconnected } and nothing else. Requires --yes, because --json never prompts.

brainbase integrations remove <app>

Uninstall an app that needs no account. For an app connected with an account, use disconnect. --json prints { app, removed: true }.

brainbase integrations allow|ask|deny <app>[.<action>]

Set the permission for an app or for one of its actions. allow lets the agent run it, ask makes it ask first, and deny blocks it. A bare app name sets the rule for every action of that app without a rule of its own; <app>.<action> sets one action's rule.

bash
brainbase integrations ask gmail
brainbase integrations allow gmail.list_messages
brainbase integrations deny gmail.send_email

Names are normalized the way the web app normalizes them — lowercased, with anything other than letters, digits, - and * turned into _ — so a rule set here is the same rule the Tools page shows. The app-level rule is stored as <app>.*. --json prints { capability_pattern, effect }.

Output and exit codes

Under --json every outcome is JSON on stdout, failures included as {"error": "…"}. Without it, failures are a line on stderr. Exit codes are 0 on success, 1 on any failure, and 130 for an interrupted connect. brainbase integrations --help prints the usage and exits 0.