Dashboard & Observability

Here is a question that separates serious distributed systems from toy demos: can you tell what’s happening right now? Not after digging through logs. Not after SSHing into a box and running ps aux. Right now, at a glance, from wherever you happen to be standing.

Constitution Principle 2 is blunt about this: “If it isn’t observable, it doesn’t exist.” Every significant event must be logged, every metric queryable. Complete visibility is not optional — it’s an architectural requirement. Most systems treat observability as a nice-to-have, a dashboard you build after the third outage. Obsidian treats it as load-bearing infrastructure. The dashboard isn’t a feature. It’s the nervous system.

The design philosophy is visibility without disruption. You choose how much you want to see. A single glanceable line in your terminal prompt. A rich CLI status display. A full real-time web dashboard. Push notifications to your phone. Four levels of engagement, same underlying truth.

Visibility Levels
┌─────────────────────────────────────────────────────────────────┐
│                    VISIBILITY LEVELS                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Level 0: Terminal Status Line                                  │
│  ────────────────────────────────────────────                  │
│  Always visible, single line, minimal distraction              │
│  "◆ 3 agents | 5 tasks | ✓ healthy"                           │
│                                                                 │
│  Level 1: CLI Status Display                                    │
│  ────────────────────────────────────────────                  │
│  Rich terminal output with colors and icons                    │
│  Detailed but ephemeral                                         │
│                                                                 │
│  Level 2: Web Dashboard                                         │
│  ────────────────────────────────────────────                  │
│  Full visibility, real-time updates, interactive               │
│  For deep monitoring and analysis                               │
│                                                                 │
│  Level 3: Mobile/Chat Integration                               │
│  ────────────────────────────────────────────                  │
│  Notifications and quick status via Slack/Discord              │
│  Stay informed without context switching                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Level 0: Terminal Status Line

The ambient awareness layer. The terminal status line provides constant visibility without disruption. It lives in your shell prompt — always there, never in the way. Think of it as a vital signs monitor: you don’t stare at it, but you’d notice immediately if something flatlined.

Terminal Status Line States
┌─────────────────────────────────────────────────────────────────┐
│                   TERMINAL STATUS LINE                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Default Format:                                                │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │ ◆ OBSIDIAN │ 4 agents │ 12 tasks │ ✓ healthy │ $2.34   │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│  With Activity:                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │ ◆ OBSIDIAN │ 4 agents │ 12 tasks │ ⟳ deploying │ $2.34 │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│  With Warning:                                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │ ◆ OBSIDIAN │ 4 agents │ 12 tasks │ ⚠ 2 errors │ $2.34  │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│  With Error:                                                    │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │ ◆ OBSIDIAN │ 3 agents │ 12 tasks │ ✗ unhealthy │ $2.34 │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│  Minimal Mode:                                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │ ◆ 4a 12t ✓                                              │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Shell Integration

The status line plugs into every major shell. One line in your config, permanent situational awareness. This is Principle 9 in action — “Only the LLM should be slow.” The status line caches aggressively (2-second TTL) so your prompt never lags.

Bash:

export PS1='$(obs status --line) \w $ '

Zsh:

RPROMPT='$(obs status --line)'

Fish:

function fish_right_prompt
    obs status --line
end

Starship:

[custom.obsidian]
command = "obs status --line"
when = "obs status --check"
format = "[$output]($style) "
style = "cyan"

tmux:

set -g status-right '#(obs status --line --compact)'
set -g status-interval 5

Configuration

# obsidian.yaml
ui:
  status_line:
    enabled: true
    format: default  # default | minimal | custom
    custom_format: "◆ {agents}a {tasks}t {health}"
    cache_ttl: 2s
    colors:
      healthy: green
      warning: yellow
      error: red
      activity: blue

Level 1: CLI Status Display

The full diagnostic view. Run obs status and get everything — system info, Agent states, task progress, health checks, and cost tracking — in one richly formatted terminal output. This is what you reach for when the status line shows a warning and you want to know why.

