Configuration¶
One file configures a brain: client.config.json at the repository root. It's
validated against schemas/client.config.schema.json on every make verify,
so a typo fails the check instead of reaching readers.
Identity¶
{
"client": {
"name": "Acme Handbook",
"shortName": "ACME",
"slug": "acme-handbook",
"engagement": "Team handbook"
}
}
nameis shown to readers.shortNameis used where space is tight.slugnames the brain in URLs and tooling. The Worker name inwrangler.tomlusually follows it, as<slug>-portal.
Branding¶
Everything visual lives under branding:
{
"branding": {
"portalTitle": "Acme Handbook",
"owner": {
"name": "Acme",
"mark": "/assets/brand/acme-light.svg",
"markDark": "/assets/brand/acme-dark.svg"
},
"heroMark": "/assets/brand/acme-light.svg",
"heroMarkDark": "/assets/brand/acme-dark.svg",
"heroMarkWidth": 96,
"colors": {
"primary": "#3B6FD4",
"link": "#4A86E8",
"accent": "#E0A030",
"bg": "#0F1117",
"text": "#E6E8EE"
},
"fonts": {
"heading": "'Fraunces', Georgia, serif",
"body": "'Inter', system-ui, sans-serif",
"mono": "'JetBrains Mono', monospace"
},
"greeting": "Ask about anything in the handbook.",
"inputPlaceholder": "Ask the handbook…"
}
}
owneris the party running the brain, shown in the topbar and page footers. Give it anameand optionalmark/markDarkartwork. With no mark, the name is shown as a text wordmark. The default is the placeholderACME; set"owner": ""to drop the owner brand entirely.heroMarkandheroMarkDarkset the home page artwork for light and dark themes.colorsandfontsoverride the default Mimwell palette and type. The color keys areprimary,link,accent,bg,bgDeep,surface,border,borderLight,text,textMutedandtextFaint.greetingandinputPlaceholderset the chat agent's opening text.
Put your artwork under assets/brand/. Mimwell's own marks live there too;
point the fields above at your files to replace them.
Theme¶
light or dark. Readers can switch, and their choice is remembered.
Portal¶
templatepicks the home page for the brain's purpose:auto,engagement,company,topic,personal,wiki,catalog,federationorconsole.view.defaultiseasyoradvanced. See Easy and Advanced views.
Profile¶
The profile decides which record kinds the brain composes. The available
overlays are the files in profiles/. Add sensemaking to turn on the
sensemaking workbench.
Knowledge sources¶
sources lists the folders the build reads documents from.
Assistant¶
{
"assistant": {
"model": "claude-sonnet-4-6",
"maxAgentTurns": 8,
"identity": "Answer questions using the current portal knowledge and cite the available sources.",
"audience": "The people authorized to use this brain."
}
}
The agent needs an ANTHROPIC_API_KEY secret on the Worker. See
Deploying.
Access¶
Access control is optional and off by default. It needs the portal served behind Cloudflare Access, which authenticates readers and tells the Worker who they are.
{
"access": {
"owners": ["[email protected]"],
"restricted": [
"knowledge/docs/finance/",
{ "path": "knowledge/docs/hr/**", "owners": ["[email protected]"] }
]
}
}
ownerscan read everything. Use full email addresses.restrictedlists path globs only owners may read. The object form also grants that entry to the extraownersit names. A rule for a folder covers everything beneath it;*stays within one path segment and**crosses segments.- Rules only narrow. A reader must be allowed by every rule that matches a path.
- The rules are enforced on static files, search results, the graph, the
agent's answers and the served config. The
accessblock itself is never sent to a browser. - It fails closed. If the block can't be parsed, everything is restricted and nobody is an owner.