Capabilities & operations

Configuration.

For: developers and operators

Cardinal keeps the engagement-agnostic machinery and the customer-specific values strictly separate. A layered configuration lets one set of skills and role briefs serve any engagement: the base stays pure, and a per-engagement pack supplies the specifics.

Layered config Pure base + engagement pack Tool-server registry

The configuration layers

Configuration is layered so that nothing customer-specific ever leaks into the shared machinery. A purity check at bootstrap enforces exactly that separation.

LayerWhat it holds
WorkflowWhich roles exist, the model each runs, and which to spawn at startup.
Engagement packThe customer-specific values โ€” names, identifiers, channels โ€” that layer over the base.
Engagement-agnostic baseThe skills and role briefs, written once and reused; deliberately free of any customer detail.
Role overlaysPer-role, per-engagement specifics that bind to a role brief at spawn time.
Purity is enforced, not just intended. The kernel-purity scan at bootstrap fails if any customer-specific value has crept into the engagement-agnostic base. The separation is a gate, not a guideline.

Tool servers

The agents reach external systems โ€” the database, the work-item tracker, and others โ€” through tool servers declared in a registry. Each entry names what the server is, how it is reached, and how it authenticates. Engagement-specific coordinates are supplied by the pack, not hard-coded into a skill.

App settings

Engagement-level settings surfaced in the app โ€” display preferences and the like โ€” are read from the engagement configuration, so the app reflects the same source of truth the agents use rather than a separate store.

The skills this configures โ†’ ยท How it's validated at startup โ†’