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.
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
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
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.
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.
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.
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.
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