Orchestration

Director

A Bloomberg-inspired Terminal UI that serves as a Life Command Center, unifying hardware monitoring, service management, AI integrations, mood tracking, and system tuning into a single data-dense, keyboard-driven interface with eight navigable sections.

Python Textual Rich psutil asyncio nvidia-smi

In Plain English

This is a command center that shows everything happening on your computer at a glance. Which AI services are running, how much memory is being used, what tasks are active. You can switch power modes, start services, and check on things without leaving your terminal (the text-based command window where developers type instructions instead of clicking buttons).

Problem

Running a personal AI infrastructure means juggling a surprising number of moving parts. Ollama needs to be running for local models. The Local Brain service needs to be healthy on port 8420. The Telegram bot needs to be polling. Docker containers need monitoring. MCP servers need to be responsive. On top of all that, there is the GPU to watch: VRAM allocation determines whether you can load a large model, temperature spikes can indicate thermal throttling, and CUDA utilization tells you whether a task is actually using the hardware or just sitting idle. Monitoring all of this traditionally meant flipping between terminals, running nvidia-smi in a loop, checking ports with netstat, and mentally tracking which services were supposed to be running.

Director was born from the simple observation that all of this information could live in one place. But it quickly evolved beyond a monitoring dashboard. The original idea of "show me what is running" expanded into "let me control what is running" and then into "let me manage my entire digital life." The current v9 design is a ground-up rebuild as a Life Command Center with eight navigable sections spanning hardware metrics, service management, AI model interaction, Obsidian vault statistics, project tracking, system tuning, and even personal life dashboards for mood tracking and calendar events.

The design philosophy borrows heavily from Bloomberg Terminal and Grafana: maximum information density, minimal visual noise, and everything reachable by keyboard. The Bloomberg-inspired dark theme uses color-coded status indicators where green, yellow, and red convey meaning at a glance without requiring the user to read labels. Every panel auto-refreshes at an appropriate interval (one second for hardware, five seconds for services, sixty seconds for life data), and the entire interface runs inside a standard terminal with no browser, no Electron wrapper, and no GUI framework dependencies.

Architecture

Director v9 - Life Command Center Sidebar Navigation Home Services Life Vault AI Projects System Tune Keyboard: 1-8 s: toggle sidebar q: quit r: refresh Hardware Gauges (1s refresh, sparkline history) CPU per-core bars frequency, load avg RAM used/total GB swap, buffers GPU util %, temp VRAM used/total Disks per-drive usage % network I/O Service Status (5s refresh) Network Services Ollama :11434 Context7 :8090 Playwright :3000 Dev Server :8080 Applications Docker Desktop Tailscale Obsidian Claude Desktop Port check + process detection + HTTP probe Quick Actions Gaming Mode Work Mode Start Ollama Open Vault Daily Note Restart Director powercfg, nvidia-smi, subprocess Top Processes (by memory) 3s cache, sorted by mem% Filters system processes Color-coded by usage Life Dashboard Panels Mood tracker (Obsidian logging) Calendar widget (event counts) Daily note quick-append Additional Sections (per sidebar selection) Vault Stats Orphans, links AI Chat Ollama models Docker Containers GPU Tuner Power profiles DST Server Game server CPU: 45% RAM: 62% GPU: 12% VRAM: 8.2/32 GB 6/9 services online Temp: 52C Status: OK Data Sources: psutil (CPU/RAM/Disk) | nvidia-smi (GPU) | socket (ports) | HTTP (APIs) | process_iter (apps)
Scroll to explore diagram

Features

Real-Time Hardware Monitoring

1-second refresh

Director polls system metrics every second with near-zero overhead. CPU usage is displayed both as an aggregate percentage and as individual per-core bars using Unicode block characters, letting you spot single-core bottlenecks at a glance. RAM shows used versus total with swap and available buffers. GPU monitoring queries nvidia-smi for utilization percentage, VRAM allocation in gigabytes, and junction temperature with color-coded thresholds. Sparkline widgets render the last 20 samples as a miniature ASCII chart beside each metric, so you can see trends without needing a full graph.

Service Health Detection

9 services tracked

