Filing what you already have
base sync walks the workspace, matches files against the sync.include and sync.exclude globs in base.toml, and extracts frontmatter and body content into the graph as-is. No language model is involved. It is bookkeeping: your documents become nodes you can search.
The defaults are **/*.md and **/paul.json, with node_modules/, target/, .git/ and .base/ excluded.
The gotcha. --incremental only re-extracts what changed since the last run. On a large workspace it is the difference between a habit and a chore, and there is no reason not to use it once the first full sync is done.
Frontmatter that extracts well
Give each file YAML frontmatter withtype, status, tags and relatedTo:
relatedTo in particular becomes edges, which is what lets a search for one thing surface the document about the thing next to it.
The gotcha. Files without frontmatter still sync. They just extract badly and connect to nothing, so they only come back on a literal text match.
Next rung. You do not have to remember the shape. When you write or edit a .md file inside a registered workspace, base injects the contract into that turn, so the agent writing the file is told what good frontmatter looks like as it writes it.
Deriving relationships instead of filing documents
base sync files what your documents say; graph extract works out what they are about.
The gotcha. This is the prerequisite for good base graph query answers. Querying a graph that has only ever been synced gives you documents; querying one that has been extracted gives you the connections between them.
Next rung. --model takes an alias such as haiku, sonnet or opus. A large corpus on the wrong model is the difference between a coffee break and an afternoon.
Beyond markdown
Markdown only, by default, with no extra dependencies to install.claude binary that is already there. Audio and video go through Whisper, whose dependencies install once with a user-level pip install the first time something needs them. Nothing asks for sudo.
Getting data in from somewhere else
There is no native connector to a CRM, a database or an API. The path in is the same for all of them:- Export or generate markdown from whatever tooling already talks to that system.
- Write it into a docs folder inside a registered workspace, with frontmatter.
base syncto file it, orbase graph extract --target docs/to derive the relationships.
base recall and base graph query reach it like anything else.
The gotcha. The live pull happens outside base. That is a real boundary, not an oversight: base takes over once the data is on disk, and stays out of the business of holding credentials for systems it does not own.
Next
Querying the graph
Asking the graph an open question, and walking it by hand.
Graph and memory reference
Every
base sync and base graph flag.