In the conversation
Quiet until it can help
In a shared channel Belle reads along and answers when it has something useful to add. Saying nothing is a decision it makes, the same as answering.
1a Reading along is the scene that opens this page. 1b Here, a channel where Belle speaks only when mentioned.
- Charlie
Lunch at the noodle place, 12:30?
- David
In.
- Eve
Has anyone seen the travel policy? I can't find it.
- Belle could answer this. In this channel it waits to be asked.
- Eve
@Belle where is the travel policy?
-
Belle
Handbook, section 4. I've sent you the link.
Some channels are for people talking to people. There, Belle speaks when someone calls it by name.
A mark on your message
A small mark shows that Belle has received a message, is working on it, or is done. Sometimes the mark is the whole reply.
- Alice
@Belle can you list last week's refund requests?
done - Bob
@Belle no need to chase the courier, they replied.
noted - Belle marks Bob's message and writes nothing.
- Belle
23 requests last week. The list is in this thread.
Alice's request goes from received to done. Bob's note gets a mark and no message.
A sentence, a table, a chart or a file
An answer comes in the shape that fits the question. A table sorts and filters in place, and a chart can be bars, lines or a pie.
Belle can send a file it wrote, or pass on a copy of one the conversation is allowed to read. It also reads the files and images people share with it.
Belle also greets people who join.
- Alice
@Belle how many tickets did each team close in March?
-
Belle
219 closed across five teams.
Team Closed Still open Integrations 63 12 Web 52 5 Billing 41 7 Mobile 35 9 Onboarding 28 3 - Alice sorts the table by Closed.
- Bob
Can we see that as a chart?
- Belle
Tickets closed in March
Integrations63 Web52 Billing41 Mobile35 Onboarding28 - Alice
Can I have the full list as a file?
- Belle
Here it is, one row per ticket.
tickets-march.csvCSV file, 14 KB
The same numbers as a table, as a chart, then as a file Belle wrote.
It asks, with the control that fits
When Belle needs something from you, it asks in the chat: a list to choose from, a date to pick, a field to fill, boxes to tick.
It carries on from your answer, and the answer stays in the conversation.
- Alice
@Belle book a meeting room for the client review.
- Belle
Three details and I will book it.
RoomBlue room, seats 8
DateThursday 14 March
NoteProjector needed
Answered by Alice.
- Belle
Booked: Blue room, Thursday 14 March. A projector will be set up.
A list, a date and a text field in one question. Once answered, the form stays as a record.
It works on its own time, when you asked it to
Work you would ask for in a message can run on a schedule instead: a morning digest, a weekly report, a check that something changed.
A longer task can run in the background, started with a command or by Belle itself. The conversation goes on, and Belle posts the result when the task is done. Short commands list, continue or cancel it.
A scheduled run follows the rules of the room it posts in. Nobody is there to approve anything, so Belle does not post to a wider audience.
- Tuesday, 09:00. Nobody has written anything yet.
- Belle
Yesterday in this channel:
- Decided: the release moves to Thursday.
- Decided: Eve owns the pricing page.
- Still open: who reviews the export limit?
- Bob
@Belle who raised the export limit?
- Belle
David, yesterday at 16:40.
- Alice
Only you can see this
/belle bg review this week's crashesStarted session
ses-7f3k9q2m4x. It is pending. - Bob
The release notes draft is up for review.
- Belle
@Alice 14 crash reports this week, down from 31 last week. The sync crash is gone since 2.4.1. A new crash in export shows up 6 times.
- Belle
Session
ses-7f3k9q2m4xsucceeded.In a DM, run
/bellewithsessions result ses-7f3k9q2m4xas its command text to inspect the stored result.
A morning digest the team asked for, written with the chat-digest skill. A task started with /belle bg: the channel goes on, and Belle posts when the task is done.
For the whole team
Five people should not mean five agents
When everyone invites their own assistant, a channel of five people holds ten voices, and that is the problem. With Belle, the team shares one coworker, even across several chat platforms at once, such as Slack and Discord.
The problem Everyone brings an assistant
38 messages, 5 from people
Five people and five assistants. In this exchange people wrote 5 messages and assistants wrote 33. The full transcript follows.
- Alice
When is the budget review?
- Alice's assistant
The budget review is on Thursday at 14:00.
- Bob's assistant
Your budget review is on Thursday at 14:00.
- David's assistant
Thursday, 14:00.
- Charlie's assistant
I can't open that calendar. Charlie, can you give me access?
- Eve's assistant
My invite says Thursday at 15:00. It may be out of date.
- Alice's assistant
The current invite says 14:00. It was updated on Monday.
- Eve's assistant
Thanks, I've updated my copy to 14:00.
- David's assistant
Noted.
- Bob
Can we move it to Friday?
- Bob's assistant
I can move it to Friday at 14:00. Shall I send the update?
- Alice's assistant
Alice is free on Friday at 14:00.
- David's assistant
David has a conflict on Friday from 14:00 to 15:00.
- Eve's assistant
Eve is free on Friday afternoon.
- Charlie's assistant
I still can't open the calendar, so I can't check Charlie's Friday.
- Bob's assistant
Friday at 15:00 would avoid David's conflict. Shall I propose that?
- David's assistant
Friday at 15:00 works for David.
- Alice's assistant
Noted.
- Eve's assistant
Would you like a reminder the day before?
- Charlie
Who is presenting?
- Charlie's assistant
I don't have the agenda. Charlie, can you share it?
- Alice's assistant
Here is a summary of the discussion so far: 1. The review is on Thursday at 14:00. 2. Bob asked to move it to Friday. 3. Friday at 15:00 suits everyone checked so far. 4. Nobody has confirmed the presenter.
- Bob's assistant
According to the agenda, Bob presents the first half.
- David's assistant
The agenda I have lists David for the forecast section.
- Eve's assistant
Thanks for the summary.
- Alice's assistant
You're welcome.
- David's assistant
Noted.
- David
Sorry, what did we decide?
- David's assistant
Nothing is decided yet. Friday at 15:00 is proposed.
- Alice's assistant
Here is an updated summary: 1. Thursday at 14:00 still stands. 2. Friday at 15:00 is proposed. 3. Presenters: Bob, and David for the forecast.
- Bob's assistant
I have drafted the update to Friday at 15:00. Shall I send it?
- Eve's assistant
I've set a reminder for Thursday at 13:45, in case the time stays.
- Charlie's assistant
Charlie, I still need access to the calendar.
- Bob
Which one do I ask to move it?
- Bob's assistant
I can move it. Shall I send the update?
- Alice's assistant
I can also send the update if you prefer.
- David's assistant
Noted.
- Eve's assistant
Would you like a summary of this conversation?
- 33 messages from assistants, and Bob still does not know which one to ask.
With Belle The team shares one agent
- Alice
When is the budget review?
- Belle
Thursday at 14:00.
- Bob
Good. I'll bring the slides.
- One answer, and the conversation moves on.
The same question in the same channel, at the same moment. Scroll the first room to read it all.
What sharing one Belle gives a team
- One answer to a question, from one coworker everyone knows.
- It stays quiet unless it can help.
- Requests wait their turn.
- The same rules about who can see what apply to everyone.
- Each room can be set up its own way.
Several people ask at once
Belle takes requests in the order they arrive. A card shows what it is working on, and Stop ends that work at once.
- Alice
@Belle summarise this week's customer feedback.
- BelleFinished Alice's request
- Bob
@Belle when is the next all-hands?
done - Charlie
@Belle is the budget review still on Thursday?
stopped - Belle
@Alice Three themes this week: delivery times, the new invoice layout and login problems.
- Belle
@Bob Tuesday at 10:00.
Stopped by Charlie Stop - Charlie
Never mind, I found it.
- Charlie presses Stop. The work ends at once.
Three requests arrive together. The first two are answered in order. The third is stopped by the person who asked.
It knows who is in the room
Rules for each channel and each person say what Belle may do, and where. It does not repeat what it read in one conversation to people who could not read it there.
Before it shares something with a wider audience than the conversation it came from, it asks a person.
A rule can also make an action wait for a person's approval, and say who may give it. Anyone else who clicks is told so, and the request waits.
- Alice
@Belle post these notes to the Sales channel.
- Belle
Which version should I post?
Full notesDecisions only
Alice chose Decisions only.
- Belle
Sales has 12 more readers than this conversation. Post the decisions there?
ApproveReject
Approved by Alice.
- Belle
Posted the decisions to Sales.
- Bob
@Belle the api pods are stuck. Restart them.
- Belle
Allow bash:
kubectl rollout restart deployment/apiApproveReject
Approved by David.
- Belle
Only Bob can see this
You are not permitted to answer this request.
- Belle
Restarted api. All three pods are ready.
Before posting to a wider audience, Belle asks. A rule for Ops says that only David approves actions: Bob's click is turned down, and the request waits for David.
It remembers what the team shares
Belle reads the documents and links shared in the channels your team picks, and keeps a summary of each. When a question comes up later, in any conversation, it finds the summaries that match and answers from them.
By default it reads public channels only, and never direct messages. A document from a chosen channel can come up wherever Belle answers, so pick the channels with that in mind.
- Two weeks ago, Charlie shared the Acme renewal contract in Legal, one of the channels Belle remembers.
- Bob
@Belle what is the notice period in the Acme contract?
- Belle
90 days before the renewal date, in writing. That is clause 12.2 of
acme-renewal.pdf, shared in Legal on 21 October. - Eve
@Belle and how much can they raise the price?
- Belle
At most 4% a year, under clause 7.1 of the same file.
Nobody in Sales opened the contract. Belle answers from it because Legal is one of the channels the team chose for its memory.
Under your control
Just ask. Or take the controls.
A plain sentence gets a full answer. Short commands and your harness's catalog are in the same chat, for when you want more.
A command is answered privately: only you see the reply.
/belle help- what it can do
/belle status- what it is doing now
/belle ask- a private question, answered away from the channel
/belle stop- end the work in progress
/belle queue list- which requests are waiting
- Alice
@Belle who is on call this weekend?
- Belle
David, from Friday 18:00 to Monday 09:00.
- David
Only you can see this
/belle ask training budget left?Belle has answered in your private conversation: 3,200 of the 12,000 euros are left for this year.
- Eve
Can someone book the big room for Friday?
- Nobody else saw David's question or the answer.
Alice asks in plain words. David uses a command for a private question.
One Belle, set up room by room
Your team decides how Belle behaves in each place: a default for each kind of chat, and its own instructions, skills, subagents, expert and tools for any one conversation. Skills, subagents and experts are the harness's own, so that list depends on the harness you run.
11a By kind of chat
- Alice
Where is the expenses template?
- Belle
Finance drive, Templates folder.
- Bob
Does anyone know where the expenses template is?
- Belle
Finance drive, Templates folder.
- Charlie
Does anyone know where the expenses template is?
- Nobody mentioned Belle, so it stays quiet.
One question in three places, as this team set them up. In a direct message Belle always answers. In public channels it reads along and speaks when it can help. In private channels it waits for a mention.
The rules behind these rooms
scopes:
# public channels: read along, reply only when useful
- match: {channel: slack, chat_type: channel}
delivery: {mode: [all], reply: optional}
# private channels: answer a mention
- match: {channel: slack, chat_type: group}
delivery: {mode: [mention]}
# direct messages need no rule: Belle always answers there11b By conversation
The same request in four channels. Each channel has one rule of its own, shown under it.
- Charlie
@Belle run the March expenses report.
- Belle
31,870 euros in March, 4% under budget.
Its own instructions: one sentence, the total first.
- match: {channel: slack, chat: "C000000AAAA"}
delivery:
prompt_append: "One sentence. The total first."- Eve
@Belle run the March expenses report.
- Belle
I can't run commands in this channel. The February report is in the Finance drive, Reports folder.
Commands are blocked here, and Belle says so.
- match: {channel: slack, chat: "C000000BBBB"}
permissions:
tools: {bash: deny}- Alice
@Belle run the March expenses report.
- Belle
March expenses, from the ledger.
Category Euros Travel 18,420 Software 9,150 Events 4,300 Total 31,870 Source: ledger, March sheet.
Always loads the report skill. The answer comes in the skill's layout.
- match: {channel: slack, chat: "C000000CCCC"}
agent:
skills: {required: [expense-report]}- David
@Belle run the March expenses report.
- Belle
Commands need approval in this channel. Run the report?
ApproveReject
- Bob
Only Bob can see this
Bob presses Approve. Belle: You are not permitted to answer this request.
- Belle
Approved by Alice. March expenses come to 31,870 euros.
Asks before running a command. Only Alice may approve.
- match: {channel: slack, chat: "C000000DDDD"}
permissions:
tools: {bash: ask}
clicks:
approve: {user: ["U000000AAAA"]}One request, four outcomes: one sentence, a refusal, a formatted report, and a question that only Alice may answer. The skill is the harness's own, so its name depends on the harness you run.
A rule can also pin a model, attach a subagent or an expert, and start a turn on a pin or a new member. Rules for instructions and triggers can apply to one person or one role.
Reach into your harness from the chat
Skills, subagents, experts and models are the harness's own, so what is there depends on the harness you run. Belle brings them into the chat, under the team's rules.
- David
Only you can see this
/belle skills use pr-tracker this weekBelle, with the skill loaded for this one request: 3 pull requests changed since the last report. 2 are merged and 1 is waiting for review.
A skill called by name, for one request.
See more controls: subagents, experts and models
- Alice
@Belle compare the three vendor quotes and check each contract's notice period.
- Belle
Finished
Subagent
exploredoneSubagent
generaldone - Bob
@Belle when does the current contract end?
working - Belle
@Alice Quote B is the lowest. Its contract also has the longest notice period, 90 days.
- Charlie
Only you can see this
/belle experts listInstalled:
research-expert. A rule for this conversation selectsresearch-expert.
- Eve
Only you can see this
/belle models listModels:
fast,careful./belle models use carefulNew requests in this conversation use
careful. A rule set for the conversation takes priority.
Watch subagents work, with Stop in reach. See which expert a conversation uses. Choose the model for a conversation.
Docs
- Under the hoodHow Belle is put together: the platforms, the conversation host, the harness and the models, and what Belle hands the harness.
- Feature matrixWhat Belle can do on each chat platform and with each harness.
- Terminal User InterfaceA light terminal app for admins: what Belle is doing, and the controls to step in.
Docs under construction
Under the hood
How Belle is put together, part by part.
The engine bay
Belle in layers: platform events pass through the coordinator and harness. Replies and actions return through the same layers.
Platforms
Where the team talks. One Belle serves several at once.
Belle's coordinator
Routes events, applies policy, schedules work, and directs the harness.
The coupling
What Belle hands the harness.
- 1Tool server Belle's tools, for the harness
- 2Skills chosen room by room
- 3Second Brain what the team shared
- 4One YAML file everything Belle owns
The harness
Runs the model and keeps the sessions. A Belle runs one at a time.
The models
Chat models in the harness, task models in Belle. Yours, from your providers or self-hosted.
Terminal User Interface
A light terminal app for admins, not for chat: see what Belle is doing, and step in when needed.
Feature matrix
Belle lives in a chat platform, the app where your team talks, such as Slack. Behind it runs a harness, the engine that drives the AI model and its tools. What Belle can do depends on both. Opt-in means an administrator turns the feature on.
Chat platforms
| Feature | Slack | Mattermost (experimental) | Matrix (experimental) | Discord (experimental) |
|---|---|---|---|---|
| Talking to Belle | ||||
| Direct messages | Yes | Yes | Yes | Yes |
| Mentions | Yes | Yes | Yes | Yes |
| Replies in its threads | Yes | Yes | Yes | Yes |
| Joins in without a mention | Opt-in | Opt-in | Opt-in | Opt-in |
| Reply shows as it is written | Opt-in | Opt-in | Opt-in | Opt-in |
| Shows that it is working | Yes | Yes | Yes | Yes |
| Progress card | Yes | Yes | Yes | Yes |
| Emoji marks on messages | Yes | Yes | Yes | Yes |
| Replies only you can see | Yes | Yes | No | To a command or a click |
| Commands | Yes | Yes | Yes | Yes |
| Questions and approvals | ||||
| Asks you a question | Buttons and text | Buttons | Poll | Buttons and text |
| Asks you to approve an action | Buttons | Buttons | Poll | Buttons |
| Stopping | ||||
| Stop Belle mid-answer | Stop button | Stop button | Stop reaction | Stop button |
| Files | ||||
| Reads files you share | Yes | Yes | Yes | Yes |
| Sends you files | Opt-in | Yes | Yes | Yes |
| Tools | ||||
| Reads the conversation history | Yes | Yes | Yes | Yes |
| Searches messages | Opt-in | Yes | Yes | Yes |
| Pins messages | Yes | Yes | Yes | Yes |
| Second Brain | Yes | Yes | Yes | Opt-in |
| Extras | ||||
| Encrypted rooms | No | No | Yes | No |
| Several accounts or workspaces | Yes | Yes | Yes | Yes |
| Home tab | Yes | No | No | No |
| Canvases, lists and bookmarks | Yes | No | No | No |
| Charts in replies | Yes | No | No | No |
On Matrix, commands start with !belle. On Mattermost and Matrix, Belle asks only questions with set choices, and search skips encrypted rooms and channels Belle is not in. On Discord, joining in without a mention and search need Discord's Message Content intent, and Second Brain reads only the channels you name.
Harnesses
| Feature | JiuwenSwarm | OpenCode v2 (experimental) | Docker Agent (experimental) | ACP (experimental) |
|---|---|---|---|---|
| Chat platforms | ||||
| Works with | Slack, Mattermost, Matrix | Slack, Mattermost, Matrix, Discord | Slack, Mattermost, Matrix, Discord | Slack, Mattermost, Matrix, Discord |
| Questions and approvals | ||||
| Asks you a question | Yes | Yes | No | No |
| Asks you to approve an action | Yes | Yes | Yes | Harness actions |
| Stopping | ||||
| Stop Belle mid-answer | Yes | Yes | Yes | Yes |
| Add a message to a running answer | Slack only | No | Yes | No |
| Tools | ||||
| Choose the AI model | Yes | Yes | Yes | No |
| Limit tools per conversation | No | Yes | Yes | No |
| Limit skills per conversation | Yes | Yes | Partial | No |
| Helper agents | Yes | No | Partial | No |
| Expert agents | Yes | No | Yes | No |
| Extras | ||||
| Scheduled jobs | Slack only | Yes | Yes | Not tested |
| Second Brain | Yes | Yes | Yes | Not tested |
Partial: Belle blocks what is not allowed, but the AI still sees it listed. On JiuwenSwarm, Second Brain does not learn from Mattermost. ACP drives any harness that speaks ACP v1, as a trial: what it gives depends on that harness, and Belle cannot narrow its tools, skills or model per conversation. Harness actions: Belle asks you before the harness runs one of its own actions.