The services panel uses three detection strategies to cover different service types. Network services like Ollama, Context7, and the dev server are checked via socket connections on their known ports. Services with HTTP APIs get an additional probe that extracts version information from response payloads. Applications like Docker Desktop, Tailscale, Obsidian, and Claude Desktop are detected by scanning the process list for their executable names. Results are cached for five seconds to avoid hammering the system, and each service displays a colored status dot that turns green, gray, or red depending on its state.

Quick Actions with Power Modes

One-click system control

The quick actions panel provides clickable buttons that execute system-level operations. Gaming Mode activates the Ultimate Performance power plan through powercfg, sets CPU throttle minimum and maximum to 100%, enables GPU persistence mode via nvidia-smi, and raises the power limit for maximum clock speeds. Work Mode switches back to the Balanced power plan. Other actions launch Ollama, open the Obsidian vault through its URI protocol, create or open today's daily journal note from a template, and restart Director itself by spawning a new process and exiting the current one.

Eight-Section Navigation

3x3 tiling grid

The sidebar provides navigation across eight distinct sections: Home for the overview dashboard, Services for detailed service management with start/stop/restart controls, Life for mood tracking and calendar integration, Vault for Obsidian statistics and orphan detection, AI for an embedded Ollama chat panel, Projects for git repository status, System for Docker containers and game server monitoring, and Tune for GPU profiles and power mode configuration. Each section loads its own panel layout into a 3x3 tiling grid, and panels can span multiple cells for important information. The sidebar collapses to icon-only mode with a keyboard shortcut.

How It Works

01

Launch and Compose

Director starts as a Textual application, building its widget tree through the framework's compose pattern. The sidebar instantiates with eight navigation buttons, each mapped to a section ID. The content area creates panel instances for each view but initially hides all except the Home panel. The status bar mounts at the bottom with compact hardware metrics. Textual's reactive system wires up CSS-based styling using the Bloomberg-inspired dark theme, with specific color variables for status indicators, hover states, and active selections. The entire interface renders in any terminal that supports 256 colors.

02

Background Polling Loop

On mount, Director spawns an asyncio background task that runs a continuous update loop. Every 1.5 seconds, it refreshes the currently visible panel by calling its refresh_content method inside a thread pool executor to avoid blocking the UI event loop. The SystemStats class provides static methods for each data source: psutil for CPU, RAM, disk, and process information, nvidia-smi via subprocess for GPU metrics, socket connections for port checks, and urllib for HTTP service probes. Results are cached at appropriate intervals (three seconds for process lists, five seconds for service checks) to balance responsiveness with system load.

03

Navigation and Panel Switching

When a user clicks a sidebar button or presses a number key, the app receives a Navigate message containing the target section ID. The _show_section handler iterates through all panels, hiding those that do not match and showing the selected one. The newly visible panel immediately triggers a content refresh so the user sees current data, not stale information from the last time that section was active. The sidebar updates its visual state by adding an "active" CSS class to the selected button, providing a blue highlight that indicates the current section.

04

Rendering with Rich Text

Each panel builds its display using Rich's Text object, which supports inline styling, color coding, and Unicode characters. Hardware gauges are rendered as block-character progress bars where each filled block represents 5% utilization. Color is applied contextually: green below 50%, yellow from 50% to 80%, red above 80%. GPU temperature follows a separate scale with green below 60 degrees, yellow to 80, and red beyond. The entire text object is passed to the Textual widget's update method in a single atomic operation, preventing visual tearing during rapid refreshes.

05

Action Execution

Quick action buttons fire subprocess calls with the CREATE_NO_WINDOW flag to prevent console windows from flashing on screen. Gaming Mode chains multiple powercfg and nvidia-smi commands in sequence, applying each setting and reporting success or failure to a status label below the buttons. The Ollama launcher uses Popen with DETACHED_PROCESS to start it as an independent process. The daily note action checks whether today's note exists in the vault, creates it from a template if not, and opens it through Obsidian's URI scheme. Every action includes error handling that surfaces user-friendly messages while logging full stack traces for debugging.

Tech Stack

TUI Framework

Textual 0.47+ with CSS-like styling and reactive state

Text Rendering

Rich library for styled text, tables, and Unicode bars

System Metrics

psutil for CPU, RAM, disk, process, and network I/O

GPU Monitoring

nvidia-smi subprocess queries for util, VRAM, temp

Async Runtime

asyncio with thread pool executors for non-blocking I/O

Service Detection

Socket probes, HTTP health checks, process iteration