Skip to content

Feature Flags

Feature flags control which system capabilities are available. All seven flags default to true. Setting a tool-gated flag to false removes the capability entirely — the tool is not registered, not visible to the LLM, and is rejected if a client calls it directly. compaction gates engine behavior rather than a tool: setting it to false disables history compaction.

Add a features object to your nimblebrain.json:

nimblebrain.json
{
"features": {
"skillManagement": true,
"toolDiscovery": true,
"catalogSearch": true,
"fileContext": true,
"userManagement": true,
"workspaceManagement": true,
"compaction": true
}
}

You only need to include flags you want to change. Omitted flags use their default (true).

Flag Default Controls Tool(s) gated
skillManagement true Create, edit, delete, and activate user skills skills__create, skills__update, skills__delete, skills__activate, skills__deactivate, skills__history, skills__restore, skills__set_status
toolDiscovery true Search installed tools by keyword nb__search (scope: "tools")
catalogSearch true The catalog scope of nb__search (not the catalog itself — manage_connectors reads it ungated) nb__search (scope: "catalog")
fileContext true File upload and context extraction File processing pipeline
userManagement true Create, update, and delete users nb__manage_users
workspaceManagement true CRUD workspaces and manage members nb__manage_workspaces
compaction true History compaction — fold the oldest turns of a long conversation into a summary at run start to bound context growth. User-authored messages (instructions, corrections) are retained verbatim across compaction, bounded. Event-sourced stores only. — (engine behavior, not a tool)

Tools not listed in the table above are never gated by feature flags. They register and stay visible regardless of feature configuration — for example nb__status, nb__search itself (only its scope-specific behavior is gated), and the read-only platform tool surfaces.

Feature flags are enforced at tool registration. A gated tool whose flag is false is excluded at startup — it never appears in tools/list for the LLM, the web shell, or external MCP clients, and a direct call to it is rejected. compaction is enforced differently: it changes engine behavior at run start rather than gating a tool.