Eine sichere Desktop‑Trading‑Umgebung ("Cockpit") mit integriertem KI‑Agenten, Broker‑Browser und Automatisierung.
Wenn dev:desktop in deiner Umgebung kein echtes Electron-Fenster öffnet, nutze den robusten Launcher:
start_desktop.batSauber stoppen:
stop_desktop.batDebug-Variante (mit erweiterten Logs):
tools\windows\start_desktop_debug.batAlternativ kannst du die Setup/Start-Skripte direkt nutzen:
tools\windows\setup_desktop.bat
tools\windows\start_desktop.bat
tools\windows\stop_desktop.batAlternativ über NPM:
npm run desktop:setup
npm run desktop:startDas Setup installiert Abhängigkeiten, rebuilt Electron und baut ein lokales Desktop-Bundle.
Der Start läuft dann direkt über electron.exe (ohne fragilen Dev-Fallback).
# 1) Virtuelle Umgebung anlegen
python3 -m venv .venv
# Falls das fehlschlägt (z. B. fehlendes ensurepip auf Debian/Ubuntu):
python3 -m pip install --user virtualenv --break-system-packages
python3 -m virtualenv .venv
# 2) Aktivieren
source .venv/bin/activate
# Windows PowerShell:
.venv\Scripts\Activate.ps1
# Windows CMD:
.venv\Scripts\activate.bat
# 3) Projekt starten
npm install
npm start# Abhängigkeiten installieren
npm install
# Desktop-Entwicklung starten (Electron + React Hot Reload, empfohlen)
npm run dev:desktop --workspace=packages/app
# Optional: Desktop-Cache bereinigen und frisch starten
npm run dev:desktop:clean --workspace=packages/app
# Web-Preview ohne Electron (eingeschränkter Modus)
npm start
# TODOs synchronisieren
npm run todo:syncCore-Tooling folgt strikt den Regeln aus .codex/config.toml und AGENTS.md.
- ESLint Major Policy:
eslintist derzeit auf Major9.xbegrenzt.eslint@10ist blockiert, solange@typescript-eslint@8.xnur^8.57.0 || ^9.0.0als Peer unterstützt. - Kein Peer-Bypass:
npm install --forceundnpm install --legacy-peer-depssind für reguläre Reparaturen/Upgrades nicht erlaubt. - Upgrade-Prüfung: Vor Dependency-Commits immer
npm install --dry-runausführen, umERESOLVEund Peer-Konflikte früh zu erkennen. - Lockfile-Konsistenz:
package.jsonundpackage-lock.jsonmüssen für Core-Tools (eslint,@typescript-eslint/*,vite,typescript) synchron bleiben.
Nutze die Vorlage und kopiere sie nach .env:
cp ".env example" ".env"Windows PowerShell:
Copy-Item ".env example" ".env"Windows CMD:
copy ".env example" ".env"Dann den Key eintragen:
API_KEY=dein_google_gemini_api_key
TradoDesk nutzt eine zentrale Konfiguration, die im Renderer gelesen und über den Main-Process persistiert wird. Typische Parameter:
- Modus:
Demo(Standard, keine echten Orders) oderSecure(isolierter Broker-Browser). rateLimitMs: Mindestabstand zwischen automatisierten Aktionen/API-Requests, um Limits einzuhalten.- Pricing/Quotas: Vorgaben für zulässige Kosten oder Token-Budgets pro Zeitraum.
- Provider-Stack: Gemini, OpenRouter, Mistral, Ollama, LM Studio (umschaltbar im API Manager).
- Broker: Primärziel ist
https://webtrader.tradesecure.io/.
Die genaue Struktur ist in der Architektur dokumentiert (siehe ARCHITECTURE.md).
Die Oberfläche wurde auf ein dichtes Pro-Desk-Layout umgestellt:
- Trade Desk: Chart-first Layout, rechts Order/Risk über Chat, Broker-Tools im Header.
- API Manager: Provider-Konfiguration, API-Key speichern, Connection-Tests.
- Portfolio / Automation / Risk / Developer: operative und technische Ansichten.
- Bottom Dock: Logs und Event-Stream mit Correlation-Fokus.
Der API Manager läuft jetzt als 5-Schritt-Assistent:
- Provider auswählen
- API-Key und Base-URL eintragen
- Verbindung testen und Modelle laden
- Fast/Deep-Modell aus Dropdown wählen (inkl. Suche und Capability-Tags)
- Review & Speichern
Zusätzlich bleibt ein Bereich „Erweitert (Fortgeschrittene)“ für direkte Provider-Karten verfügbar.
Wichtig:
- Desktop-Modus: volle Funktion mit Secret-Store, Connection-Test per IPC und Modell-Autoload nach Key/Base-URL.
- Web-Modus: Connection-Test für Sicherheit/CORS deaktiviert; Keys nur im RAM (nicht persistent), Hinweis im UI sichtbar.
- Standardweg:
Broker öffnenund direkt im WebTrader manuell einloggen. - Optional: Assist-Login mit Autofill (best effort), falls Credentials hinterlegt sind.
- Session-Status, URL und Logout sind direkt im UI verfügbar.
- Hinweis: Für eingebettete BrowserView-Funktionen
npm run dev:desktop --workspace=packages/appnutzen.
- Im
Trade Deskist das Layout als Split-Pane aufgebaut:- Desktop:
Chart (BrowserView-Host)|Rechte Spalte - Rechte Spalte: oben
Order Ticket + Risk, untenChat - Narrow Fallback:
Chartoben, rechte Spalte darunter
- Desktop:
- Rechte Spalte ist horizontal anpassbar (Default 25%, Bereich 18-35%).
- Order/Risk und Chat sind vertikal anpassbar und jeweils einklappbar.
Layout zurücksetzenstellt die Standardwerte wieder her.- Persönliche Größen und Einklapp-Zustände werden lokal gespeichert (
localStorageKey:tradodesk:layout:trade:v3). - Broker-Status nutzt Hybrid-Erkennung (URL/DOM-Signale) plus manuellen Override über
Broker Toolsim Header.
- API-Keys werden per Main-Process Secret-Store verwaltet.
- Falls
keytarverfügbar ist, wird der OS-Keyring verwendet. - Ohne
keytarwird ein AES-verschlüsselter Fallback imuserDatagenutzt. - Im Web-Modus werden Keys aus Sicherheitsgründen nicht persistent gespeichert.
Für Nachvollziehbarkeit und Betrieb speichert die App Daten an mehreren Stellen:
- Usage-Tracking: Laufende Zähler/Statistiken (z. B. Requests, Tokenverbrauch) werden lokal persistiert.
- Log-Dateien: Pro Session und Prozess werden Logs in Dateien geschrieben (siehe Abschnitt „Troubleshooting & Logs“).
- Speicherorte: OS-spezifische Pfade (z. B.
%APPDATA%,~/Library/Application Support,~/.config) dienen als Basis für Logs und Konfig.
- UI-Sprache vereinheitlicht: Nutzernahe UI-Texte wurden auf Deutsch konsolidiert (Chat, Diagnose, Fehlerhinweise).
- Usage-Robustheit erhöht: Persistenz wurde dedupliziert und im Main-Process atomar gespeichert (
usage.json.tmp->usage.json). - Rate-Limit zentralisiert: Die LLM-Drosselung ist über Service-Instanzen hinweg API-Key-basiert konsistent.
- Log-Reaktivität verbessert: Log-UI nutzt direkte Subscription statt Polling für schnellere Updates.
- Listener-Cleanup abgesichert: IPC-/Window-/Subscription-Listener werden auf Unmount wieder entfernt.
- Build-Fix:
@google/genaiwurde auf eine verfügbare Version aktualisiert (^1.40.0).
- Prüfe die Konsole in den DevTools (Ctrl+Shift+I).
- Prüfe das
boot-error-trapOverlay (roter Screen).
- Nutze den Debug‑Launcher:
tools\windows\start_desktop_debug.bat - Prüfe die Log-Datei unter
%APPDATA%/tradodesk/logs/main.log - Falls
electron.exefehlt, führetools\windows\setup_desktop.bataus (der One‑Click macht das automatisch). - Starte danach erneut mit
start_desktop.bat(Root). - Falls Prozesse hängen geblieben sind:
stop_desktop.batausführen und erneut starten. - Prüfe auf
ELECTRON_RUN_AS_NODE=1in der Windows-Umgebung. Das erzwingt Node-Kompatibilitätsmodus ohne GUI-Fenster. - User-Variable entfernen (PowerShell):
[Environment]::SetEnvironmentVariable("ELECTRON_RUN_AS_NODE",$null,"User") - System-Variable entfernen (PowerShell als Administrator):
[Environment]::SetEnvironmentVariable("ELECTRON_RUN_AS_NODE",$null,"Machine") - Hinweis: Die Startskripte (
start_desktop.bat,tools\windows\start_desktop*.bat) leeren diese Variable vor dem Start bereits defensiv.
Logs werden an zwei Orten gespeichert:
- Browser Console: Filterbar nach Level.
- File System:
- Windows:
%APPDATA%/tradodesk/logs/main.log - macOS:
~/Library/Application Support/tradodesk/logs/main.log - Linux:
~/.config/tradodesk/logs/main.log
- Windows:
Wenn ein Fehler auftritt:
- Notiere die Correlation-ID aus dem Fehler-Screen oder Log.
- Exportiere die Logs (falls möglich) oder kopiere den relevanten Abschnitt aus der Log-Datei.
- Erstelle ein Issue mit ID, Zeitstempel und Beschreibung.
Für lokale Stabilitätsprüfungen:
npm run typecheck
npm run lint
npm run dev:desktop --workspace=packages/app
npm startNach Änderungen am API Manager:
npm run dev:desktop --workspace=packages/appDann den kompletten Wizard (Schritt 1–5) im Desktop-Modus durchspielen und den Connection-Test prüfen.
- Demo Mode: Standardmäßig aktiv. Verhindert echte Order-Ausführungen.
- Secure Mode: Isoliert den Broker-Browser in einer eigenen Partition.
- Secrets: API Keys werden im OS-Keyring (oder verschlüsseltem Fallback) gespeichert.
Eine detaillierte Übersicht findest du in ARCHITECTURE.md. Dort ist auch das IPC-Allowlist-Konzept beschrieben: Der Renderer darf nur die explizit freigegebenen window.electron Methoden aufrufen, alle anderen IPC-Zugriffe sind blockiert.
- Packages/App: Electron Hauptprozess und React UI.
- Packages/Automation: Playwright Scripte für Broker-Interaktion.
- Packages/Shared: Gemeinsame Typen.
Gebaut mit Electron, React, Tailwind, Google GenAI.
StockPro‑AI @ 02/2026