CLI Status Display
┌─────────────────────────────────────────────────────────────────────────────┐
│                            OBSIDIAN STATUS                                  │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐    │
│  │  SYSTEM                                                            │    │
│  │  Environment:  production          Version:     v2.4.0            │    │
│  │  Uptime:       3d 14h 22m          Last Deploy: 2h ago            │    │
│  │  Config:       ✓ valid             Daemon:      ✓ running         │    │
│  └────────────────────────────────────────────────────────────────────┘    │
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐    │
│  │  AGENTS                                              4 active      │    │
│  │                                                                    │    │
│  │  coordinator   ████████████████████  active   1 task   3d 14h    │    │
│  │  researcher    ████████████████████  active   3 tasks  3d 14h    │    │
│  │  coder         ████████░░░░░░░░░░░░  idle     0 tasks  3d 14h    │    │
│  │  reviewer      ████████████████████  active   2 tasks  3d 14h    │    │
│  └────────────────────────────────────────────────────────────────────┘    │
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐    │
│  │  TASKS                                                             │    │
│  │  ┌─────────────────────────────────────────────────────────────┐  │    │
│  │  │ ████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │  │    │
│  │  │ Pending: 5     In Progress: 6     Completed: 142 (today)   │  │    │
│  │  └─────────────────────────────────────────────────────────────┘  │    │
│  └────────────────────────────────────────────────────────────────────┘    │
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐    │
│  │  HEALTH                                                            │    │
│  │  ✓ LLM Provider    anthropic      98.5% uptime     1.2s latency  │    │
│  │  ✓ Database        sqlite         connected        2ms latency   │    │
│  │  ✓ Vault           1.2M entries   indexed          15ms search   │    │
│  │  ✓ Queue           5 pending      healthy          3ms latency   │    │
│  │  ⚠ Cache           89% full       consider cleanup               │    │
│  └────────────────────────────────────────────────────────────────────┘    │
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐    │
│  │  COST (Today)                                                      │    │
│  │  Total: $18.45                    Tokens: 1.2M                    │    │
│  │  ├─ anthropic:  $15.20 (82%)      ├─ input:  1.1M                 │    │
│  │  └─ openai:     $3.25 (18%)       └─ output: 0.1M                 │    │
│  │  Projected Monthly: $545.50                                       │    │
│  └────────────────────────────────────────────────────────────────────┘    │
│                                                                             │
│  Last updated: 2024-01-15 10:35:22 UTC                                     │
│  Run 'obs status -w' for live updates                                      │
└─────────────────────────────────────────────────────────────────────────────┘

Visual Language

The iconography is consistent across every visibility level. Once you learn what ✓ and ✗ mean, you can read any Obsidian interface instantly. This is Principle 5 — self-similarity at every scale.

Colors and Icons Reference
┌─────────────────────────────────────────────────────────────────┐
│                  COLORS AND ICONS                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  STATUS ICONS                                                   │
│  ✓  Success / Healthy / Completed                              │
│  ✗  Error / Failed / Unhealthy                                 │
│  ⚠  Warning / Degraded                                         │
│  ◆  OBSIDIAN logo / Active                                     │
│  ⟳  In Progress / Syncing / Deploying                          │
│  ●  Active / Running                                           │
│  ○  Idle / Waiting                                             │
│  ◐  Partial / In Progress                                      │
│                                                                 │
│  AGENT STATUS COLORS                                            │
│  ████████████ Green    Active, healthy                         │
│  ████████░░░░ Yellow   Idle, waiting                           │
│  ████████████ Blue     Processing, busy                        │
│  ████████████ Red      Error, unhealthy                        │
│  ░░░░░░░░░░░░ Gray     Offline, stopped                        │
│                                                                 │
│  DEPLOYMENT STATUS                                              │
│  ⟳ Blue     Deploying                                          │
│  ✓ Green    Deployed successfully                              │
│  ✗ Red      Deployment failed                                  │
│  ⟲ Yellow   Rolling back                                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Level 2: Web Dashboard

The command center. When you need the full picture — real-time Agent activity, deployment pipelines, cost curves, task queues — you open the web dashboard. It’s the same data as obs status, but persistent, interactive, and rich enough for deep analysis.

Here is the thing about dashboards: most of them are vanity metrics. Graphs that go up and to the right, numbers nobody acts on. The Obsidian dashboard is designed around actionable visibility. Every panel answers a question you’d actually ask during an incident. Every metric has a threshold that triggers a response.

