CLI wizard that probes a Linux host, sends results to a local LLM agent for analysis, and generates an HTML dashboard page linking to discovered services. Also generates optional dashboard modules (e.g., Ollama dashboard).
- Rust toolchain (edition 2021)
- A running OpenAI-compatible API endpoint (e.g., Ollama on
http://127.0.0.1:11434) - System tools:
systemctl,docker,nvidia-smi,free,hostname
cargo build --release
Binary: target/release/splash
Run the wizard:
./target/release/splash
- Hostname — detected from system, can be overridden
- Agent endpoint — auto-discovers OpenAI-compatible endpoints; user selects model
- Host probing — runs
systemctl,docker ps,free,nvidia-smi, etc. - Agent analysis — raw probe output sent to LLM; returns structured service list
- Probe table — editable table where user can:
- Toggle service inclusion (
skey, Enter on INC column) - Edit endpoint URLs (auto re-probed on change)
- Edit descriptions
- Pick icons from a 30-emoji palette
- Edit service names
- Navigate with arrow keys /
jk/ tab
- Toggle service inclusion (
- GUI addons — pick from
services.tomlentries (Portainer, Grafana, etc.) - Dashboard modules — pick from available modules in
src/modules/ - Deployment — choose output directory or copy to
/var/www/html
Agent responses are cached in agent-response.json. On re-run, you are prompted to reuse the cache or re-analyze. Full session state persists in splash-state.json — loading a previous session skips directly to the probe table.
splash-server.html— main dashboard pagesplash-state.json— session database (services, endpoints, icons, module selections)- Per-module output directories (e.g.,
ollama-ui/index.html)
Create a directory under src/modules/ containing:
my-module/
module.json — { name, description, default_port, icon, url_prefix }
mod.rs — module_info() returning DashboardModule with generate fn pointer
generate.rs — HTML generation logic
template.html — HTML template with <!-- PLACEHOLDER --> markers
style.css — stylesheet copied to output
Register the module in src/modules/mod.rs → all_modules().
Persisted to ~/.config/server-splash/splash-config.toml:
agent_url = "http://127.0.0.1:11434"
hostname = "myserver"
output_dir = "./server-splash"
gui_pairs_file = "/path/to/services.toml"
glances_api_base = "http://localhost:61208"GUI addons are defined in services.toml (TOML format, one entry per service with src_port and icon).
