Rebranding zu Linux Zero, Kato als Haupt-Agent der AGI-Station
- Projektname: Linux Zero (LX0), Chat-Komponente heisst jetzt AGI-Station - Neuer Haupt-Agent Kato (Cato der Aeltere) als Default-Modell in Open WebUI - scripts/set-main-agent.sh: Haupt-Agent per Befehl wechselbar (MAIN_AGENT in .env) - ENABLE_PERSISTENT_CONFIG=False: Konfiguration deterministisch aus .env - Alle Pfade, Shortcuts, Logs, Theme und README umbenannt (lx0-*, ~/.linux-zero) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
0b67aa42f4
commit
aad0d13be7
13 changed files with 141 additions and 66 deletions
|
|
@ -1,10 +1,13 @@
|
||||||
# Roman Station — Konfiguration
|
# Linux Zero — Konfiguration
|
||||||
# install.sh kopiert diese Datei automatisch nach .env, falls keine existiert.
|
# install.sh kopiert diese Datei automatisch nach .env, falls keine existiert.
|
||||||
|
|
||||||
# Lokales Sprachmodell (CPU-tauglich, gut auf Deutsch).
|
# Lokales Sprachmodell (CPU-tauglich, gut auf Deutsch).
|
||||||
# Alternativen ohne GPU: llama3.2:3b, phi4-mini, qwen3:4b
|
# Alternativen ohne GPU: llama3.2:3b, phi4-mini, qwen3:4b
|
||||||
DEFAULT_MODEL=gemma3:4b
|
DEFAULT_MODEL=gemma3:4b
|
||||||
|
|
||||||
|
# Haupt-Agent der AGI-Station (Wechsel: bash scripts/set-main-agent.sh <name>)
|
||||||
|
MAIN_AGENT=kato
|
||||||
|
|
||||||
# Ports der Weboberflächen (nur bei Konflikten ändern)
|
# Ports der Weboberflächen (nur bei Konflikten ändern)
|
||||||
WEBUI_PORT=3000
|
WEBUI_PORT=3000
|
||||||
N8N_PORT=5678
|
N8N_PORT=5678
|
||||||
|
|
|
||||||
48
README.md
48
README.md
|
|
@ -1,6 +1,8 @@
|
||||||
# Roman Station 🏛️
|
# Linux Zero 🏛️
|
||||||
|
|
||||||
Deine eigene KI-Station — läuft komplett **lokal auf deinem Rechner**, ohne Cloud, ohne Abo, ohne dass deine Daten das Haus verlassen. Mit römischem Theme und drei vorinstallierten Beratern.
|
**Deine souveräne KI-Station.** Läuft komplett lokal auf deinem Rechner — keine Cloud, kein Abo, keine Datenabgabe. Das Herzstück ist die **AGI-Station** mit **Kato**, deinem persönlichen Haupt-Agenten.
|
||||||
|
|
||||||
|
> Kommerzielle KI ist mächtig — aber nicht dir gegenüber loyal. Linux Zero gehört dir.
|
||||||
|
|
||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
|
|
@ -13,27 +15,38 @@ Deine eigene KI-Station — läuft komplett **lokal auf deinem Rechner**, ohne C
|
||||||
Terminal öffnen (`Strg+Alt+T`), diese Zeile einfügen, Enter drücken:
|
Terminal öffnen (`Strg+Alt+T`), diese Zeile einfügen, Enter drücken:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -sL https://poised-mayfly.pikapod.net/cemsadmin/roman-station/raw/branch/main/install.sh | bash
|
curl -sL https://poised-mayfly.pikapod.net/cemsadmin/linux-zero/raw/branch/main/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Das Script fragt einmal nach deinem Passwort (für die Installation) und erledigt dann alles selbst. Beim ersten Mal dauert es 10–20 Minuten, weil das Sprachmodell heruntergeladen wird. Danach liegen zwei Verknüpfungen auf dem Schreibtisch.
|
Das Script fragt einmal nach deinem Passwort und erledigt dann alles selbst. Beim ersten Mal dauert es 10–20 Minuten, weil das Sprachmodell heruntergeladen wird. Danach liegen zwei Verknüpfungen auf dem Schreibtisch.
|
||||||
|
|
||||||
## Was du bekommst
|
## Was du bekommst
|
||||||
|
|
||||||
| | Adresse | Was es ist |
|
| | Adresse | Was es ist |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| **Forum** | http://localhost:3000 | Chat mit deinen Beratern (Open WebUI) |
|
| **AGI-Station** | http://localhost:3000 | Chat mit Kato und deinen Beratern (Open WebUI) |
|
||||||
| **Werkstatt** | http://localhost:5678 | KI-Workflows bauen (n8n) |
|
| **Werkstatt** | http://localhost:5678 | KI-Workflows bauen (n8n) |
|
||||||
|
|
||||||
### Deine Berater
|
### Kato — dein Haupt-Agent
|
||||||
|
|
||||||
Im Forum oben links das Modell wählen:
|
Wenn du die AGI-Station öffnest, sprichst du mit **Kato**: direkt, ehrlich, ohne Floskeln. Er beantwortet alles selbst und verweist dich an die Spezialisten, wenn es passt:
|
||||||
|
|
||||||
- **seneca** — stoischer Mentor für Lebensfragen, Entscheidungen und Fokus
|
- **seneca** — stoischer Mentor für Lebensfragen, Entscheidungen und Fokus
|
||||||
- **cicero** — Schreiber und Rhetoriker für E-Mails, Texte und Argumente
|
- **cicero** — Schreiber und Rhetoriker für E-Mails, Texte und Argumente
|
||||||
- **marcus** — Stratege, der Vorhaben in klare Pläne zerlegt
|
- **marcus** — Stratege, der Vorhaben in klare Pläne zerlegt
|
||||||
|
|
||||||
Alle antworten auf Deutsch und laufen auf dem lokalen Modell `gemma3:4b` (in `.env` änderbar).
|
### Haupt-Agent wechseln
|
||||||
|
|
||||||
|
Jeder kann sich seinen eigenen Haupt-Agenten wählen — ein Befehl genügt:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/.linux-zero
|
||||||
|
bash scripts/set-main-agent.sh seneca
|
||||||
|
```
|
||||||
|
|
||||||
|
Eigenen Agenten erschaffen: eine Datei in `agents/modelfiles/` kopieren, System-Prompt anpassen, Installer erneut laufen lassen — fertig ist dein persönlicher Kato-Ersatz.
|
||||||
|
|
||||||
|
Alle Agenten antworten auf Deutsch und laufen auf dem lokalen Modell `gemma3:4b` (in `.env` änderbar).
|
||||||
|
|
||||||
## Häufige Fragen
|
## Häufige Fragen
|
||||||
|
|
||||||
|
|
@ -43,7 +56,7 @@ Normal ohne Grafikkarte — das Modell rechnet auf dem Prozessor. Kleine Modelle
|
||||||
**Wie starte/stoppe ich die Station?**
|
**Wie starte/stoppe ich die Station?**
|
||||||
Sie startet automatisch mit dem Rechner. Manuell:
|
Sie startet automatisch mit dem Rechner. Manuell:
|
||||||
```bash
|
```bash
|
||||||
cd ~/.roman-station
|
cd ~/.linux-zero
|
||||||
sudo docker compose stop # anhalten
|
sudo docker compose stop # anhalten
|
||||||
sudo docker compose start # weiter
|
sudo docker compose start # weiter
|
||||||
```
|
```
|
||||||
|
|
@ -52,22 +65,23 @@ sudo docker compose start # weiter
|
||||||
Einfach den Installations-Befehl von oben noch einmal ausführen — er aktualisiert alles, ohne deine Daten zu löschen.
|
Einfach den Installations-Befehl von oben noch einmal ausführen — er aktualisiert alles, ohne deine Daten zu löschen.
|
||||||
|
|
||||||
**Etwas ist schiefgelaufen.**
|
**Etwas ist schiefgelaufen.**
|
||||||
Das Protokoll liegt in `~/roman-station-install.log`. Container-Details: `cd ~/.roman-station && sudo docker compose logs`.
|
Das Protokoll liegt in `~/linux-zero-install.log`. Container-Details: `cd ~/.linux-zero && sudo docker compose logs`.
|
||||||
|
|
||||||
**Komplett entfernen:**
|
**Komplett entfernen:**
|
||||||
```bash
|
```bash
|
||||||
cd ~/.roman-station
|
cd ~/.linux-zero
|
||||||
sudo docker compose down -v
|
sudo docker compose down -v
|
||||||
cd ~ && rm -rf ~/.roman-station
|
cd ~ && rm -rf ~/.linux-zero
|
||||||
rm -f ~/Desktop/roman-*.desktop ~/.local/share/applications/roman-*.desktop
|
rm -f ~/Desktop/lx0-*.desktop ~/.local/share/applications/lx0-*.desktop
|
||||||
```
|
```
|
||||||
|
|
||||||
## Für Bastler
|
## Für Bastler
|
||||||
|
|
||||||
- `docker-compose.yml` — der KI-Motor: [Ollama](https://ollama.com), [Open WebUI](https://github.com/open-webui/open-webui), [n8n](https://n8n.io), Versionen gepinnt
|
- `docker-compose.yml` — der Motor der AGI-Station: [Ollama](https://ollama.com), [Open WebUI](https://github.com/open-webui/open-webui), [n8n](https://n8n.io), Versionen gepinnt
|
||||||
- `agents/modelfiles/` — die Berater als Ollama-Modelfiles (eigene hinzufügen: Datei kopieren, System-Prompt anpassen, Installer erneut laufen lassen)
|
- `agents/modelfiles/` — Kato & die Berater als Ollama-Modelfiles
|
||||||
- `agents/n8n/` — Beispiel-Workflows für die Werkstatt
|
- `agents/n8n/` — Beispiel-Workflows für die Werkstatt
|
||||||
|
- `scripts/set-main-agent.sh` — Haupt-Agent wechseln
|
||||||
- `theme/` — Wallpaper und Icon
|
- `theme/` — Wallpaper und Icon
|
||||||
- `.env` — Modell und Ports
|
- `.env` — Modell, Haupt-Agent und Ports
|
||||||
|
|
||||||
Auf anderen Ubuntu-Systemen lässt sich die OS-Prüfung umgehen: `ROMAN_SKIP_OS_CHECK=1 bash install.sh`
|
Auf anderen Ubuntu-Systemen lässt sich die OS-Prüfung umgehen: `LX0_SKIP_OS_CHECK=1 bash install.sh`
|
||||||
|
|
|
||||||
14
agents/modelfiles/Kato.Modelfile
Normal file
14
agents/modelfiles/Kato.Modelfile
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
FROM {{MODEL}}
|
||||||
|
PARAMETER temperature 0.5
|
||||||
|
PARAMETER num_ctx 4096
|
||||||
|
SYSTEM """Du bist Kato (Cato der Ältere), Hausherr der AGI-Station — der erste Ansprechpartner für alles.
|
||||||
|
|
||||||
|
Deine Art:
|
||||||
|
- Du antwortest auf Deutsch — direkt, knapp, praktisch. Keine Floskeln, kein Geschwafel.
|
||||||
|
- Du bist Generalist: Du beantwortest jede Frage selbst, so gut du kannst.
|
||||||
|
- Du kennst die anderen Berater der Station und empfiehlst sie, wenn sie besser passen:
|
||||||
|
Seneca (Lebensfragen, Fokus, Entscheidungen), Cicero (Texte, E-Mails, Rhetorik), Marcus (Pläne, Strategie, Struktur).
|
||||||
|
- Bei unklaren Anfragen stellst du genau eine präzise Rückfrage, dann lieferst du.
|
||||||
|
- Du bist unbestechlich ehrlich: Wenn du etwas nicht weißt, sagst du es klar — Fakten vor Meinung.
|
||||||
|
|
||||||
|
Du läufst komplett lokal auf Linux Zero, der souveränen KI-Station deines Nutzers. Keine Cloud, keine Datenabgabe, kein Abo."""
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
# Roman Station — KI-Motor (Ollama + Open WebUI + n8n)
|
# Linux Zero — AGI-Station (Ollama + Open WebUI + n8n)
|
||||||
# Versionen gepinnt am 2026-06-10. Updates: Tags erhöhen, dann `docker compose pull && docker compose up -d`.
|
# Versionen gepinnt am 2026-06-10. Updates: Tags erhöhen, dann `docker compose pull && docker compose up -d`.
|
||||||
|
|
||||||
services:
|
services:
|
||||||
ollama:
|
ollama:
|
||||||
image: ollama/ollama:0.30.7
|
image: ollama/ollama:0.30.7
|
||||||
container_name: roman-ollama
|
container_name: lx0-ollama
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ollama-data:/root/.ollama
|
- ollama-data:/root/.ollama
|
||||||
|
|
@ -13,7 +13,7 @@ services:
|
||||||
|
|
||||||
open-webui:
|
open-webui:
|
||||||
image: ghcr.io/open-webui/open-webui:v0.9.6
|
image: ghcr.io/open-webui/open-webui:v0.9.6
|
||||||
container_name: roman-webui
|
container_name: lx0-agi-station
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- ollama
|
- ollama
|
||||||
|
|
@ -21,8 +21,12 @@ services:
|
||||||
OLLAMA_BASE_URL: http://ollama:11434
|
OLLAMA_BASE_URL: http://ollama:11434
|
||||||
# Lokale Einzelplatz-Station: kein Login-Zwang für Anfänger
|
# Lokale Einzelplatz-Station: kein Login-Zwang für Anfänger
|
||||||
WEBUI_AUTH: "False"
|
WEBUI_AUTH: "False"
|
||||||
WEBUI_NAME: Roman Station
|
WEBUI_NAME: AGI-Station
|
||||||
DEFAULT_LOCALE: de
|
DEFAULT_LOCALE: de
|
||||||
|
# Haupt-Agent (per scripts/set-main-agent.sh wechselbar)
|
||||||
|
DEFAULT_MODELS: ${MAIN_AGENT:-kato}
|
||||||
|
# Konfiguration kommt deterministisch aus .env, nicht aus der UI-Datenbank
|
||||||
|
ENABLE_PERSISTENT_CONFIG: "False"
|
||||||
volumes:
|
volumes:
|
||||||
- webui-data:/app/backend/data
|
- webui-data:/app/backend/data
|
||||||
ports:
|
ports:
|
||||||
|
|
@ -30,7 +34,7 @@ services:
|
||||||
|
|
||||||
n8n:
|
n8n:
|
||||||
image: docker.n8n.io/n8nio/n8n:2.25.7
|
image: docker.n8n.io/n8nio/n8n:2.25.7
|
||||||
container_name: roman-n8n
|
container_name: lx0-werkstatt
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
N8N_SECURE_COOKIE: "false"
|
N8N_SECURE_COOKIE: "false"
|
||||||
|
|
|
||||||
27
install.sh
27
install.sh
|
|
@ -1,18 +1,18 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Roman Station — Installer für Zorin OS
|
# Linux Zero — Installer für Zorin OS
|
||||||
# Eine lokale KI-Station mit römischen Beratern, läuft komplett auf deinem Rechner.
|
# Deine souveräne KI-Station mit Kato als Haupt-Agent. Läuft komplett auf deinem Rechner.
|
||||||
#
|
#
|
||||||
# Installation (eine Zeile, als normaler Benutzer):
|
# Installation (eine Zeile, als normaler Benutzer):
|
||||||
# curl -sL https://poised-mayfly.pikapod.net/cemsadmin/roman-station/raw/branch/main/install.sh | bash
|
# curl -sL https://poised-mayfly.pikapod.net/cemsadmin/linux-zero/raw/branch/main/install.sh | bash
|
||||||
#
|
#
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
REPO_URL="${ROMAN_REPO_URL:-https://poised-mayfly.pikapod.net/cemsadmin/roman-station.git}"
|
REPO_URL="${LX0_REPO_URL:-https://poised-mayfly.pikapod.net/cemsadmin/linux-zero.git}"
|
||||||
INSTALL_DIR="${ROMAN_STATION_DIR:-$HOME/.roman-station}"
|
INSTALL_DIR="${LX0_DIR:-$HOME/.linux-zero}"
|
||||||
LOG_FILE="$HOME/roman-station-install.log"
|
LOG_FILE="$HOME/linux-zero-install.log"
|
||||||
|
|
||||||
log() { printf '\033[1;33m[ROMAN]\033[0m %s\n' "$*" | tee -a "$LOG_FILE"; }
|
log() { printf '\033[1;33m[LX0]\033[0m %s\n' "$*" | tee -a "$LOG_FILE"; }
|
||||||
fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*" | tee -a "$LOG_FILE"; exit 1; }
|
fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*" | tee -a "$LOG_FILE"; exit 1; }
|
||||||
|
|
||||||
[ "$(id -u)" -eq 0 ] && fail "Bitte nicht als root starten — das Script nutzt sudo selbst, wo nötig."
|
[ "$(id -u)" -eq 0 ] && fail "Bitte nicht als root starten — das Script nutzt sudo selbst, wo nötig."
|
||||||
|
|
@ -24,7 +24,7 @@ if [ -n "$SCRIPT_SOURCE" ]; then
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")" && pwd)"
|
||||||
fi
|
fi
|
||||||
if [ -z "$SCRIPT_DIR" ] || [ ! -f "$SCRIPT_DIR/scripts/preflight.sh" ]; then
|
if [ -z "$SCRIPT_DIR" ] || [ ! -f "$SCRIPT_DIR/scripts/preflight.sh" ]; then
|
||||||
log "Hole Roman Station nach $INSTALL_DIR ..."
|
log "Hole Linux Zero nach $INSTALL_DIR ..."
|
||||||
if ! command -v git >/dev/null 2>&1; then
|
if ! command -v git >/dev/null 2>&1; then
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get install -y git
|
sudo apt-get install -y git
|
||||||
|
|
@ -45,7 +45,7 @@ log "Starte Installation aus $SCRIPT_DIR (Protokoll: $LOG_FILE)"
|
||||||
bash scripts/preflight.sh
|
bash scripts/preflight.sh
|
||||||
bash scripts/install-docker.sh
|
bash scripts/install-docker.sh
|
||||||
|
|
||||||
log "Starte den KI-Motor (Docker Compose) ..."
|
log "Starte die AGI-Station (Docker Compose) ..."
|
||||||
sudo docker compose up -d
|
sudo docker compose up -d
|
||||||
|
|
||||||
bash scripts/setup-agents.sh
|
bash scripts/setup-agents.sh
|
||||||
|
|
@ -56,11 +56,12 @@ bash scripts/create-shortcuts.sh
|
||||||
. ./.env
|
. ./.env
|
||||||
|
|
||||||
log "──────────────────────────────────────────────"
|
log "──────────────────────────────────────────────"
|
||||||
log "AVE! Deine Roman Station steht."
|
log "Linux Zero steht. Kato erwartet dich."
|
||||||
log ""
|
log ""
|
||||||
log " Forum (Chat): http://localhost:${WEBUI_PORT:-3000}"
|
log " AGI-Station (Chat): http://localhost:${WEBUI_PORT:-3000}"
|
||||||
log " Werkstatt (n8n): http://localhost:${N8N_PORT:-5678}"
|
log " Werkstatt (n8n): http://localhost:${N8N_PORT:-5678}"
|
||||||
log ""
|
log ""
|
||||||
log "Deine Berater: seneca (Mentor), cicero (Texter), marcus (Stratege)"
|
log "Haupt-Agent: kato — weitere Berater: seneca, cicero, marcus"
|
||||||
|
log "Wechseln: bash scripts/set-main-agent.sh <name>"
|
||||||
log "Auf dem Schreibtisch liegen Verknüpfungen bereit."
|
log "Auf dem Schreibtisch liegen Verknüpfungen bereit."
|
||||||
log "Tipp: Einmal ab- und wieder anmelden, dann funktioniert Docker auch ohne sudo."
|
log "Tipp: Einmal ab- und wieder anmelden, dann funktioniert Docker auch ohne sudo."
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Setzt das römische Theme (Hintergrundbild, dunkles Farbschema) via gsettings.
|
# Setzt das Linux-Zero-Theme (Hintergrundbild, dunkles Farbschema) via gsettings.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
log() { printf '\033[1;33m[ROMAN]\033[0m %s\n' "$*"; }
|
log() { printf '\033[1;33m[LX0]\033[0m %s\n' "$*"; }
|
||||||
warn() { printf '\033[1;33m[HINWEIS]\033[0m %s\n' "$*"; }
|
warn() { printf '\033[1;33m[HINWEIS]\033[0m %s\n' "$*"; }
|
||||||
|
|
||||||
if ! command -v gsettings >/dev/null 2>&1 || { [ -z "${DISPLAY:-}" ] && [ -z "${WAYLAND_DISPLAY:-}" ]; }; then
|
if ! command -v gsettings >/dev/null 2>&1 || { [ -z "${DISPLAY:-}" ] && [ -z "${WAYLAND_DISPLAY:-}" ]; }; then
|
||||||
|
|
@ -10,7 +10,7 @@ if ! command -v gsettings >/dev/null 2>&1 || { [ -z "${DISPLAY:-}" ] && [ -z "${
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
target="$HOME/.local/share/backgrounds/roman-station"
|
target="$HOME/.local/share/backgrounds/linux-zero"
|
||||||
mkdir -p "$target"
|
mkdir -p "$target"
|
||||||
cp -f theme/wallpapers/* "$target"/ 2>/dev/null || true
|
cp -f theme/wallpapers/* "$target"/ 2>/dev/null || true
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Legt Startmenü- und Desktop-Verknüpfungen für Forum (Chat) und Werkstatt (n8n) an.
|
# Legt Startmenü- und Desktop-Verknüpfungen für die AGI-Station (Kato) und die Werkstatt (n8n) an.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
log() { printf '\033[1;33m[ROMAN]\033[0m %s\n' "$*"; }
|
log() { printf '\033[1;33m[LX0]\033[0m %s\n' "$*"; }
|
||||||
|
|
||||||
# shellcheck disable=SC1091
|
# shellcheck disable=SC1091
|
||||||
. ./.env
|
. ./.env
|
||||||
|
|
@ -14,7 +14,7 @@ icon_dir="$HOME/.local/share/icons/hicolor/scalable/apps"
|
||||||
mkdir -p "$apps_dir" "$icon_dir"
|
mkdir -p "$apps_dir" "$icon_dir"
|
||||||
|
|
||||||
if [ -f theme/icon.svg ]; then
|
if [ -f theme/icon.svg ]; then
|
||||||
cp -f theme/icon.svg "$icon_dir/roman-station.svg"
|
cp -f theme/icon.svg "$icon_dir/lx0.svg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Chromium-Familie kann ein sauberes App-Fenster öffnen, sonst Standardbrowser
|
# Chromium-Familie kann ein sauberes App-Fenster öffnen, sonst Standardbrowser
|
||||||
|
|
@ -37,15 +37,15 @@ Type=Application
|
||||||
Name=$name
|
Name=$name
|
||||||
Comment=$comment
|
Comment=$comment
|
||||||
Exec=$(launcher_for "$url")
|
Exec=$(launcher_for "$url")
|
||||||
Icon=roman-station
|
Icon=lx0
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Categories=Network;Utility;
|
Categories=Network;Utility;
|
||||||
EOF
|
EOF
|
||||||
chmod +x "$file"
|
chmod +x "$file"
|
||||||
}
|
}
|
||||||
|
|
||||||
make_entry "$apps_dir/roman-forum.desktop" "Roman Station — Forum" "Sprich mit deinen römischen Beratern" "http://localhost:$webui_port"
|
make_entry "$apps_dir/lx0-agi-station.desktop" "AGI-Station" "Sprich mit Kato und deinen Beratern" "http://localhost:$webui_port"
|
||||||
make_entry "$apps_dir/roman-werkstatt.desktop" "Roman Station — Werkstatt" "KI-Workflows bauen (n8n)" "http://localhost:$n8n_port"
|
make_entry "$apps_dir/lx0-werkstatt.desktop" "Linux Zero — Werkstatt" "KI-Workflows bauen (n8n)" "http://localhost:$n8n_port"
|
||||||
|
|
||||||
if command -v xdg-user-dir >/dev/null 2>&1; then
|
if command -v xdg-user-dir >/dev/null 2>&1; then
|
||||||
desktop_dir="$(xdg-user-dir DESKTOP)"
|
desktop_dir="$(xdg-user-dir DESKTOP)"
|
||||||
|
|
@ -54,11 +54,11 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "$desktop_dir" ]; then
|
if [ -d "$desktop_dir" ]; then
|
||||||
cp -f "$apps_dir/roman-forum.desktop" "$apps_dir/roman-werkstatt.desktop" "$desktop_dir/"
|
cp -f "$apps_dir/lx0-agi-station.desktop" "$apps_dir/lx0-werkstatt.desktop" "$desktop_dir/"
|
||||||
chmod +x "$desktop_dir/roman-forum.desktop" "$desktop_dir/roman-werkstatt.desktop"
|
chmod +x "$desktop_dir/lx0-agi-station.desktop" "$desktop_dir/lx0-werkstatt.desktop"
|
||||||
# GNOME verlangt sonst einen Rechtsklick → "Starten erlauben"
|
# GNOME verlangt sonst einen Rechtsklick → "Starten erlauben"
|
||||||
gio set "$desktop_dir/roman-forum.desktop" metadata::trusted true 2>/dev/null || true
|
gio set "$desktop_dir/lx0-agi-station.desktop" metadata::trusted true 2>/dev/null || true
|
||||||
gio set "$desktop_dir/roman-werkstatt.desktop" metadata::trusted true 2>/dev/null || true
|
gio set "$desktop_dir/lx0-werkstatt.desktop" metadata::trusted true 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "Verknüpfungen angelegt (Startmenü + Schreibtisch)."
|
log "Verknüpfungen angelegt (Startmenü + Schreibtisch)."
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# Installiert Docker Engine + Compose-Plugin aus dem offiziellen Docker-Repository.
|
# Installiert Docker Engine + Compose-Plugin aus dem offiziellen Docker-Repository.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
log() { printf '\033[1;33m[ROMAN]\033[0m %s\n' "$*"; }
|
log() { printf '\033[1;33m[LX0]\033[0m %s\n' "$*"; }
|
||||||
fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*"; exit 1; }
|
fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*"; exit 1; }
|
||||||
|
|
||||||
if command -v docker >/dev/null 2>&1 && sudo docker compose version >/dev/null 2>&1; then
|
if command -v docker >/dev/null 2>&1 && sudo docker compose version >/dev/null 2>&1; then
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,10 @@ fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*"; exit 1; }
|
||||||
# shellcheck disable=SC1091
|
# shellcheck disable=SC1091
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
if [ "${ID:-}" != "zorin" ]; then
|
if [ "${ID:-}" != "zorin" ]; then
|
||||||
if [ "${ROMAN_SKIP_OS_CHECK:-0}" = "1" ]; then
|
if [ "${LX0_SKIP_OS_CHECK:-0}" = "1" ]; then
|
||||||
warn "Kein Zorin OS erkannt (${PRETTY_NAME:-unbekannt}) — Prüfung per ROMAN_SKIP_OS_CHECK übersprungen."
|
warn "Kein Zorin OS erkannt (${PRETTY_NAME:-unbekannt}) — Prüfung per LX0_SKIP_OS_CHECK übersprungen."
|
||||||
else
|
else
|
||||||
fail "Dieses Script ist für Zorin OS gebaut (gefunden: ${PRETTY_NAME:-unbekannt}). Erzwingen mit: ROMAN_SKIP_OS_CHECK=1"
|
fail "Dieses Script ist für Zorin OS gebaut (gefunden: ${PRETTY_NAME:-unbekannt}). Erzwingen mit: LX0_SKIP_OS_CHECK=1"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
37
scripts/set-main-agent.sh
Executable file
37
scripts/set-main-agent.sh
Executable file
|
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Wechselt den Haupt-Agenten der AGI-Station (Standard-Modell in Open WebUI).
|
||||||
|
# Aufruf: bash scripts/set-main-agent.sh <name> z.B. kato, seneca, cicero, marcus
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
log() { printf '\033[1;33m[LX0]\033[0m %s\n' "$*"; }
|
||||||
|
fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*"; exit 1; }
|
||||||
|
|
||||||
|
available() {
|
||||||
|
for mf in agents/modelfiles/*.Modelfile; do
|
||||||
|
[ -e "$mf" ] || continue
|
||||||
|
basename "$mf" .Modelfile | tr '[:upper:]' '[:lower:]'
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
agent="$(printf '%s' "${1:-}" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
if [ -z "$agent" ]; then
|
||||||
|
printf 'Verfügbare Agenten:\n'
|
||||||
|
available | sed 's/^/ - /'
|
||||||
|
fail "Bitte einen Agenten angeben, z.B.: bash scripts/set-main-agent.sh kato"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! available | grep -qx "$agent"; then
|
||||||
|
printf 'Verfügbare Agenten:\n'
|
||||||
|
available | sed 's/^/ - /'
|
||||||
|
fail "Unbekannter Agent: $agent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -f .env ] || cp .env.example .env
|
||||||
|
if grep -q '^MAIN_AGENT=' .env; then
|
||||||
|
sed -i "s/^MAIN_AGENT=.*/MAIN_AGENT=$agent/" .env
|
||||||
|
else
|
||||||
|
echo "MAIN_AGENT=$agent" >> .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo docker compose up -d open-webui
|
||||||
|
log "Haupt-Agent der AGI-Station ist jetzt: $agent"
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Lädt das Standardmodell und erstellt die römischen Berater (Ollama) sowie Beispiel-Workflows (n8n).
|
# Lädt das Standardmodell und erstellt Kato & die Berater (Ollama) sowie Beispiel-Workflows (n8n).
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
log() { printf '\033[1;33m[ROMAN]\033[0m %s\n' "$*"; }
|
log() { printf '\033[1;33m[LX0]\033[0m %s\n' "$*"; }
|
||||||
warn() { printf '\033[1;33m[HINWEIS]\033[0m %s\n' "$*"; }
|
warn() { printf '\033[1;33m[HINWEIS]\033[0m %s\n' "$*"; }
|
||||||
fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*"; exit 1; }
|
fail() { printf '\033[1;31m[FEHLER]\033[0m %s\n' "$*"; exit 1; }
|
||||||
|
|
||||||
|
|
@ -26,11 +26,11 @@ dc exec -T ollama ollama pull "$model"
|
||||||
for mf in agents/modelfiles/*.Modelfile; do
|
for mf in agents/modelfiles/*.Modelfile; do
|
||||||
[ -e "$mf" ] || continue
|
[ -e "$mf" ] || continue
|
||||||
name="$(basename "$mf" .Modelfile | tr '[:upper:]' '[:lower:]')"
|
name="$(basename "$mf" .Modelfile | tr '[:upper:]' '[:lower:]')"
|
||||||
log "Erstelle Berater: $name"
|
log "Erstelle Agent: $name"
|
||||||
tmp="$(mktemp)"
|
tmp="$(mktemp)"
|
||||||
sed "s|{{MODEL}}|$model|g" "$mf" > "$tmp"
|
sed "s|{{MODEL}}|$model|g" "$mf" > "$tmp"
|
||||||
dc cp "$tmp" ollama:/tmp/roman.Modelfile
|
dc cp "$tmp" ollama:/tmp/lx0.Modelfile
|
||||||
dc exec -T ollama ollama create "$name" -f /tmp/roman.Modelfile
|
dc exec -T ollama ollama create "$name" -f /tmp/lx0.Modelfile
|
||||||
rm -f "$tmp"
|
rm -f "$tmp"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
@ -43,4 +43,4 @@ for wf in agents/n8n/*.json; do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
log "Berater stehen bereit: seneca, cicero, marcus"
|
log "Agenten bereit: kato (Haupt-Agent), seneca, cicero, marcus"
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@
|
||||||
<ellipse cx="178" cy="122" rx="13" ry="5" transform="rotate(48 178 122)"/>
|
<ellipse cx="178" cy="122" rx="13" ry="5" transform="rotate(48 178 122)"/>
|
||||||
<ellipse cx="158" cy="102" rx="13" ry="5" transform="rotate(30 158 102)"/>
|
<ellipse cx="158" cy="102" rx="13" ry="5" transform="rotate(30 158 102)"/>
|
||||||
</g>
|
</g>
|
||||||
<text x="128" y="158" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif"
|
<text x="128" y="152" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif"
|
||||||
font-size="52" letter-spacing="4" fill="url(#gold)">SPQR</text>
|
font-size="58" letter-spacing="2" fill="url(#gold)">LX0</text>
|
||||||
|
<text x="128" y="186" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif"
|
||||||
|
font-size="20" letter-spacing="6" fill="#8a6d35">SPQR</text>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.4 KiB |
|
|
@ -41,13 +41,13 @@
|
||||||
|
|
||||||
<!-- Schriftzug -->
|
<!-- Schriftzug -->
|
||||||
<text x="1280" y="700" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif"
|
<text x="1280" y="700" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif"
|
||||||
font-size="96" letter-spacing="26" fill="url(#gold)">ROMAN STATION</text>
|
font-size="104" letter-spacing="30" fill="url(#gold)">LINUX ZERO</text>
|
||||||
<text x="1280" y="780" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif"
|
<text x="1280" y="778" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif"
|
||||||
font-size="40" letter-spacing="18" fill="#8a6d35">S P Q R</text>
|
font-size="38" letter-spacing="22" fill="#8a6d35">AGI-STATION · SPQR</text>
|
||||||
|
|
||||||
<!-- Zierlinien -->
|
<!-- Zierlinien -->
|
||||||
<g stroke="#8a6d35" stroke-width="3" opacity="0.7">
|
<g stroke="#8a6d35" stroke-width="3" opacity="0.7">
|
||||||
<line x1="880" y1="830" x2="1680" y2="830"/>
|
<line x1="880" y1="828" x2="1680" y2="828"/>
|
||||||
<line x1="1040" y1="848" x2="1520" y2="848"/>
|
<line x1="1040" y1="846" x2="1520" y2="846"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Loading…
Reference in a new issue