Native Desktop-App für Claude Code (Tauri 2.0 + SvelteKit)
Find a file
Eddy 6b024fe342
Some checks failed
Build AppImage / build (push) Has been cancelled
fix: KB-Hints Filter weniger aggressiv — mehr Treffer zulassen [appimage]
- EXCLUDED_CATEGORIES reduziert: nur noch access + claude-md
  (setup/skill/hook enthalten nuetzliche technische Infos)
- Relevanz-Schwelle von 1.5 auf 0.5 gesenkt
  (1.5 filterte zu viele Einzelwort-Matches raus)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-02 23:24:05 +02:00
.forgejo/workflows fix(ci): ntfy-action erwartet ntfy_auth, nicht auth [appimage] 2026-04-27 14:40:57 +02:00
nix Nix-Wrapper: whisper-cpp zu runtimeBins hinzugefügt für lokale Transkription [appimage] 2026-04-21 16:20:06 +02:00
pwa PWA Mobile-App: API-Server + SvelteKit-Frontend (Phase 1+2) 2026-04-20 06:38:12 +02:00
scripts feat: Schulungsmodus Datei-Animationen + Permission-Toggle + Chat-Scroll-Fix [appimage] 2026-04-27 22:13:52 +02:00
src feat: Projekt-Briefing Button — Claude über aktuellen Stand informieren [appimage] 2026-05-02 23:00:44 +02:00
src-tauri fix: KB-Hints Filter weniger aggressiv — mehr Treffer zulassen [appimage] 2026-05-02 23:24:05 +02:00
vscode-extension Bugfixes: Resume, Tool-Whitelist, Sub-Agent-Tree, UI-Polish 2026-04-14 21:24:51 +02:00
.gitignore fix: doppelten Activity-Indicator verhindern + gitignore aufräumen [appimage] 2026-04-22 13:46:02 +02:00
BUILD-NIXOS.md [appimage] Auto-Updater: Package Registry + update.json + Nix-Wrapper 2026-04-20 11:05:19 +02:00
CHANGELOG.md fix: UTF-8-Crash + Input-Reset + ApprovalBar + Scroll/Streaming-Polish [appimage] 2026-04-27 20:55:08 +02:00
CLAUDE.md docs: Komplette Dokumentation überarbeitet — README als Entwickler-Handbuch, CLAUDE.md als Session-Kurzreferenz 2026-04-21 14:59:42 +02:00
install.sh fix: KDE-Cache (kbuildsycoca) neu bauen, sonst fehlt Menue-Eintrag 2026-04-20 17:02:52 +02:00
package-lock.json feat: Phase 8+9 — Inline Tool-Karten + komplettes UI-Redesign auf Cursor/Zed-Niveau [appimage] 2026-04-27 14:27:09 +02:00
package.json feat: Phase 8+9 — Inline Tool-Karten + komplettes UI-Redesign auf Cursor/Zed-Niveau [appimage] 2026-04-27 14:27:09 +02:00
README.md docs: Komplette Dokumentation überarbeitet — README als Entwickler-Handbuch, CLAUDE.md als Session-Kurzreferenz 2026-04-21 14:59:42 +02:00
ROADMAP.md docs: Phase 16 — Schulungsmodus-Ausbau zum Session-Replay geplant 2026-04-27 22:45:51 +02:00
shell.nix Phase 2.2: Lokales Voice — whisper-cli + piper-tts, Gesprächsmodus mit VAD 2026-04-21 08:48:03 +02:00
svelte.config.js Initial Commit: Claude Desktop Grundgerüst 2026-04-13 12:16:20 +02:00
tools.yaml Initial Commit: Claude Desktop Grundgerüst 2026-04-13 12:16:20 +02:00
tsconfig.json Initial Commit: Claude Desktop Grundgerüst 2026-04-13 12:16:20 +02:00
vite.config.ts Initial Commit: Claude Desktop Grundgerüst 2026-04-13 12:16:20 +02:00

