asiai web
Launch the web dashboard for visual monitoring and benchmarking.
Usage
asiai web
asiai web --port 9000
asiai web --host 0.0.0.0
asiai web --no-open
Options
| Option | Default | Description |
|---|---|---|
--port |
8899 |
HTTP port to listen on |
--host |
127.0.0.1 |
Host to bind to |
--no-open |
Don't open the browser automatically | |
--db |
~/.local/share/asiai/asiai.db |
Path to the SQLite database |
Requirements
The web dashboard requires additional dependencies:
pip install asiai[web]
# or install everything:
pip install asiai[all]
Pages
Dashboard (/)
System overview with engine status, loaded models, memory usage, and last benchmark results.
Benchmark (/bench)
Run cross-engine benchmarks directly from the browser:
- Select engines and prompts
- Configure number of runs (1-10)
- Optional power measurement (requires
sudo NOPASSWDforpowermetrics) - Live progress via SSE
- Results table with winner highlighting
- Throughput and TTFT charts
History (/history)
Visualize benchmark results over time:
- Throughput (tok/s) and TTFT line charts
- Filter by time range (24h / 7d / 30d / 90d)
- Sortable data table
Monitor (/monitor)
Real-time system monitoring with 5-second refresh:
- CPU load sparkline
- Memory gauge
- Thermal state
- Loaded models list
Doctor (/doctor)
Interactive health check for system, engines, and database. Same checks as asiai doctor with a visual interface.
API Endpoints
The web dashboard exposes REST API endpoints for programmatic access.
GET /api/status
Lightweight health check. Cached 10s, responds in < 500ms.
{
"status": "ok",
"ts": 1709700000,
"uptime": 86400,
"engines": {"ollama": true, "lmstudio": false},
"memory_pressure": "normal",
"thermal_level": "nominal"
}
Status values: ok (all engines reachable), degraded (some down), error (all down).
GET /api/snapshot
Full system + engine snapshot. Cached 5s. Includes CPU load, memory, thermal state, and per-engine status with loaded models.
GET /api/metrics
Prometheus exposition format. 15 gauges covering system, engine, model, and benchmark metrics.
# prometheus.yml
scrape_configs:
- job_name: 'asiai'
static_configs:
- targets: ['localhost:8899']
metrics_path: '/api/metrics'
scrape_interval: 30s
Metrics include:
| Metric | Type | Description |
|---|---|---|
asiai_cpu_load_1m |
gauge | CPU load average (1 min) |
asiai_memory_used_bytes |
gauge | Memory used |
asiai_thermal_speed_limit_pct |
gauge | CPU speed limit % |
asiai_engine_reachable{engine} |
gauge | Engine reachability (0/1) |
asiai_engine_models_loaded{engine} |
gauge | Models loaded count |
asiai_model_vram_bytes{engine,model} |
gauge | VRAM per model |
asiai_bench_tok_per_sec{engine,model} |
gauge | Last benchmark tok/s |
Notes
- The dashboard binds to
127.0.0.1by default (localhost only) - Use
--host 0.0.0.0to expose on the network (e.g., for remote monitoring) - Port
8899is chosen to avoid conflicts with inference engine ports