477bcd00f0
- 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>
96 lines
3.3 KiB
Markdown
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.
|