Claude Desktop

Nativer AI-Desktop-Assistent fuer Linux. Schneller und maechtiger als Codium + Claude Code Extension.

Tech-Stack: Tauri 2.0 (Rust) + SvelteKit 5 + Claude Agent SDK (Node.js) Codebase: ~24.000 Zeilen, 154 Commits, 27 Svelte-Komponenten, 18 Rust-Module


Schnellstart

# Development (Hot-Reload)
cd "/mnt/17 - Entwicklungen/20 - Projekte/ClaudeDesktop"
CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri dev"

# Produktion (AppImage)
CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri build -- --bundles appimage"

# CI: Commit mit [appimage] im Message → Forgejo Runner baut + uploaded automatisch

Architektur

┌──────────────────────────────────────────────────────────┐
│                    SvelteKit Frontend                     │
│  27 Svelte-Komponenten (Chat, Voice, Guard-Rails, ...)   │
├──────────────────────────────────────────────────────────┤
│                      Tauri IPC                           │
├──────────────────────────────────────────────────────────┤
│                    Rust Backend                           │
│  18 Module (claude.rs, db.rs, guard.rs, voice.rs, ...)   │
├──────────────────────┬───────────────────────────────────┤
│  SQLite (lokal)      │  Unix Domain Socket / stdio       │
│  Sessions, Settings  │         ↕                         │
│  Memory, Audit       │  Claude Bridge (Node.js)          │
│  Offline-Queue       │  @anthropic-ai/claude-agent-sdk   │
├──────────────────────┤         ↕                         │
│  MySQL (claude-db)   │  Claude API (Anthropic)           │
│  Wissensbasis        │  + MCP-Server (6 Stueck)          │
└──────────────────────┴───────────────────────────────────┘

Datenfluss

  1. User → Eingabe im ChatPanel (Text/Sprache/File-Drop)
  2. Frontendinvoke('send_message') via Tauri IPC
  3. Rust → Sticky Context + KB-Hints laden, an Bridge senden
  4. Bridgequery() mit Claude Agent SDK, Events streamen
  5. Claude API → Antwort + Tool-Calls (Bash, Read, Edit, MCP, ...)
  6. Bridge → Events via JSON-Lines an Rust zurueck
  7. Rustemit() Events ans Frontend
  8. Frontend → Live-Rendering (Text, Tools, Subagents)

Bridge-Modi

Modus Beschreibung Wann
UDS-Daemon Bridge als eigenstaendiger Prozess, ueberlebt App-Neustart Standard (bevorzugt)
stdio Bridge als Child-Process mit stdin/stdout Fallback wenn UDS fehlschlaegt

Socket-Pfad: /tmp/claude-bridge.sock, PID-File: /tmp/claude-bridge.pid


Dateistruktur

Rust Backend (src-tauri/src/)

Datei Zeilen Funktion
lib.rs ~340 App-Setup, Tray-Icon, Global Hotkey (Super+C), Plugin-Init
claude.rs ~1000 Kernmodul: Bridge-Kommunikation (UDS/stdio), MCP-Hub, Ollama, send_message
db.rs ~800 SQLite: Sessions, Messages, Settings, Projekte, Monitor-Events, Fehler-Tracking
knowledge.rs ~1000 MySQL-Wissensbasis: Suche, Cache (60s TTL), KB-Hints, Smart Hints v2
session.rs ~300 Session-CRUD, Offline-Queue (queue/flush/clear)
guard.rs ~250 Guard-Rails: Safe/Moderate/Critical/Blocked, Permissions
memory.rs ~200 Persistentes Gedaechtnis: Auto-Load, Patterns, Cross-Session
context.rs ~300 3-Schichten Context: Sticky/Projekt/Hints, Render fuer Prompt
voice.rs ~355 Whisper STT + Piper TTS (5 deutsche Stimmen), offline
hooks.rs ~200 Hook-System: SessionStart, PreToolUse, PostToolUse
audit.rs ~150 Audit-Log: Alle Aktionen mit Timestamp + Risk-Level
programs.rs ~300 D-Bus Aktionen, Screenshot-Capture, Xvfb
ide.rs ~200 VSCodium-Extension Bridge (WebSocket Port 7890)
clipboard.rs ~150 Clipboard-Watch: Code/URL/Fehler erkennen
teaching.rs ~150 Praesentations-/Schulungsmodus (separates Fenster)
chat_window.rs ~100 Chat-Detach: Separates Fenster herausloesen/zurueckholen
update.rs ~250 Auto-Updater: Forgejo Package Registry, Lock-Datei
commands.rs ~100 Slash-Command Registry (scannt ~/.claude/commands/)

