How Labels Work
Labels let you categorize conversations by project, topic, priority, or anything else — making it easy to filter and find related sessions later.Workspace-Level Configuration
Labels are configured per workspace. Each workspace starts with zero labels — you create whatever labels you need. Configuration is stored at:Creating Labels
You can also create labels manually by editing the configuration file.Basic Example
Hierarchical Labels
Labels form a nested tree. Parent/child relationships are expressed via thechildren array. Array position determines display order.
Hierarchy Rules
- IDs are simple slugs (lowercase alphanumeric + hyphens)
- IDs must be globally unique across the entire tree
- Maximum nesting depth: 5 levels
- Array position = display order (no
orderfield needed) - Filtering by a parent includes all descendant sessions
Label Properties
Each label object supports these properties:Colors
Labels are rendered as colored circles in the UI. You can use system colors or custom hex values.System Colors
Use semantic color names for common meanings:
System colors also support opacity:
"accent/80", "info/50", etc.
Custom Colors
For precise control, use light/dark mode pairs:Use custom color objects for sub-labels to get precise color control. Reserve system colors for top-level categories.
Label Values
Labels can optionally carry a value with a specific type. This turns labels into structured metadata — for example, a “priority” label with value3, or a “due” label with a date.
Storage Format
Sessions store labels as an array of strings. Boolean labels are bare IDs; valued labels use the:: separator:
- Boolean labels:
"bug"— presence-only, no value - Valued labels:
"priority::3"— ID + value separated by:: - The
::split happens on the first occurrence only (values may contain::)
Value Types
Values are inferred from the raw string at parse time:
Inference order: ISO date check -> number check -> string fallback.
The
valueType in config is a hint for the UI — the parser always infers from the raw value. link is a display affordance: the value renders as a clickable chip (scheme stripped for display) that opens in your external browser, with an Open link action in the value popover for keyboard access. A link value still stores and parses as a plain string.
Sidebar Behavior
Labels appear in the left sidebar as a multi-level expandable section. Clicking a label filters the session list to show only matching sessions. Clicking a parent label includes sessions tagged with any descendant.Validation
After editing the config file, validate it to catch errors:- Valid JSON and recursive schema structure
- Globally unique IDs across the entire tree
- Valid slug format (lowercase alphanumeric with hyphens)
- Maximum nesting depth (5 levels)