Changes
diff --git a/model-switcher/README.md b/model-switcher/README.md
index ff28474..c2d9b80 100644
--- a/model-switcher/README.md
+++ b/model-switcher/README.md
@@ -1,6 +1,6 @@
# LLM Model Switcher
-A simple web-based tool to switch between different `llama.cpp` model configurations on a headless AI server.
+A simple web-based tool to switch between different `llama.cpp` model configurations on a headless AI server, featuring a retro-futuristic terminal interface.
## How it works
@@ -11,11 +11,19 @@ The tool manages `llama.cpp` configurations by manipulating symbolic links and i
3. **Switching**: When you select a model in the web UI:
* The tool updates the symlink at `/etc/llama.cpp.conf` to point to the selected file in `/etc/llama.cpp.d`.
* It restarts the `llama.cpp` systemd service to apply the changes.
+4. **Monitoring**: The tool provides a real-time view of the last 100 lines of the `llama.cpp` service logs using `journalctl`.
+
+## Features
+
+* **Model Management**: Easily swap between different model configurations.
+* **Service Logs**: Integrated log viewer showing the last 100 lines of the systemd service (newest first).
+* **Retro UI**: A "Cyberpunk CRT" aesthetic with scanlines, phosphor glow, and screen flicker effects.
+* **Zero Dependencies**: The backend uses standard Python libraries, and the frontend uses Preact via ESM—no build step or `npm install` required.
## Requirements
-* Python 3.x (no external dependencies required).
-* `sudo` privileges (to modify `/etc` and restart system services).
+* Python 3.7+ (uses `subprocess.run` with `capture_output`).
+* `sudo` privileges (to modify `/etc`, restart system services, and read `journalctl` logs).
* A `systemd` service named `llama.cpp`.
## Usage
@@ -35,7 +43,7 @@ By default, the server will be available at `http://127.0.0.1:7330`.
## Project Structure
-* `main.py`: The Python backend using `http.server`.
+* `main.py`: The Python backend using `http.server` and `subprocess`.
* `static/`: Contains the frontend assets (HTML/CSS/JS).
- * Uses **Preact** and **HTM** via ESM (no build step required).
- * Plain CSS for styling.
+ * `index.html`: Preact-based application.
+ * `style.css`: Custom "CRT Terminal" styling and animations.
\ No newline at end of file
diff --git a/model-switcher/static/style.css b/model-switcher/static/style.css
index 9b5307f..1aad45f 100644
--- a/model-switcher/static/style.css
+++ b/model-switcher/static/style.css
@@ -70,25 +70,25 @@ body::after {
/* Subtle Flicker */
@keyframes flicker {
0% { opacity: 0.97; }
- 5% { opacity: 0.95; }
- 10% { opacity: 0.9; }
+ 5% { opacity: 0.85; }
+ 10% { opacity: 0.8; }
15% { opacity: 0.95; }
- 20% { opacity: 0.99; }
+ 20% { opacity: 0.88; }
25% { opacity: 0.95; }
- 30% { opacity: 0.9; }
+ 30% { opacity: 0.8; }
35% { opacity: 0.96; }
- 40% { opacity: 0.98; }
+ 40% { opacity: 0.82; }
45% { opacity: 0.95; }
50% { opacity: 0.99; }
- 55% { opacity: 0.93; }
- 60% { opacity: 0.9; }
+ 55% { opacity: 0.83; }
+ 60% { opacity: 0.8; }
65% { opacity: 0.96; }
70% { opacity: 1; }
- 75% { opacity: 0.97; }
+ 75% { opacity: 0.87; }
80% { opacity: 0.95; }
- 85% { opacity: 0.92; }
+ 85% { opacity: 0.82; }
90% { opacity: 0.98; }
- 95% { opacity: 0.99; }
+ 95% { opacity: 0.89; }
100% { opacity: 0.94; }
}