Frontend (src/lib/components/)

Komponente Funktion
ChatPanel.svelte Hauptkomponente: Nachrichtenliste, Eingabe, File-Drop, Modus-Indikator
SessionList.svelte Sidebar: Sessions, Projekt-Wechsel, Suche
ActivityPanel.svelte Live-Aktivitaet: Tool-Calls, Agent-Status
AgentView.svelte Subagent-Hierarchie als Baumansicht
MonitorPanel.svelte System-Monitor: API/Tool/Error Events
PerformancePanel.svelte Token-/Kosten-Statistiken
GuardRailsPanel.svelte 3-Tab: Live-Feed / Regeln / Blockiert
VoicePanel.svelte Push-to-Talk, Gespraechsmodus, TTS-Wiedergabe
ContextPanel.svelte Sticky Context anzeigen/editieren
MemoryPanel.svelte Persistentes Gedaechtnis CRUD
KnowledgePanel.svelte Wissensbasis durchsuchen
HooksPanel.svelte Hook-Verwaltung
SettingsPanel.svelte VS-Code-artiges Settings mit Suche/Kategorien
ProgramsPanel.svelte D-Bus Aktionen, Screenshot, Xvfb
IdePanel.svelte VSCodium-Verbindung Status
AuditLog.svelte Audit-Eintraege durchsuchen
QuickActions.svelte Ctrl+K Kommandopalette
CommandPalette.svelte Slash-Command Autocomplete (/-Eingabe)
CodeBlock.svelte Syntax-Highlighting + Copy-Button
DiffView.svelte Diff-Anzeige fuer Code-Aenderungen
MermaidDiagram.svelte Mermaid-Diagramme rendern
StopButton.svelte Abbruch-Button waehrend Agent laeuft
UpdateDialog.svelte Auto-Update Bestaetigungsdialog
FilePreview.svelte Datei-Vorschau (Text/Bild)
AnimatedCode.svelte Code-Tipp-Animation fuer Praesentation
AutoCorrectionModal.svelte Fehler-Pattern Vorschlag

Bridge (scripts/claude-bridge.js)

~1100 Zeilen Node.js. Zentrale Datei fuer die Claude-Kommunikation:

  • query() via @anthropic-ai/claude-agent-sdk — streamt Events
  • Multi-Agent-Modi: Solo / Handlanger (Haiku-Worker) / Experten (4 spezialisierte Agents) / Auto
  • Subagent-Tracking: Map mit toolUseId → agentId/type/depth
  • MCP-Server Injection: Configs von Rust empfangen, in queryOptions injizieren
  • Ollama-Integration: Auto-Detect beim Start, local-query fuer einfache Tasks
  • Auto-Retry: 3x Backoff bei Rate-Limit/5xx/Netzwerkfehler
  • Session-Resume: Stale Session-ID → automatisch neue Session starten
  • UDS-Server-Modus: --socket /tmp/claude-bridge.sock fuer Daemon-Betrieb

Stores (src/lib/stores/)

Store Inhalt
app.ts activeSession, activeProject, agentMode, chatDetached, processingPhase
events.ts Event-Handler fuer alle Bridge-Events (text, result, tool-start/end, ...)
updateTrigger.ts Reactive Trigger fuer Panel-Updates

