Onboarding
Getting Started
From zero to your first agent interface in three steps. Then six composable recipes for the patterns you actually need.
Installation
Install
Nodus is invite-only — built for teams shipping AI-native products.
# Coming soon — not yet published to npmImport tokens
Load the Bauhaus token layer into your app root.
// app/layout.tsx
import "@nodus/ui/tokens.css";Use a component
Every component is a named export. No default exports, no barrels.
import { AgencyIndicator } from "@nodus/patterns";
<AgencyIndicator
level={2}
label="Recommendation"
interactive
showScale
/>Theming
Three-layer token architecture
Tokens cascade from raw primitives to semantic meanings to component overrides. Override any layer without breaking the chain.
Primitives
--bh-*Raw color values, type scales, spacing units. The atoms.
--bh-red--bh-blue--bh-yellow--bh-black--bh-gray-3Semantic
--ds-*Meaning-mapped tokens. Agency is always red. Temporal is always blue.
--ds-color-agency--ds-color-temporal--ds-surface-overlay--ds-text-mutedComponent
--bh-node-*Scoped overrides for specific component families.
--bh-node-bg--bh-node-border--bh-input-border-focus--bh-outcome-positiveFull token reference → Foundation / Tokens
Tooling
Component Registry API
Every component is catalogued in a machine-readable JSON registry. Use it for CLI tools, IDE extensions, documentation generators, or custom scaffolding.
# Fetch the full registry
curl https://design.dana.xyz/registry.json
# Schema validation
curl https://design.dana.xyz/registry-schema.json// Each component entry includes:
{
"name": "AgencyIndicator",
"slug": "agency-indicator",
"category": "pattern",
"subcategory": "agency-control",
"status": "stable",
"tokens": ["semantic", "type", "motion", "border"],
"variants": ["inline", "bar", "badge"],
"sizes": ["sm", "md", "lg"],
"principles": [1, 5, 6],
"related": ["AgencyStack", "PermissionMatrix"],
"source": "components/patterns/AgencyIndicator.tsx",
"props": [...]
}233 Components
73 UI primitives + 41 AI-native patterns + 111 finance components, fully typed and documented.
JSON Schema
Validate registry entries with the published JSON Schema 2020-12 spec.
Build-time Generated
Registry JSON is regenerated on every build from the TypeScript source of truth.
Storybook
Interactive stories for all 233 components — live props, dark/light themes, accessibility audit, and auto-generated docs. Every component ships with a Default and Playground story. Coming soon as an internal hosted instance.
Recipes
Six composable patterns
Each recipe composes 3–5 components into a production pattern. Copy the structure, swap the data source, ship.
Chat interface
Streaming conversation with role indicators, tool-call expansion, and citation provenance.
<ChatMessage role="assistant" model="claude-4">
<StreamingResponse stream={response}>
{(text) => <Markdown>{text}</Markdown>}
</StreamingResponse>
</ChatMessage>Agent dashboard
Multi-agent orchestration view with timeline, status, and handoff visualization.
<AgentTimeline agents={pipeline.agents}>
{(agent) => (
<AgentCard
name={agent.name}
status={agent.status}
authority={agent.authority}
/>
)}
</AgentTimeline>Consent ceremony
Multi-step permission granting with visible authority levels and revocation.
<ConsentFlow
scope="calendar.write"
ceremony="elevated"
onGrant={handleGrant}
onRevoke={handleRevoke}
>
<VaultBoundary label="Calendar Access" />
</ConsentFlow>Tool execution trace
Expandable tool-call cards with input/output panels and execution timing.
<MCPToolCall
tool="search_vault"
status="success"
duration={47}
input={{ query: "Q3 results" }}
output={{ matches: 12 }}
/>Confidence display
Grounding indicators, model tags, and confidence meters for transparent AI output.
<ConfidenceMeter value={0.87} qualifier="high">
<GroundingIndicator
level="verified"
source="Annual Report 2025"
/>
</ConfidenceMeter>Learning feedback loop
Visible system learning: what was observed, inferred, and what changed.
<FeedbackSignal
onPositive={handleThumbsUp}
onNegative={handleThumbsDown}
/>
<LearningLedger entries={model.learnings} />