Files
egutierrez 477bcd00f0 chore: auto-commit (13 archivos)
- CMakeLists.txt
- agent_protocol.cpp
- agent_protocol.h
- app.md
- appicon.ico
- hosts_db.cpp
- hosts_db.h
- http_client.cpp
- http_client.h
- main.cpp
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 00:31:32 +02:00

96 lines
3.3 KiB
Markdown

---
name: process_explorer
lang: cpp
domain: tools
version: 0.1.0
description: "Process explorer cross-PC: CPU/RAM/disk/net/GPU + procesos en tiempo real"
tags: [monitor, dashboard, cross-pc, imgui]
icon:
phosphor: cpu
accent: "#0d9488"
uses_functions:
- line_plot_cpp_viz
- kpi_card_cpp_viz
- data_table_cpp_viz
- viz_render_cpp_viz
- compute_stage_cpp_core
- compute_pipeline_cpp_core
- compute_column_stats_cpp_core
- auto_detect_type_cpp_core
- tql_emit_cpp_core
- tql_apply_cpp_core
- lua_engine_cpp_core
- join_tables_cpp_core
uses_types: []
framework: "imgui"
entry_point: "main.cpp"
dir_path: "apps/process_explorer"
repo_url: "https://gitea.organic-machine.com/dataforge/process_explorer"
e2e_checks:
- id: build
cmd: "cmake --build cpp/build --target process_explorer -j"
timeout_s: 300
- id: self_test
cmd: "./cpp/build/apps/process_explorer/process_explorer --self-test"
timeout_s: 30
severity: warning
---
# process_explorer
Process explorer cross-PC: CPU/RAM/disk/net/GPU + procesos en tiempo real.
## Arquitectura
- **Explorer (esta app)**: ImGui C++. UI con 5 panels (Overview, Processes, Network, Devices, Services).
- **Agente HTTP por PC** (issue 0111): daemon Go ligero instalable en cada PC (Win+Linux) que expone:
- `GET /api/processes` — lista de procesos con CPU%/RAM/PID/usuario.
- `GET /api/stats` — snapshot global CPU/RAM/Disk/Net/GPU.
- `GET /api/devices` — discos, GPUs, USB, sensores.
- `GET /api/services` — systemctl (Linux) / sc query (Win).
- Auth: `Authorization: Bearer <token>` con token por PC.
- **Local Linux**: lectura directa de `/proc/*` cuando el host es local (sin red).
- **Remote**: SIEMPRE via HTTP agent + token.
## Panels
1. **Overview** (Ctrl+1) — KPIs globales con `kpi_card`: CPU%, RAM, Disk I/O, Net I/O, GPU. Sparklines historicos via `line_plot`.
2. **Processes** (Ctrl+2) — Tabla TQL (`data_table::render`) con todos los procesos. Filtros, sort, group-by.
3. **Network** (Ctrl+3) — Tabla de sockets/conexiones con PID, local, remote, estado.
4. **Devices** (Ctrl+4) — Enumeracion de discos, GPUs, USB, sensores.
5. **Services** (Ctrl+5) — systemctl (Linux) + `sc query` (Win). Diferente de `services_monitor` (que monitoriza apps DECLARADAS del registry); aqui se ven TODOS.
## Persistencia (local_files/)
- `hosts.db` — inventario PCs (url, token, os, last_seen).
- `operations.db` — entities=hosts, executions=samples (bucle reactivo).
- `process_samples.db` — time-series CPU/RAM/IO para graficar ventanas >1h.
## Build
```bash
cd cpp && cmake --build build --target process_explorer -j
```
## Run
```bash
./cpp/build/apps/process_explorer/process_explorer
```
## Notas de implementacion
- HTTP cliente: hoy stub local en `http_client.cpp`. Migrar a `fn_http::request` cuando cierre el issue 0110.
- Agente Go: issue 0111 (separado).
- Self-test: `--self-test` valida que `hosts.db` + `samples.db` se crean en `local_files/` y que el GL loader carga.
## Capability growth log
Una linea por bump SemVer. Bump-type segun `.claude/commands/version.md`:
- `major`: breaking observable (CLI args, schema BBDD propia, formato wire).
- `minor`: feature aditiva (nuevo panel, endpoint, opcion).
- `patch`: bugfix sin cambio observable.
- v0.1.0 (2026-05-18) — baseline.