Web Dashboard Overview
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│  ◆ OBSIDIAN Dashboard                              production │ v2.4.0 │ ✓ Connected   │
├─────────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                         │
│  ┌────────────────────────────────────────────────┐  ┌────────────────────────────────┐│
│  │  SYSTEM HEALTH                                 │  │  ACTIVE AGENTS                ││
│  │                                                │  │                                ││
│  │      ┌─────────────────────┐                  │  │  coordinator  ●  1 task        ││
│  │      │    ✓ HEALTHY        │                  │  │  researcher   ●  3 tasks       ││
│  │      │    98.5% uptime     │                  │  │  coder        ○  idle          ││
│  │      └─────────────────────┘                  │  │  reviewer     ●  2 tasks       ││
│  │                                                │  │                                ││
│  │  ✓ LLM       ✓ Database    ✓ Queue           │  │  CPU: ████████░░ 65%          ││
│  │  ✓ Vault     ✓ Cache       ⚠ Logs            │  │  MEM: ██████░░░░ 52%          ││
│  └────────────────────────────────────────────────┘  └────────────────────────────────┘│
│                                                                                         │
│  ┌────────────────────────────────────────────────┐  ┌────────────────────────────────┐│
│  │  TASK PROGRESS                                 │  │  DEPLOYMENT PIPELINE          ││
│  │  ┌─────────────────────────────────────────┐  │  │                                ││
│  │  │████████████████████░░░░░░░░░░░░░░░░░░░░│  │  │  DEV ──► STAGING ──► PROD     ││
│  │  └─────────────────────────────────────────┘  │  │   ✓        ✓         ⟳        ││
│  │   Completed: 142  In Progress: 6  Pending: 5  │  │                                ││
│  │                                                │  │  v2.4.0 deploying (25%)       ││
│  │  ● task_12350  research   ⟳  AI safety paper  │  │  ████████░░░░░░░░░░░░░░░░░░░ ││
│  │  ● task_12351  code       ⟳  Auth module fix  │  │                                ││
│  │  ○ task_12352  review     ○  PR #234 review   │  │  [Pause] [Rollback] [Promote] ││
│  └────────────────────────────────────────────────┘  └────────────────────────────────┘│
│                                                                                         │
│  ┌──────────────────────────────────────────────────────────────────────────────────┐ │
│  │  ACTIVITY FEED                                                                    │ │
│  │  10:35:22  ● researcher claimed task_12350 "Research AI safety papers"           │ │
│  │  10:34:18  ✓ coder completed task_12348 "Implement rate limiting"                │ │
│  │  10:33:45  ⟳ deployment promoted to 25% canary                                   │ │
│  │  10:32:01  ● coordinator spawned researcher-02 instance                          │ │
│  │  10:30:55  ⚠ cache usage at 89%, cleanup recommended                             │ │
│  └──────────────────────────────────────────────────────────────────────────────────┘ │
│                                                                                         │
│  ┌────────────────────────────────────────────────┐  ┌────────────────────────────────┐│
│  │  METRICS                                       │  │  LLM COST (Today)             ││
│  │  Tasks/Hour                 LLM Latency (P99) │  │  Total: $18.45                 ││
│  │   50│     ╭─╮                  2s│    ╭──╮    │  │  anthropic █████████░  $15.20 ││
│  │   40│  ╭──╯ ╰─╮                  │╭───╯  │    │  │  openai    ██░░░░░░░░  $3.25  ││
│  │   30│╭─╯      ╰╮              1s│╯      ╰─╮  │  │  Tokens: 1.2M                  ││
│  │   20│╯         ╰──╮              │         ╰  │  │  Projected: $545/month         ││
│  │    0└─────────────────        0s└────────────  │  │                                ││
│  └────────────────────────────────────────────────┘  └────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────────────────────────────┘

System Health Panel

The health panel is the first thing you see because it’s the first thing that matters. It answers the only question that matters at 3 AM: is everything okay, and if not, what specifically is broken?

Every component — LLM provider, database, Vault , queue, cache — reports its status independently. This isn’t a single green/red light. It’s a component-by-component breakdown, because Principle 1 says failures are inevitable and what matters is knowing exactly where the degradation is happening.

Agent Activity Panel

Each Agent gets its own card showing status, resource consumption, current tasks, and uptime. The Warden enforces the resource limits displayed here — CPU, memory, LLM spend — and the dashboard makes those boundaries visible. You can see at a glance which Agent is working, which is idle, and which is approaching its limits.

This is Fractal Delegation made visible. The coordinator delegates to researchers, coders, and reviewers. The dashboard shows the entire delegation tree in real time: who owns what work, how far along they are, and whether the system needs to spawn more instances or scale down.

Deployment Pipeline

The deployment panel visualizes the full progression: build → staging → production, with canary traffic percentages and one-click controls for pause, rollback, and promote. Principle 3 demands that deployments should be boring. The dashboard makes them boring by making them visible — you can watch traffic shift from 5% canary to 25% to 50% to 100%, and hit rollback the instant error rates twitch.

Cost Tracking

LLM costs are not an afterthought. They’re on the main dashboard because they’re a real-time operational concern. The cost panel shows per-provider breakdown, token consumption, and monthly projections. When you’re running multiple Agent instances 24/7, the difference between a well-tuned and a poorly-tuned system is hundreds of dollars a month — and you can’t optimize what you can’t see.

Level 3: Mobile & Chat Integration

The notification layer. Not everyone wants to stare at a dashboard. Sometimes you just need a Slack message when a deployment finishes or a Discord ping when an Agent hits an error. Level 3 pushes the information to you — critical alerts on your phone, status summaries in your team channels.

The design principle is the same: visibility without disruption. You choose your notification thresholds. You choose your channels. The system respects your attention budget the same way it respects compute budgets — as a finite resource that shouldn’t be wasted.

The Nervous System

Here is the deeper point. The dashboard isn’t a separate system bolted onto Obsidian . It’s the expression of a constitutional requirement. Principle 2 doesn’t say “build a dashboard.” It says “if it isn’t observable, it doesn’t exist.” That means every component, every Agent , every task, every deployment emits structured events that flow into a unified observability layer.

The four visibility levels are just different lenses on the same underlying stream. The terminal status line, the CLI display, the web dashboard, and the mobile notifications all consume the same events. Add a new component to the system and it automatically appears in every view. This is Principle 5 again — self-similarity at every scale — applied to observability itself.

The system watches itself so you don’t have to. And when something does go wrong, you’ll know about it before your users do — because the same Systemic Integrity checks that keep Agent instances healthy also feed the dashboard that tells you exactly what’s happening, right now, at a glance.