Simplify Athena runtime and document current architecture

This commit is contained in:
Mikei386 committed 2026-08-30 22:11:26 +02:00
1 parent 9bc7d9803a
commit 0b927d47b9
56 files changed
+1276 -4712

No files matched your search

-9
View File
@@ -1,9 +0,0 @@
# Create a dedicated fine-grained GitHub token. Grant repository contents and
# metadata read-only; do not grant write permissions. Keep the real file only
# at /etc/mike-ai/github-mcp.env with mode 0600.
GITHUB_PERSONAL_ACCESS_TOKEN=
# Four deliberately bounded repository-reading tools. Do not replace this
# with the broad default toolsets unless the resulting schemas were reviewed.
GITHUB_TOOLS=search_repositories,get_repository_tree,get_file_contents,search_code
GITHUB_READ_ONLY=1
+3 -10
View File
@@ -3,7 +3,7 @@
AI_HOSTNAME=ki-host
ADMIN_USER=mike
MODEL_DIR=/srv/mike-ai/models
MODEL_DIR=/data/models
# Installing a new NVIDIA driver can require one reboot. In that case this
# installer exits with code 20 (NVIDIA) or 21 (stable NIC rename); rerun the
@@ -15,8 +15,8 @@ NVIDIA_DRIVER_BRANCH=
NVIDIA_MIN_DRIVER_MAJOR=570
TEXT_GPU_DEVICES=0
SECONDARY_GPU_DEVICES=1
IMAGE_GPU_DEVICES=0
FLUX_MODEL_DIR=/data/models/FLUX.2-klein-4B
IMAGE_GPU_DEVICES=1
Z_IMAGE_MODEL_DIR=/data/models/Z-Image-Turbo
# Headless remote reachability. Firmware power-loss recovery is configured
# separately once at the physical machine.
@@ -88,13 +88,6 @@ UNCENSORED_MTP_MAX=2
EXPERIMENTAL_CONTEXT=76800
LLAMA_THREADS=6
LLAMA_THREADS_BATCH=6
OPENWEBUI_IMAGE=mike-ai/openwebui:main-01f4282-tool-final-v3
OPENWEBUI_ENABLE_SIGNUP=false
OPENWEBUI_ENABLE_FOLLOW_UP_GENERATION=false
# Removable community Hermes chat surface. Set false to keep only the official
# Hermes Dashboard/API and native clients.
INSTALL_HERMES_WEBUI=true
HERMES_WEBUI_IMAGE=mike-ai/hermes-webui:0.52.113-hermes-source-v1
PIPER_TTS_VERSION=1.6.0
PIPER_VOICE=de_DE-thorsten-high
XTTS_IMAGE=ghcr.io/coqui-ai/xtts-streaming-server:latest-cuda121@sha256:f7fb3b1f9d4bc88af94da1b5959d8002f1e0b003c97557164034eb8a29f01b90
-47
View File
@@ -1,47 +0,0 @@
{
"server": {
"id": "himalaya",
"hermes_id": "himalaya",
"name": "Himalaya Mail",
"description": "Apple-unabhängiger Mailzugriff über die Himalaya CLI. Lesen, suchen und Anhänge verwalten; schreibende Mailaktionen nur auf ausdrücklichen Auftrag.",
"url": "http://192.168.1.2:8787/mcp/himalaya",
"clients": ["hermes"],
"timeout": 300,
"deployment": {
"version": "himalaya-mcp 2.1.2 / himalaya-cli 2.1.0",
"source": "https://github.com/Data-Wise/himalaya-mcp",
"required_env": ["HIMALAYA_CONFIG"],
"required_files": ["himalaya-config.toml"]
},
"hub": {
"type": "stdio",
"secret_file": "himalaya.env",
"command": "/usr/local/bin/run-with-env",
"args": [
"/run/secrets/mcphub/himalaya.env",
"--",
"node",
"/app/data/extensions/himalaya/index.js"
],
"env": {
"HIMALAYA_BINARY": "/app/data/extensions/himalaya/himalaya",
"MCP_TRANSPORT": "stdio"
},
"enabled": false
}
},
"artifacts": [
{
"source": "/app/data/work/himalaya/himalaya",
"path": "himalaya",
"sha256": "7bc31ca0ea596218d97f1b2637e14c6653b1ebf9741711ac0f8a675384d67472",
"mode": "0755"
},
{
"source": "/app/data/work/himalaya/index.js",
"path": "index.js",
"sha256": "c8a94a46b33e3e683d38bdfbd5d84f4441e4668780facb5f3e90fc22e68ab683",
"mode": "0644"
}
]
}
-186
View File
@@ -1,186 +0,0 @@
{
"version": 1,
"servers": [
{
"id": "mcphub-all",
"hermes_id": "mcphub",
"name": "MCPHub",
"description": "Zentraler Zugang zu allen auf Unraid aktivierten MCP-Servern. Neue Server erscheinen nach einem MCP-Reload ohne Änderung der Hermes-Konfiguration.",
"url": "http://192.168.1.2:8787/mcp/hermes",
"clients": ["hermes"],
"env_file": "/etc/mike-ai/mcphub-client.env",
"key_env": "MCPHUB_BEARER_TOKEN",
"auth_type": "bearer",
"timeout": 900
},
{
"id": "mcphub-admin-local",
"name": "MCPHub Administration",
"description": "Installiert und verwaltet HTTP-, npm- und Python-MCPs direkt über die offizielle MCPHub-API. Kein Unraid-Terminal erforderlich.",
"url": "http://192.168.1.2:8787/mcp/mcphub-admin",
"clients": [],
"timeout": 300,
"hub": {
"type": "stdio",
"command": "python3",
"args": ["/opt/casaderoll/mcps/mcphub_admin_mcp.py"],
"env": {
"MCPHUB_API_URL": "http://127.0.0.1:3000/api",
"MCPHUB_API_TOKEN_FILE": "/app/data/client-token",
"MCPHUB_CLIENT_GROUP": "hermes"
},
"enabled": true
}
},
{
"id": "athena-operator-local",
"hermes_id": "athena-operator",
"name": "Athena Operator",
"description": "Zentrale administrative Schnittstelle für Athena. Beginne mit athena_operator_inspect(subject=guide). Verwaltet Docker, Modelle, MCPs, Git und Backups; Stromversorgung und Remote-Erreichbarkeit bleiben blockiert.",
"url": "http://192.168.1.2:8787/mcp/athena-operator",
"clients": ["openwebui"],
"env_file": "/etc/mike-ai/mcphub-client.env",
"key_env": "MCPHUB_BEARER_TOKEN",
"auth_type": "bearer",
"timeout": 900,
"hub": {
"type": "streamable-http",
"url": "http://192.168.1.212:8202/mcp",
"owner": "admin",
"enabled": true
}
},
{
"id": "github-local",
"hermes_id": "github",
"name": "GitHub (offiziell, read-only)",
"description": "Repository-Suche, echte Datei-Inhalte und gezielte Code-Suche. Keine rekursiven Komplettbäume oder Schreibzugriffe.",
"url": "http://192.168.1.2:8787/mcp/github",
"clients": ["openwebui"],
"env_file": "/etc/mike-ai/mcphub-client.env",
"key_env": "MCPHUB_BEARER_TOKEN",
"auth_type": "bearer",
"timeout": 300,
"functions": "github-search_repositories,github-get_file_contents,github-search_code",
"hub": {
"type": "stdio",
"command": "/usr/local/bin/run-with-env",
"args": ["/run/secrets/mcphub/github.env", "--", "/usr/local/bin/github-mcp-server", "stdio", "--read-only", "--tools", "search_repositories,get_file_contents,search_code"],
"enabled": true
}
},
{
"id": "homeassistant-local",
"hermes_id": "homeassistant-admin",
"name": "Home Assistant",
"description": "Entitäten, Zustände, Historie, Automationen, Dashboards, Diagnose und freigegebene YAML-Dateien. Änderungen nur auf ausdrücklichen Auftrag.",
"url": "http://192.168.1.2:8787/mcp/homeassistant",
"clients": ["openwebui"],
"env_file": "/etc/mike-ai/mcphub-client.env",
"key_env": "MCPHUB_BEARER_TOKEN",
"auth_type": "bearer",
"timeout": 300,
"hub": {
"type": "streamable-http",
"secret_file": "homeassistant.env",
"url": "${HASS_URL}/api/hass_mcp",
"headers": {"Authorization": "Bearer ${HASS_TOKEN}"},
"owner": "admin",
"enabled": true
}
},
{
"id": "arr-local",
"hermes_id": "arr",
"name": "Sonarr und Radarr",
"description": "Serien, Filme, Queue, Indexer-Suche und kompakte Medieninventare. Für Codec-Fragen radarr_movie_codec_inventory verwenden; keine rohen API-Requests oder Dateisystem-Scans.",
"url": "http://192.168.1.2:8787/mcp/arr",
"clients": ["openwebui"],
"env_file": "/etc/mike-ai/mcphub-client.env",
"key_env": "MCPHUB_BEARER_TOKEN",
"auth_type": "bearer",
"timeout": 600,
"hub": {
"type": "stdio",
"command": "/usr/local/bin/run-with-env",
"args": ["/run/secrets/mcphub/arr.env", "--", "arr-mcp", "--transport", "stdio", "--auth-type", "none"],
"enabled": true
}
},
{
"id": "navidrome-local",
"hermes_id": "navidrome",
"name": "Navidrome",
"description": "Persönliche Musikbibliothek: Titel, Alben, Künstler, Playlists, Favoriten und Hörverlauf.",
"url": "http://192.168.1.2:8787/mcp/navidrome",
"clients": ["openwebui"],
"env_file": "/etc/mike-ai/mcphub-client.env",
"key_env": "MCPHUB_BEARER_TOKEN",
"auth_type": "bearer",
"timeout": 300,
"hub": {
"type": "stdio",
"command": "/usr/local/bin/run-with-env",
"args": ["/run/secrets/mcphub/navidrome.env", "--", "node", "/opt/casaderoll/navidrome/dist/index.js"],
"env": {"MCP_TRANSPORT": "stdio", "MCP_HTTP_EXPOSE": "false", "WEBUI_ENABLED": "false"},
"enabled": true
}
},
{
"id": "mua",
"hermes_id": "unraid",
"name": "MUA (Unraid-Verwaltung)",
"description": "Unraid-Verwaltung über das vorhandene MUA-Plugin. Zustand zuerst lesen, engste Änderung ausführen, danach verifizieren.",
"url": "http://192.168.1.2:8787/mcp/unraid",
"key_env": "MCPHUB_BEARER_TOKEN",
"env_file": "/etc/mike-ai/mcphub-client.env",
"auth_type": "bearer",
"clients": ["openwebui"],
"timeout": 900,
"hub": {
"type": "streamable-http",
"secret_file": "mua.env",
"url": "${MUA_MCP_URL}",
"headers": {"Authorization": "Bearer ${MUA_MCP_BEARER_TOKEN}"},
"owner": "admin",
"enabled": true
}
},
{
"id": "fritzbox-local",
"hermes_id": "fritzbox",
"name": "FRITZ!Box",
"description": "FRITZ!Box-Status, WAN/Glasfaser, Netzwerkgeräte, WLAN und Telefonie. Zuerst die aktive WAN-Verbindung ermitteln; Änderungen nur auf ausdrücklichen Auftrag.",
"url": "http://192.168.1.2:8787/mcp/fritzbox",
"key_env": "MCPHUB_BEARER_TOKEN",
"env_file": "/etc/mike-ai/mcphub-client.env",
"auth_type": "bearer",
"clients": ["openwebui"],
"timeout": 300,
"tool_include": [
"fritzbox-list_services",
"fritzbox-list_actions",
"fritzbox-describe_action",
"fritzbox-call_action"
],
"hub": {
"type": "stdio",
"command": "/usr/local/bin/run-with-env",
"args": ["/run/secrets/mcphub/fritzbox.env", "--", "/opt/casaderoll/fritz-mcp"],
"enabled": true
}
},
{
"id": "mua-readonly-local",
"name": "MUA (Unraid read-only)",
"description": "Automatisch nutzbare Unraid-Diagnose für Container, Logs, System, Storage, Shares und Medieninventare. Keine Änderungen oder freie Shell.",
"url": "http://192.168.1.2:8787/mcp/unraid",
"key_env": "MCPHUB_BEARER_TOKEN",
"env_file": "/etc/mike-ai/mcphub-client.env",
"auth_type": "bearer",
"clients": ["openwebui"],
"timeout": 900,
"functions": "unraid-unraid_docker_list,unraid-unraid_docker_inspect,unraid-unraid_docker_logs,unraid-unraid_docker_analyze_logs,unraid-unraid_docker_processes,unraid-unraid_docker_stats,unraid-unraid_docker_info,unraid-unraid_docker_update_status,unraid-unraid_ca_search,unraid-unraid_network_inventory,unraid-unraid_network_list,unraid-unraid_network_inspect,unraid-unraid_network_host_state,unraid-unraid_network_audit_tcp,unraid-unraid_network_lan_probe,unraid-unraid_system_health,unraid-unraid_storage_status,unraid-unraid_disk_health,unraid-unraid_notifications_list,unraid-unraid_shares_list,unraid-unraid_share_inspect,unraid-unraid_files_inventory,unraid-unraid_system_connection_test,unraid-unraid_system_shell_readonly"
}
]
}
-4
View File
@@ -1,4 +0,0 @@
# Shared bearer key generated by platform/mcphub/configure-settings.py.
# The live value is stored in MCPHub appdata/client-token and copied only to
# /etc/mike-ai/mcphub-client.env on clients.
MCPHUB_BEARER_TOKEN=REPLACE_WITH_LOCAL_MCPHUB_CLIENT_TOKEN
-4
View File
@@ -1,4 +0,0 @@
# Root-only auf Athena unter /etc/mike-ai/mua-mcp.env ablegen (Modus 0600).
# Der echte Bearer-Token gehört niemals ins Git-Repository.
MUA_MCP_URL=http://192.168.1.2:3002/mcp
MUA_MCP_BEARER_TOKEN=REPLACE_WITH_MUA_BEARER_TOKEN
-8
View File
@@ -1,8 +0,0 @@
# Root-only deployment secret. Copy to /etc/mike-ai/navidrome-mcp.env,
# replace the two placeholders and chmod 600. Never commit the real file.
NAVIDROME_URL=http://192.168.1.2:4533
NAVIDROME_USERNAME=REPLACE_WITH_DEDICATED_USER
NAVIDROME_PASSWORD=REPLACE_WITH_DEDICATED_PASSWORD
# Optional: enables seven public Last.fm discovery/recommendation tools.
# The Last.fm shared secret is not required and must not be stored here.
LASTFM_API_KEY=
-23
View File
@@ -1,23 +0,0 @@
<?xml version="1.0"?>
<Container version="2">
<Name>ARR-MCP</Name>
<Repository>mike-ai/arr-mcp:1.1.0</Repository>
<Network>bridge</Network>
<Shell>sh</Shell>
<Privileged>false</Privileged>
<Project>https://git.casaderoll.de/michael/AI-Profile-Router</Project>
<ReadMe>https://git.casaderoll.de/michael/AI-Profile-Router/src/branch/main/services/arr-mcp/README.md</ReadMe>
<Overview>Eigenständiger Sonarr- und Radarr-MCP für Hermes und andere MCP-Clients. Das lokale Image wird reproduzierbar aus dem privaten Git gebaut. Der Container nutzt kompakte, modellfreundliche Werkzeuge, ein begrenztes Codec-Inventar und ticketgebundene Sonarr-Schreibaktionen. Konfiguration und Schlüssel liegen ausschließlich in Unraid-Appdata.</Overview>
<Category>AI:</Category>
<WebUI/>
<TemplateURL>false</TemplateURL>
<Icon>https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png</Icon>
<ExtraParams>--read-only --cap-drop=ALL --security-opt=no-new-privileges --pids-limit=256 --tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m --env-file=/mnt/nvme-storage/appdata/ARR-MCP/arr-mcp.env</ExtraParams>
<PostArgs/>
<CPUset/>
<DateInstalled/>
<DonateText/>
<DonateLink/>
<Requires>Das lokale Image mike-ai/arr-mcp:1.1.0 muss vorher mit services/arr-mcp/install-on-unraid.sh gebaut worden sein.</Requires>
<Config Name="MCP Port" Target="8000" Default="8207" Mode="tcp" Description="Streamable-HTTP-Endpunkt; MCP-URL ist http://UNRAID-IP:8207/mcp." Type="Port" Display="always" Required="true" Mask="false">8207</Config>
</Container>
@@ -1,50 +0,0 @@
<?xml version="1.0"?>
<Container version="2">
<Name>Hermes-Agent</Name>
<Repository>nousresearch/hermes-agent:latest</Repository>
<Registry>https://hub.docker.com/r/nousresearch/hermes-agent</Registry>
<Network>bridge</Network>
<MyIP/>
<Shell>bash</Shell>
<Privileged>false</Privileged>
<Support>https://github.com/NousResearch/hermes-agent/issues</Support>
<Project>https://hermes-agent.nousresearch.com/</Project>
<ReadMe>https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/docker.md</ReadMe>
<Overview>Offizieller Hermes Agent von Nous Research als persistenter Gateway- und Dashboard-Dienst. Dieses Unraid-Template verwendet unverändert das offizielle Image nousresearch/hermes-agent:latest; es enthält keinen Fork und keine eigene Build-Schicht. Sämtliche Konfigurationen, Sitzungen, Skills, Erinnerungen und Zugangsdaten liegen dauerhaft unter /opt/data im Unraid-Appdata.&#13;
&#13;
Vor dem ersten Start müssen sichere Werte für API-Key, Dashboard-Passwort und Dashboard-Secret eingetragen werden. Der Container startet den offiziellen Befehl gateway run.&#13;
&#13;
Dokumentation: https://hermes-agent.nousresearch.com/docs/user-guide/docker</Overview>
<Category>AI:</Category>
<WebUI>http://[IP]:[PORT:9119]/</WebUI>
<TemplateURL>false</TemplateURL>
<Icon>https://raw.githubusercontent.com/NousResearch/hermes-agent/main/web/public/favicon.ico</Icon>
<ExtraParams>--shm-size=1g</ExtraParams>
<PostArgs>gateway run</PostArgs>
<CPUset/>
<DateInstalled/>
<DonateText/>
<DonateLink/>
<Requires/>
<Config Name="Hermes Appdata" Target="/opt/data" Default="/mnt/nvme-storage/appdata/Hermes-Agent" Mode="rw" Description="Einzige persistente Datenquelle: Konfiguration, Schlüssel, Sitzungen, Skills, Erinnerungen, Logs und Arbeitszustand. Wird vom Unraid-Appdata-Backup erfasst." Type="Path" Display="always" Required="true" Mask="false">/mnt/nvme-storage/appdata/Hermes-Agent</Config>
<Config Name="Gateway/API Port" Target="8642" Default="8642" Mode="tcp" Description="OpenAI-kompatible Hermes Gateway-API und Health-Endpunkt." Type="Port" Display="always" Required="true" Mask="false">8642</Config>
<Config Name="Dashboard Port" Target="9119" Default="9119" Mode="tcp" Description="Offizielles Hermes Dashboard und Chat-Oberfläche." Type="Port" Display="always" Required="true" Mask="false">9119</Config>
<Config Name="Hermes UID" Target="HERMES_UID" Default="10000" Mode="" Description="Offizielle Container-UID. Nur ändern, wenn das Appdata bewusst einer anderen UID gehört." Type="Variable" Display="advanced" Required="true" Mask="false">10000</Config>
<Config Name="Hermes GID" Target="HERMES_GID" Default="10000" Mode="" Description="Offizielle Container-GID. Nur ändern, wenn das Appdata bewusst einer anderen GID gehört." Type="Variable" Display="advanced" Required="true" Mask="false">10000</Config>
<Config Name="API aktivieren" Target="API_SERVER_ENABLED" Default="true" Mode="" Description="Aktiviert die OpenAI-kompatible Gateway-API." Type="Variable" Display="always" Required="true" Mask="false">true</Config>
<Config Name="API Bind-Adresse" Target="API_SERVER_HOST" Default="0.0.0.0" Mode="" Description="Im Container auf allen Interfaces lauschen, damit Unraids Portweiterleitung funktioniert." Type="Variable" Display="advanced" Required="true" Mask="false">0.0.0.0</Config>
<Config Name="Interner API-Port" Target="API_SERVER_PORT" Default="8642" Mode="" Description="Muss zum Container-Port des Gateway/API-Port-Eintrags passen." Type="Variable" Display="advanced" Required="true" Mask="false">8642</Config>
<Config Name="API-Schlüssel" Target="API_SERVER_KEY" Default="" Mode="" Description="Erforderlicher Bearer-Schlüssel für Clients. Mit openssl rand -hex 32 erzeugen und nicht wiederverwenden." Type="Variable" Display="always" Required="true" Mask="true"></Config>
<Config Name="API CORS Origins" Target="API_SERVER_CORS_ORIGINS" Default="*" Mode="" Description="Erlaubte Browser-Ursprünge. Im privaten VPN kann * genutzt werden; bei öffentlicher Bereitstellung gezielt einschränken." Type="Variable" Display="advanced" Required="true" Mask="false">*</Config>
<Config Name="Dashboard aktivieren" Target="HERMES_DASHBOARD" Default="1" Mode="" Description="Startet das offizielle Hermes Dashboard zusammen mit dem Gateway." Type="Variable" Display="always" Required="true" Mask="false">1</Config>
<Config Name="Dashboard Bind-Adresse" Target="HERMES_DASHBOARD_HOST" Default="0.0.0.0" Mode="" Description="Im Container auf allen Interfaces lauschen, damit Unraids Portweiterleitung funktioniert." Type="Variable" Display="advanced" Required="true" Mask="false">0.0.0.0</Config>
<Config Name="Interner Dashboard-Port" Target="HERMES_DASHBOARD_PORT" Default="9119" Mode="" Description="Muss zum Container-Port des Dashboard-Port-Eintrags passen." Type="Variable" Display="advanced" Required="true" Mask="false">9119</Config>
<Config Name="Dashboard Benutzer" Target="HERMES_DASHBOARD_BASIC_AUTH_USERNAME" Default="admin" Mode="" Description="Benutzername für die Dashboard-Anmeldung." Type="Variable" Display="always" Required="true" Mask="false">admin</Config>
<Config Name="Dashboard Passwort" Target="HERMES_DASHBOARD_BASIC_AUTH_PASSWORD" Default="" Mode="" Description="Eigenes starkes Passwort; absichtlich ohne unsicheren Standardwert." Type="Variable" Display="always" Required="true" Mask="true"></Config>
<Config Name="Dashboard Session-Secret" Target="HERMES_DASHBOARD_BASIC_AUTH_SECRET" Default="" Mode="" Description="Separates zufälliges Secret für Dashboard-Sitzungen. Mit openssl rand -hex 32 erzeugen." Type="Variable" Display="always" Required="true" Mask="true"></Config>
</Container>
-38
View File
@@ -1,38 +0,0 @@
<?xml version="1.0"?>
<Container version="2">
<Name>MCPHub</Name>
<Repository>casaderoll/mcphub:1.2.5</Repository>
<Registry>https://hub.docker.com/r/samanhappy/mcphub</Registry>
<Network>bridge</Network>
<MyIP/>
<MyMAC/>
<Shell>sh</Shell>
<Privileged>false</Privileged>
<Support>https://github.com/samanhappy/mcphub/issues</Support>
<Project>https://github.com/samanhappy/mcphub</Project>
<ReadMe>https://github.com/samanhappy/mcphub#readme</ReadMe>
<Overview>Zentrale MCP-Verwaltung mit Weboberfläche. Das lokale CasaDeRoll-Image basiert reproduzierbar auf MCPHub 1.0.32 und enthält die versionierten ARR-, Navidrome-, GitHub- und FritzBox-Laufzeiten. Zusätzliche portable MCPs liegen updatefest im gemounteten Appdata-Verzeichnis und benötigen keinen Image-Neubau. Home Assistant, MUA und der Athena Operator werden als vorhandene HTTP-MCPs eingebunden. Einzelne Server bleiben unter /mcp/NAME getrennt sichtbar und schaltbar. Hermes nutzt für allgemeine Webrecherche seine eingebauten Werkzeuge.&#13;
&#13;
Weboberfläche: http://[IP]:[PORT:3000]/&#13;
Benutzer beim ersten Start: admin&#13;
Wenn kein Admin-Passwort eingetragen wird, erzeugt MCPHub eines und schreibt es ins Containerprotokoll.</Overview>
<Category>Tools:Utilities AI:</Category>
<WebUI>http://[IP]:[PORT:3000]/</WebUI>
<TemplateURL/>
<Icon>https://github.com/samanhappy.png</Icon>
<ExtraParams>--restart=unless-stopped</ExtraParams>
<PostArgs/>
<CPUset/>
<DateInstalled>0</DateInstalled>
<DonateText/>
<DonateLink/>
<Requires/>
<Config Name="WebUI und MCP Port" Target="3000" Default="8787" Mode="tcp" Description="Weboberfläche und MCP-Endpunkte. Beispiel: http://UNRAID-IP:8787/mcp" Type="Port" Display="always" Required="true" Mask="false">8787</Config>
<Config Name="Persistente Daten" Target="/app/data" Default="/mnt/nvme-storage/appdata/MCPHub" Mode="rw" Description="Benutzer, Einstellungen, Serverdefinitionen, Schlüssel und Laufzeitstatus. Dieses Verzeichnis wird vom Unraid-Appdata-Backup erfasst." Type="Path" Display="always" Required="true" Mask="false">/mnt/nvme-storage/appdata/MCPHub</Config>
<Config Name="MCP-Konfigurationen" Target="/run/secrets/mcphub" Default="/mnt/nvme-storage/appdata/MCPHub/secrets" Mode="ro" Description="Lokale API-Zugänge der verwalteten MCP-Unterprozesse. Das Verzeichnis ist nur im Container lesbar und wird vom Appdata-Backup erfasst." Type="Path" Display="always" Required="true" Mask="false">/mnt/nvme-storage/appdata/MCPHub/secrets</Config>
<Config Name="Admin-Passwort" Target="ADMIN_PASSWORD" Default="" Mode="" Description="Optional vor dem ersten Start setzen. Leer lassen erzeugt ein Zufallspasswort, das im Containerprotokoll angezeigt wird." Type="Variable" Display="always" Required="false" Mask="true"></Config>
<Config Name="Node-Umgebung" Target="NODE_ENV" Default="production" Mode="" Description="Produktionsmodus für MCPHub." Type="Variable" Display="advanced" Required="true" Mask="false">production</Config>
<Config Name="Anfrage-Timeout" Target="REQUEST_TIMEOUT" Default="120000" Mode="" Description="Zeitlimit für MCP-Aufrufe in Millisekunden." Type="Variable" Display="advanced" Required="true" Mask="false">120000</Config>
<Config Name="Zeitzone" Target="TZ" Default="Europe/Berlin" Mode="" Description="Lokale Zeitzone für Protokolle und Zeitangaben." Type="Variable" Display="advanced" Required="true" Mask="false">Europe/Berlin</Config>
<TailscaleStateDir/>
</Container>