- Different teams need agents tuned to their own domain (e.g., a Sales Assistant and a Marketing Analyst).
- You want specialized agents with distinct instructions or tool access in the same deployment.
- You need to isolate context (rules, certified queries, memories) between user groups.
agents/config.yml is the source of truth for spaces and agents: declaring them there and reconciling is the only supported way to create either. Agents can’t be created in the UI, and their settings are read-only there. Cube links every record it creates to the entry it came from, and matches them by that entry’s name.Architecture
A multi-agent setup introduces one new concept on top of the single-agent model: spaces.- A space belongs to the account and is used by one or more deployments — see Space scope.
- A space is an isolated context. It owns its rules, certified queries, and memories — they are not shared across spaces.
- Each agent belongs to exactly one space and inherits everything that space owns. Multiple agents can live in the same space and share the same rules, certified queries, and memories.
auto space that holds all rules, certified queries, and memories — you don’t need to think about it. In a multi-agent setup, you define spaces explicitly and attach rules and certified queries to specific spaces.
What changes from the single-agent setup
Theagents/ file structure is the same. What’s different is how agents/config.yml is shaped:
- Agents are defined as an array. Each agent gets a unique
nameand an optionaldescription, in addition to the standard agent properties (llm,runtime,accessible_views,memory_mode, etc.). - Spaces are introduced. A
spacesarray defines the contexts agents operate in. Each space gets a uniquename. - Rules and certified queries attach to spaces. Use the
spaceproperty in the frontmatter of each rule or certified query Markdown file to attach it to a specific space.
Agents
Replace the flat root-level agent properties with anagents array:
Spaces
A space is the context an agent operates in. Spaces own the rules, certified queries, and memories that the agents inside them share. Define spaces alongside agents:
Each agent must reference exactly one space via its
space property. Multiple agents can share the same space and inherit its rules, certified queries, and memories.
Reconciliation
A space or agent declared inagents/config.yml needs a matching record in Cube before users can chat with it. Cube creates those records from your config — that step is reconciliation:
1
Declare the space and the agent in YAML
Add the
spaces: and agents: entries to agents/config.yml. In dev mode the pending list reflects your branch, so you can reconcile before merging.2
Open the pending configurations
Cube compares the config with the records already available to that deployment, matching each entry by
name. Entries with no record yet are listed under Pending Configurations on the Agents page and on Agents → Spaces, once you pick the deployment. The Semantic Model IDE also shows a Reconcile agent configs button with the pending count that links there.3
Create them
Choose the space scope and press Create All. Spaces are created first, then each agent is linked to the space its
space property names.name to the config, and on each deployment you reconcile for the first time — an agent belongs to one deployment, as does a space created per deployment, while a global space counts as created everywhere. Agent behavior — llm, description, accessible_views, memory_mode, rules, certified queries — is read from the agents/ directory of the deployment’s data model and takes effect without reconciling. The implicit auto space and agent of the single-agent setup are never listed as pending.
An agent’s space is the exception: the link is made when the agent is created, so changing it in YAML doesn’t move an existing agent. The agent’s page flags the mismatch between the space its config names and the space it is linked to. If the newly named space has no record yet, it appears under Pending Configurations, and Create All creates it and moves the agent onto it in the same action. If that space is already available to the deployment, nothing about the agent is pending and Create All won’t move it — delete the agent so its config reads as pending again, then Create All recreates it in the space the config names. The recreated agent is a new agent, so chats from before the delete don’t carry over to it.
Space scope
Spaces live at the account level, so one space can be used by agents in more than one deployment. When a space is created, you choose its scope:- Global — one space that agents in every deployment can use.
- Per deployment — the space is available to a single deployment only.
Product (production) and Product (staging). Only the displayed name changes — the space stays linked to the spaces: entry it was created from, so the YAML entry keeps matching.
Choose per-deployment scope when the same spaces: entry is declared in several deployments — typically development, staging, and production fed from branches of one data model — and you don’t want them sharing what the space stores.
Spaces created before this option existed have no scope stored. Cube infers the deployment they belong to from the agents linked to them, and the Spaces list shows them as Not scoped. Set the scope explicitly on the space page to make it definite.
Scope affects storage, not configuration
Scope never changes where configuration comes from. Agents always belong to a single deployment, and thespaces: and agents: entries, rules, and certified queries that shape an agent are read from the agents/ directory of the data model of that deployment, on that deployment’s branch. A global space does not merge the configuration of the deployments that use it.
What a global space shares is storage: the space itself and the data held against it — memories in particular. Two deployments using the same global space read and write the same memories, while each of them still applies its own agents/ configuration.
Attaching rules and certified queries to a space
In the single-agent setup, rules and certified queries belong to the implicitauto space. In a multi-agent setup, you must attach each rule and certified query to a specific space using the space property in the Markdown frontmatter:
agents/rules/<space-name>/ or agents/certified_queries/<space-name>/ are attached to that space automatically — no space frontmatter required.