Skip to Content
DocumentationOperateProfiles & providers

Profiles & providers

A profile is the recipe for a session: one provider (the model) plus the extensions that give the agent its prompt, tools, and behavior. Switching profile is how you switch between a general assistant, a coding agent, and a cheap summarizer — without changing anything else.

profile: default # the profile used when none is named profiles: default: provider: alibaba extensions: [systemPrompt, baseTools, skills, approval, compaction, memory, documents, subAgents] coder: # Codex is a complete coding agent with its own prompt, tools and skills, # so we proxy to it and add only what we need on top. provider: codex extensions: [approval, memory] reviewer: # Small and cheap: a second opinion the crew can call on. provider: reviewer-model extensions: [systemPrompt, baseTools] providers: # Derive a cheap variant of a provider you already configured. reviewer-model: baseProvider: openai model: gpt-5-mini

A profile names a provider: and its extensions:. To pin a specific model, derive a provider with baseProvider: + model: (as above) and point the profile at it.

Pick one per run with --profile:

boba --profile coder boba run --profile coder "Add a --version flag to the CLI."

Two kinds of provider

This distinction matters more than it looks:

Model providers are plain models behind a common interface — OpenAI, OpenRouter, Alibaba, Ollama, any OpenAI-compatible endpoint. Boba supplies the agent loop: the system prompt, the tools, the approval gate. Give these profiles a full extension list.

Agent providers are complete coding agents that Boba drives rather than rebuilds — claude (Claude Code) and codex. They bring their own prompt, tools, and skills. Boba proxies to them and layers on only what it adds: approvals, memory, the web UI, the crew. Give these profiles a short extension list; injecting systemPrompt and baseTools on top of one just fights it.

The setup wizard detects installed agent CLIs and configures the second kind for you, which is why it needs no API key when you already have Claude Code or Codex on your machine.

The crew (sub-agents)

With the subAgents extension, an agent can delegate to other profiles. Each sub-agent runs its own session, with its own provider and tools, and reports back. That is the “crew”: a lead agent coordinating specialists — a coder on one model, a reviewer on another — rather than one chatbot doing everything.

Because each specialist is just a profile, you choose the cost/quality tradeoff per role.

Extensions

Extensions are where behavior comes from. Common ones:

ExtensionWhat it adds
systemPromptThe base instructions
baseToolsFilesystem, shell, web search
skillsDiscovered SKILL.md capabilities
approvalThe gate over risky tool calls
compactionAuto-compacts long transcripts
memoryCross-session recall
documentsThe markdown vault the agent reads and writes
subAgentsDelegation to other profiles
browserA real browser it can drive
terminalToolsPersistent terminal sessions

Some extensions are resident: they are not attached to a profile but run for the life of the daemon, configured by their own top-level block. Telegram and the scheduler work this way.

You can drop your own extension into ~/.botbandit/extensions/ and it is loaded at startup — no rebuild. Restart the daemon to pick it up.

See the configuration reference for every provider block and option.

Last updated on