Features komplett

Phase 1-2 (v0.1.0 — 14.04.2026)

  • Tauri 2.0 + SvelteKit 5 Grundgeruest
  • 4-Panel Layout, Claude Bridge (stdio), Guard-Rails
  • SQLite + Session-Management, Claude-DB Integration
  • 3-Schichten Context, Multi-Agent-Modi, Hook-System
  • VSCodium-Extension, Programm-Steuerung (D-Bus, Xvfb)
  • Praesentationsmodus, System-Monitor, Subagent-Hierarchie
  • Auto-Updater, Slash-Commands, KB-Hints, Error-Patterns

Phase 3: Performance (22.04.2026)

  • KB-Cache (RAM, 60s TTL), Bridge Warm-Start, Lazy Panel-Load
  • Session-Resume Fix, Auto-Retry (3x Backoff), Heartbeat
  • FIFO Message Queue, Bridge-Daemon (UDS), Unix Socket IPC

Phase 4: Codium-Killer Features

  • Projekt-Wechsel (Ein-Klick), MCP-Hub nativ (6 Server)
  • Guard-Rails UI (3 Tabs), Persistent Memory, Quick-Actions (Ctrl+K)
  • Voice (Whisper + Piper, offline), Settings-Panel, Chat-Detach
  • Aktivitaets-Phasen (Denkt/Streamt/Tool/Subagent)

Phase 5: Lokale KI + Offline

  • Whisper.cpp + Piper-TTS (komplett offline, 5 deutsche Stimmen)
  • Ollama-Integration (Auto-Detect, local-query)
  • Offline-Queue (SQLite, flush bei Reconnect)

Phase 6: Desktop-Integration

  • D-Bus Actions (10 Aktionen), Clipboard-Watch, File-Drop
  • Screenshot-Analyse, Global Hotkey (Super+C)

MCP-Server (6 Stueck, automatisch geladen)

Name Funktion Transport
forgejo Git: Repos, Issues, PRs, Releases stdio
claude-db MySQL Wissensbasis: Suche, CRUD SSE (MCP-Hub)
playwright Browser-Automatisierung stdio
context7 Library-Dokumentation stdio
portainer Docker-Container-Management stdio
homeassistant Smart-Home Steuerung stdio

Configs in ~/.claude.json → werden beim Bridge-Start automatisch injiziert.


CI/CD

Workflow: .forgejo/workflows/build-appimage.yml Runner: 16-Forgejo-Runner-AppImage (Debian Bookworm) Trigger: [appimage] in Commit-Message auf main

  1. Commit mit [appimage] → Push
  2. Forgejo Runner baut AppImage (~8-10 Min)
  3. Upload in Forgejo Package Registry
  4. Ntfy-Notification (Topic: vk-builds)
  5. App zieht Update beim naechsten Start (Auto-Updater)

NixOS: AppImage hat WebKit2GTK/Mesa ABI-Konflikt → lokaler Build mit shell.nix noetig. Nix-Wrapper in ~/.local/bin/claude-desktop.


Tastenkuerzel

Kuerzel Aktion
Super+C Claude-Eingabe von ueberall oeffnen
Ctrl+K Quick-Actions Palette
Ctrl+Enter Nachricht senden
Escape Quick-Actions/Autocomplete schliessen
/ Slash-Command Autocomplete

Wissensbasis-Referenzen

KB-ID Thema
#248 Tauri 2.0 + SvelteKit auf NixOS shell.nix
#311 CI/CD Pipeline (Workflow-Tricks)
#371 Debian Forgejo-Runner Setup
#381 NixOS WebKit2GTK EGL-Crash
#382 Cargo auf SMB → CARGO_TARGET_DIR
#384 Custom-AppRun + linuxdeploy-Hook

Nicht geplant

  • Multi-User / Team-Features
  • Cloud-Sync
  • Plugin-System (overkill fuer 1-User-App)
  • Electron-Port (Tauri bleibt)