Auftragsbuch: 'orchestrator/desktop-gateway' angenommen (Ein-Klick-Gate)

This commit is contained in:
Auftragsbuch
2026-07-09 11:05:05 +02:00
7 changed files with 168 additions and 141 deletions
+14 -4
View File
@@ -69,7 +69,7 @@ def build_snippets(host: str = DEFAULT_HOST,
f"#\n"\
f"# 3. Token im Browser-Login einfügen — fertig.\n"\
f"#\n"\
f"# Modelle im Hermes Desktop: {PRIMARY_MODEL} (bauen), heavy (denken), vision (Bilder)."\
f"# Modelle im Hermes Desktop: {PRIMARY_MODEL} (bauen), heavy (denken), vision (Bilder)."
)
# Claude Code spricht das Anthropic-Format; der Gateway ist OpenAI-kompatibel und
@@ -124,8 +124,9 @@ def build_snippets(host: str = DEFAULT_HOST,
def check_health() -> dict:
"""Live-Erreichbarkeit der beiden Leitungen, aus Sicht der Box:
Leitung 1 = Gateway/Engine (llama-swap), Leitung 2 = Gedächtnis-Sidecar (Mem0)."""
"""Live-Erreichbarkeit der drei Leitungen, aus Sicht der Box:
Leitung 1 = Gateway/Engine (llama-swap), Leitung 2 = Gedächtnis-Sidecar (Mem0),
Leitung 3 = Desktop-Gateway (Hermes-Builtin-UI)."""
gateway = {"ok": False, "detail": "nicht erreichbar"}
try:
with httpx.Client(timeout=3.0) as c:
@@ -147,4 +148,13 @@ def check_health() -> dict:
except Exception: # noqa: BLE001
pass
return {"gateway": gateway, "memory": memory}
desktop_gateway = {"ok": False, "detail": "nicht erreichbar"}
try:
with httpx.Client(timeout=3.0) as c:
r = c.get("http://127.0.0.1:9119/api/status")
desktop_gateway = ({"ok": True, "detail": "bereit"} if r.status_code == 200
else {"ok": False, "detail": f"HTTP {r.status_code}"})
except Exception: # noqa: BLE001
pass
return {"gateway": gateway, "memory": memory, "desktop_gateway": desktop_gateway}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -7,8 +7,8 @@
<link rel="manifest" href="/manifest.webmanifest" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>Mission Control 2.0</title>
<script type="module" crossorigin src="/assets/index-BHaK9XZl.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-C7eDy97i.css">
<script type="module" crossorigin src="/assets/index-ByMZe5CM.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DndftNG6.css">
</head>
<body>
<div id="root"></div>
+1
View File
@@ -338,6 +338,7 @@ export interface ConnectLine {
export interface ConnectHealth {
gateway: ConnectLine
memory: ConnectLine
desktop_gateway: ConnectLine
}
export interface Memory {
+19 -3
View File
@@ -111,8 +111,8 @@ export function ConnectView() {
Verbindung &amp; Integration
</h1>
<p className="text-sm text-muted-foreground">
Binde deinen lokalen Agenten an die Box an über <span className="text-foreground">zwei getrennte Leitungen</span>:
das Modell (Gateway) und das geteilte Gedächtnis (MCP).
Binde deinen lokalen Agenten an die Box an über <span className="text-foreground">drei getrennte Leitungen</span>:
das Modell (Gateway), das geteilte Gedächtnis (MCP) und das Desktop-Gateway.
</p>
</div>
@@ -158,11 +158,27 @@ export function ConnectView() {
</div>
</div>
</div>
{/* Leitung 3 — Desktop-Gateway */}
<div className="flex items-center gap-3">
<ArrowRight className="h-4 w-4 text-muted-foreground shrink-0" />
<div className="flex-1 rounded-xl border border-emerald-500/25 bg-emerald-500/5 px-3.5 py-2.5">
<div className="flex items-center justify-between gap-2">
<div className="flex items-center gap-2 text-xs font-semibold text-emerald-300">
<Laptop className="h-3.5 w-3.5" /> Leitung 3 Desktop-Gateway
</div>
<StatusBadge line={health?.desktop_gateway} loading={healthLoading} />
</div>
<div className="mt-1 text-[11px] font-mono text-emerald-300/80">
Desktop-Gateway · :9119 · API-Status
</div>
</div>
</div>
</div>
</div>
<p className="mt-3.5 text-[11px] text-muted-foreground leading-relaxed">
Der Gateway liefert <span className="text-foreground">nur das LLM</span>. Das geteilte Gedächtnis läuft über einen
<span className="text-foreground"> eigenen MCP-Server</span> beide werden unabhängig eingerichtet.
<span className="text-foreground"> eigenen MCP-Server</span> und das Desktop-Gateway bietet die Agenten-Schnittstelle
alle drei Leitungen werden unabhängig eingerichtet.
</p>
</div>