The Capsule Security dashboard provides real-time insights into your AI agent ecosystem through customizable widgets and interactive visualizations.
The dashboard is organized into two main sections:
- Risk Widgets: Security and compliance metrics
- Usage Widgets: Operational and performance metrics
A vertical segmented bar showing the distribution of agents without high-severity issues:
- Visual representation of security posture
- Quick identification of compliant agents
- Percentage of safe vs. at-risk agents
Horizontal stacked bar chart displaying agent distribution by severity level:
- CRITICAL: Red - Immediate attention required
- HIGH: Orange - Urgent issues
- MEDIUM: Yellow - Standard priority
- LOW: Green - Minor concerns
Interactive features:
- Click any severity level to filter the agents page
- Hover for detailed counts
- Badge-style legend for clarity
Statistical chart showing agent access levels:
- PUBLIC: Openly accessible agents
- TENANT: Organization-restricted agents
- LIMITED: Highly restricted agents
Features:
- Progress bar visualization
- Click to navigate to filtered agent list
- Real-time percentage calculations
Compact metric bar displaying risk distribution:
Categories with visual indicators:
- Supply Chain: Cable icon (red) - Third-party risks
- Data: Database icon (purple) - Data security issues
- Compliance: Globe icon (orange) - Regulatory concerns
- Integrity: Scale icon (blue) - Data integrity
- Access: Snowflake icon (dark red) - Access control
- Misc: Triangle icon (yellow) - Other issues
Line chart showing agent activity over time:
- Session frequency trends
- Peak usage identification
- Historical comparison
- Configurable time ranges (24h, 7d, 30d, 90d)
Pie chart displaying tool usage distribution:
- Most frequently used tools
- Tool type breakdown
- Interactive segments - click to filter agents
- Custom tool icons in legend
- Percentage and count display
Horizontal stacked bar showing environment distribution:
- Production: Live agents
- Staging: Pre-production testing
- Development: In-development agents
Interactive filtering by clicking environment segments.
Metric bar highlighting the most active agent owners:
- Owner avatars with names
- Agent count per owner
- Click to view owner's agents
- Useful for identifying key stakeholders
Widgets support responsive sizing:
- Small: 1x1 grid unit
- Medium: 2x1 grid units
- Large: 2x2 grid units
- Full: Full width
The dashboard uses a responsive grid system:
widget('widget-id')
.title('Widget Title')
.size({
default: 'medium',
tablet: 'medium',
mobile: 'full'
})
.aspectRatio('16/9')
.minHeight('fit-content')
.build()Dashboard widgets pull data from specialized hooks:
useNonHighSeverityAgents(): Agent safety metricsuseAgentsSeverity(): Severity distributionuseAgentsAccess(): Access level breakdownuseRiskByCategory(): Categorized risk analysis
useAgentSessionsTimeline(): Historical session datauseToolsInvocationCount(): Tool usage statisticsuseAgentEnvironments(): Environment distributionuseTopAgentOwners(): Owner activity metrics
Most widgets support click-through to filtered views:
// Example: Clicking on HIGH severity
navigate('/agents?severity=HIGH')
// Example: Clicking on a specific tool
navigate('/agents?tools=database')
// Example: Clicking on an owner
navigate('/agents?ownership=user@example.com')Dashboard data refreshes automatically:
- Default refresh: Every 60 seconds
- Manual refresh: Pull-to-refresh on mobile
- WebSocket updates for critical alerts
Export dashboard data in multiple formats:
- PDF: Full dashboard snapshot
- CSV: Raw data export
- JSON: Structured data export
- Image: Widget screenshots
- Widget data cached for 60 seconds
- Stale-while-revalidate strategy
- Background refresh for smooth UX
- Widgets load on viewport entry
- Progressive data fetching
- Optimized for mobile devices
import { widget } from '@capsulesecurity/ui';
const customWidget = widget('custom-metric')
.title('Custom Metric')
.size({ default: 'medium' })
.useData(useCustomData)
.content((props) => (
<CustomVisualization {...props} />
))
.build();Each widget receives:
data: Processed data from hookloading: Loading stateerror: Error staterefetch: Manual refresh function
Priority Placement
- Critical metrics above the fold
- Risk widgets before usage widgets
- Interactive elements prominently displayed
Visual Hierarchy
- Larger widgets for key metrics
- Color coding for severity
- Clear labels and legends
Responsive Design
- Mobile-first approach
- Touch-friendly interactions
- Appropriate widget sizing per device
Data Management
- Use pagination for large datasets
- Implement virtual scrolling
- Cache frequently accessed data
Rendering Optimization
- Memoize expensive calculations
- Use React.memo for widget components
- Implement windowing for lists
Widgets Not Loading
- Check network connectivity
- Verify API permissions
- Review browser console for errors
Incorrect Data
- Clear browser cache
- Force data refresh
- Check data source filters
Performance Issues
- Reduce number of visible widgets
- Check browser performance metrics
- Consider data aggregation settings
Access raw dashboard data programmatically:
GET /api/v1/dashboard/widgets?widgets=agents-by-severity,tool-invocation-count
Response:
{
"agents-by-severity": {
"data": [...],
"updatedAt": "2024-01-15T14:30:00Z"
},
"tool-invocation-count": {
"data": [...],
"updatedAt": "2024-01-15T14:30:00Z"
}
}