
Luna-Core-HUD
by Kotsur69
LunaCore
Visual GUI wrapper (dashboard) for the Claude Code CLI.
LunaCore wraps the real claude CLI in an Electron window: a live terminal in the
center, clickable action buttons on the left, and a status monitor on the right.
It adds control and visibility without spending a single extra token — it never
injects prompts or touches the claude binary.
Status: Phases 1–4 + full backlog implemented — interactive terminal, Action Injector, live Passive Observer, runtime profile switching, localhost ports tracker, action cheat-sheets, skill cheat-sheet, a multi-line prompt library, a working/waiting LED, a local scratchpad, a command palette (Ctrl+K), a token burn-rate sparkline, a swappable theming system, a PL/EN language switch, a live usage-limits gauge (5-hour + weekly subscription windows), an armed auto-compact toggle, a CWD/project switcher, a cyberpunk boot sequence, and a Skill Tracker that shows how long each tool actually ran.
⚠️ Core constraint: zero extra tokens
LunaCore must not inject hidden system prompts, middleware, or modify the
claude binary. Any "smart" context analysis by an extra agent would burn the
user's context window. It works only as:
- Passive Observer — listens to the CLI's
stdoutstream and extracts data via regex on the Node.js backend (no round-trips to any model). - Action Injector — GUI buttons write plain text directly to the PTY
stdin, exactly as if the user typed it.
Architecture
┌─────────────────────┬───────────────────────────────┬─────────────────────┐
│ LEFT PANEL │ CENTER (Terminal) │ RIGHT PANEL │
│ (Controls) │ │ (Status Monitor) │
├─────────────────────┤ ● LED: working / waiting ├─────────────────────┤
│ [⚡ COMPACT CONTEXT]│ [tab][tab][tab] [+] │ Context Window bar │
│ │ [Ctrl+K] command palette │ (of the ACTIVE tab)│
│ Auto-compact toggle │ xterm.js render area │ + burn sparkline │
│ Theme/lang/boot │ │ Usage limits │
│ Project (cwd) │ Claude CLI interactive │ Skill Tracker │
│ Profile switcher │ session (node-pty process) │ tiles │
│ Action cheat-sheets │ │ Localhost ports │
│ Prompt library │ │ Scratchpad │
│ Skill cheat-sheet │ │ │
│ (panel scrolls) │ │ (panel scrolls) │
└─────────────────────┴───────────────────────────────┴─────────────────────┘
Data flow:
| Direction | Path |
|---|---|
| Passive Observer (terminal) | session.proc.onData → IPC pty:data {sessionId, data} → that tab's xterm.write() |
| Passive Observer (Skill Tracker) | TranscriptWatcher → toolEventsFromLines() + foldToolEvents() pair each tool_use id with the tool_result that closes it → IPC metrics:tools {events:[{phase,id,tile,at}]} → skilltracker.js sweeps a tile for the tool's real duration. The old detectTools() stdout scan (ANSI strip + Name( regex) stays as a backstop — it broke silently when the TUI changed how it renders a tool call — and still sends the flat {tiles} blink. |
Related servers

n8n
Updated todayby n8n-io
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

mcp-server-git
OfficialUpdated todayA Model Context Protocol server providing tools to read, search, and manipulate Git repositories programmatically via LLMs

mcp-server-fetch
OfficialUpdated todayA Model Context Protocol server providing tools to fetch and convert web content for usage by LLMs