Memory & documents
What your agents carry between sessions, and the work they do without you sitting there.
Memory
The memory extension gives agents durable, cross-session recall. Facts worth
keeping get written to a local store and surfaced back in later sessions, so a
crew accumulates context instead of starting cold every morning.
extensions:
memory:
provider: memory-agent # usually a small, cheap modelMemories are yours: plain local records you can read, edit, and delete, browsable
in the web UI under /memories.
The document vault
The documents extension gives agents a markdown vault — by default
~/.botbandit/docs — that they can read and write like any other file tree.
This is where plans, notes, and handoffs live.
extensions:
documents:
root: ~/.botbandit/docsDocuments are just markdown with frontmatter, so they stay useful outside Boba.
A plan tracks its deliverables as work items in a work: block, which agents
update as they go:
---
title: Ship the launch docs
type: plan
status: in_progress
tags: [docs]
work:
schema: 1
items:
- id: self-host-guide
title: Draft the self-hosting guide
status: in_progress
- id: site-nav
title: Wire it into the site nav
status: todo
dependsOn: [self-host-guide]
---
The details of each step live in the body.With the web UI self-hosted, the vault syncs to your Supabase project and these documents become a live work board, a notes app, and a backlink graph.
Scheduled work
Any document can also carry a scheduled: block, and the daemon’s scheduler
will run it on a cron expression:
---
title: Morning triage
scheduled:
enabled: true
schedule: "0 7 * * 1-5"
timezone: Europe/Berlin
profile: coder
---
Review yesterday's failed CI runs and open an issue for anything that looks real.The same document can be run once, by hand, with no scheduler involved:
boba run-task ./morning-triage.mdUnattended runs need an approval policy that terminates. There is nobody
to answer ask-human at 07:00, so give scheduled profiles an explicit
allow-list with default: deny, or ask-agent. A scheduled: block can also
carry its own approval: override for that run only. See
Approvals.
Scheduling hands an agent unattended privilege, so by default the daemon refuses to dispatch a job whose intent (schedule, profile, approval policy, working directory) is not signed by a hardware-held passkey — which an agent editing its own document cannot forge. Change the schedule and the signature is stripped, leaving the job disarmed until you re-approve it.
Account status
Long-running crews burn through subscription windows. The daemon tracks them:
boba subscriptions # windows, resets, freshness
boba subscriptions --refresh # poll every collector first