Skip to content

v0.7.0 - Analytics Dashboard, Collapsible Sidebar, and Real-time Operational Visibility

Latest

Choose a tag to compare

@KaranJagtiani KaranJagtiani released this 26 Mar 09:56
· 5 commits to main since this release

Skyflo v0.7.0 introduces a full-featured Analytics Dashboard that gives operators real-time visibility into LLM cost, token consumption, latency, and cache efficiency across all conversations. The Command Center has been redesigned with a collapsible sidebar, real-time conversation title generation, and a comprehensive UI overhaul.

Analytics Dashboard

The new Analytics Dashboard (/analytics) provides a centralized view of operational metrics with time-range filtering and automatic bucket aggregation.

Metrics

  • Total cost with per-conversation average and daily cost trend chart
  • Token usage breakdown: prompt, completion, cached, and total tokens with stacked area visualization
  • Time to First Token (TTFT): average latency with per-bucket area chart
  • Total Response Time (TTR): average response duration with per-bucket area chart
  • Cache efficiency gauge: prompt cache hit rate as a visual ratio
  • Tool approval rate: approval vs. rejection counts across mutating operations
  • Conversation count: total conversations within the selected period

Time Range Controls

  • Preset ranges: 1h, 6h, 12h, 24h, 7d, 14d, 30d, 90d
  • Custom date range picker with calendar UI
  • Automatic bucket sizing: 5min to 7-day buckets depending on the selected window
  • All timestamps normalized to UTC

Backend

  • New GET /api/v1/analytics/metrics endpoint with last_n_days, start_date/end_date, and start_datetime/end_datetime query parameters
  • MetricsAggregation and DailyMetrics response models with typed Pydantic schemas
  • Aggregation computed from the Message table with fallback to messages_json for backward compatibility
  • New token_usage JSONB column on the messages table (migration included) for direct per-message metric queries
  • Token usage is now persisted to both the conversation JSON and the individual Message row in real time

Collapsible Sidebar

The navigation has been restructured from a top navbar with a separate history page into a collapsible sidebar.

  • Sidebar contains conversation history with search, settings, integrations, and analytics navigation
  • Collapses to icon-only mode to maximize the Command Center workspace
  • Conversation history is now inline in the sidebar with search, infinite scroll, and cursor-based pagination
  • The standalone /history page has been removed
  • Sidebar state persists across navigation

Conversation Ordering

Conversations are now sorted by updated_at instead of created_at, so active conversations surface to the top. Cursor pagination uses a composite updated_at|id cursor to eliminate duplicate entries across pages.

Real-time Title Generation

Conversation titles now stream to the Command Center in real time via SSE instead of requiring a page refresh.

  • New conversation.title.generated SSE event delivers the title as soon as generation completes
  • Title generation is triggered after the SSE subscription is established (via on_subscribed callback) to guarantee the client receives the event
  • The sidebar history updates immediately when a title is generated

MCP Health Endpoints

The MCP server health surface has been split into dedicated liveness and readiness endpoints.

  • GET /health: Liveness probe. Returns 200 if the server process is running.
  • GET /health/ready: Readiness probe. Verifies that kubectl, helm, and kubectl-argo-rollouts binaries are available on $PATH. Returns 503 with a list of missing tools if any are absent.
  • Kubernetes manifests and Helm chart updated to use the new endpoints
  • MCP probe initialDelaySeconds reduced from 60s to 10s in the Helm chart, reflecting the lighter readiness check

Helm Chart Improvements

  • Conditional credentials: The engine Secret template now uses {{- with }} guards so that empty API key values are omitted entirely instead of being written as empty strings. This prevents environment variable pollution and avoids provider SDK errors from blank keys.
  • Ingress support: Native Kubernetes Ingress resource with configurable host, paths, TLS, and annotation overrides for cloud load balancer integration.

CI: Kubernetes Manifest Validation

A new deployment-ci.yml workflow validates all Kubernetes manifests on every PR that touches deployment/:

  • Kubeconform: Schema validation against upstream Kubernetes OpenAPI specs (skips CRDs)
  • Kube-score: Best-practice scoring for security contexts, resource limits, and probe configuration
  • Shell variable substitution with deterministic dummy values to render manifests before validation

Bug Fixes

  • Queue drain during approval: Queued messages no longer auto-drain while tool approvals are pending. The queue pauses until all pending approvals are resolved.
  • Jenkins tool detection: Jenkins tools are now identified by name prefix (jenkins_*) in addition to tag matching, preventing tools from being hidden when tags are missing.
  • Jenkins input schema mutation: _strip_jenkins_input_params now deep-copies the input schema before modifying it, preventing shared-reference side effects across tool calls.

UI Revamp

  • Settings: Redesigned profile and team settings with consistent layout and spacing
  • Integrations: Updated component structure and visual alignment with the new sidebar navigation
  • Login: Refreshed login page styling
  • Welcome screen: Updated onboarding copy for the Command Center

Full Changelog: v0.6.1...v0.7.0