# 01 — Overview ## What is LOGPile? LOGPile is a standalone Go application for BMC (Baseboard Management Controller) diagnostics analysis with an embedded web UI. It runs as a single binary with no external file dependencies. ## Operating modes | Mode | Entry point | Description | |------|-------------|-------------| | **Offline / archive** | `POST /api/upload` | Upload a vendor diagnostic archive or a JSON snapshot; parse and display in UI | | **Live / Redfish** | `POST /api/collect` | Connect to a live BMC via Redfish API, collect hardware inventory, display and export | Both modes produce the same in-memory `AnalysisResult` structure and expose it through the same API and UI. ## Key capabilities - Single self-contained binary with embedded HTML/JS/CSS (no static file serving required). - Vendor archive parsing: Inspur/Kaytus, Supermicro, NVIDIA HGX Field Diagnostics, NVIDIA Bug Report, Unraid, XigmaNAS, Generic text fallback. - Live Redfish collection with async progress tracking. - Normalized hardware inventory: CPU / RAM / Storage / GPU / PSU / NIC / PCIe / Firmware. - Raw `redfish_tree` snapshot stored in `RawPayloads` for future offline re-analysis. - Re-upload of a JSON snapshot for offline work (`/api/upload` accepts `AnalysisResult` JSON). - Export in CSV, JSON (full `AnalysisResult`), and Reanimator format. - PCI device model resolution via embedded `pci.ids` (no hardcoded model strings). ## Non-goals (current scope) - No persistent storage — all state is in-memory per process lifetime. - IPMI collector is a mock scaffold only; real IPMI support is not implemented. - No authentication layer on the HTTP server.