π₯οΈ Epic: ContextForge Desktop (React + Electron)
Goal
Build a fully-featured desktop application for Windows, Linux, and macOS using React and Electron, based on the ContextForge Desktop PoC. This provides a native-like experience with system integration, offline capabilities, and improved performance.
Why Now?
- Native Experience: Desktop app feels faster and more integrated than browser
- System Integration: System tray, notifications, keyboard shortcuts, file access
- Offline Support: Work with cached data when disconnected
- Multi-Gateway: Manage multiple ContextForge instances from one app
- Modern Stack: React 19 + TypeScript provides better DX than HTMX for complex UIs
π οΈ Technology Stack
Based on contextforge-desktop PoC:
| Layer |
Technology |
| Frontend |
React 19, TypeScript, Tailwind CSS |
| UI Components |
Radix UI, shadcn/ui, Lucide Icons |
| Desktop |
Electron 39, Electron Forge |
| Build |
Vite 7 |
| State |
React Context + Hooks |
| API Client |
@contextforge/client (generated SDK) |
π User Stories
US-1: Cross-Platform Desktop App
As a user
I want a native desktop app for my OS
So that I can manage ContextForge without a browser
Acceptance Criteria:
- Windows installer (.exe, .msi)
- macOS app bundle (.dmg, .app)
- Linux packages (.deb, .rpm, .AppImage)
- Auto-updates supported
- Native look and feel per platform
US-2: Multi-Gateway Management
As a user managing multiple gateways
I want to connect to multiple ContextForge instances
So that I can manage dev, staging, and prod from one app
Acceptance Criteria:
- Add/remove gateway connections
- Switch between gateways quickly
- Visual indicator of current gateway
- Per-gateway authentication
- Gateway health status visible
US-3: System Tray Integration
As a user
I want the app to run in the system tray
So that I can quickly access it and receive notifications
Acceptance Criteria:
- Minimize to system tray
- Tray icon shows connection status
- Quick actions from tray menu
- Desktop notifications for alerts
- Launch on system startup (optional)
US-4: Keyboard-First Experience
As a power user
I want comprehensive keyboard shortcuts
So that I can work efficiently without mouse
Acceptance Criteria:
- Global shortcut to show/hide app
- Cmd/Ctrl+K command palette
- Navigation shortcuts (Cmd+1, Cmd+2, etc.)
- Vim-style navigation in lists
- All actions accessible via keyboard
US-5: Offline Mode
As a user with intermittent connectivity
I want to view cached data when offline
So that I can review configurations without connection
Acceptance Criteria:
- Cache entity data locally
- Clear offline indicator
- Read-only mode when offline
- Queue actions for sync when online
- Conflict resolution for offline edits
US-6: Feature Parity with Web UI
As a user
I want all Admin UI features in the desktop app
So that I don't need to switch to browser
Acceptance Criteria:
- Servers, Tools, Resources, Prompts management
- Gateways and federation management
- A2A Agents management
- Metrics and observability
- User/team management
- All CRUD operations
π Implementation Tasks
Phase 1: Project Setup
Phase 2: Core Infrastructure
Phase 3: Feature Implementation
Phase 4: Desktop Features
Phase 5: Offline & Sync
Phase 6: Build & Distribution
Phase 7: Testing & Polish
βοΈ Project Structure
contextforge-desktop/
βββ packages/
β βββ app/ # Electron main process
β β βββ src/
β β β βββ main.ts # Electron entry
β β β βββ preload.ts # Preload scripts
β β β βββ ipc/ # IPC handlers
β β βββ package.json
β β
β βββ renderer/ # React frontend
β β βββ src/
β β β βββ App.tsx
β β β βββ components/ # shadcn/ui components
β β β βββ pages/ # Route pages
β β β βββ hooks/ # Custom hooks
β β β βββ contexts/ # React contexts
β β β βββ lib/ # Utilities
β β βββ package.json
β β
β βββ shared/ # Shared types/utils
β βββ package.json
β
βββ contextforge-client-ts/ # Generated SDK (git submodule or copy)
βββ electron.vite.config.ts
βββ forge.config.ts
βββ package.json
π― Platform Requirements
| Platform |
Minimum Version |
Architecture |
| Windows |
Windows 10 |
x64, arm64 |
| macOS |
macOS 11 (Big Sur) |
x64, arm64 (Apple Silicon) |
| Linux |
Ubuntu 20.04+ |
x64, arm64 |
β
Success Criteria
π Dependencies
π References
π₯οΈ Epic: ContextForge Desktop (React + Electron)
Goal
Build a fully-featured desktop application for Windows, Linux, and macOS using React and Electron, based on the ContextForge Desktop PoC. This provides a native-like experience with system integration, offline capabilities, and improved performance.
Why Now?
π οΈ Technology Stack
Based on contextforge-desktop PoC:
π User Stories
US-1: Cross-Platform Desktop App
As a user
I want a native desktop app for my OS
So that I can manage ContextForge without a browser
Acceptance Criteria:
US-2: Multi-Gateway Management
As a user managing multiple gateways
I want to connect to multiple ContextForge instances
So that I can manage dev, staging, and prod from one app
Acceptance Criteria:
US-3: System Tray Integration
As a user
I want the app to run in the system tray
So that I can quickly access it and receive notifications
Acceptance Criteria:
US-4: Keyboard-First Experience
As a power user
I want comprehensive keyboard shortcuts
So that I can work efficiently without mouse
Acceptance Criteria:
US-5: Offline Mode
As a user with intermittent connectivity
I want to view cached data when offline
So that I can review configurations without connection
Acceptance Criteria:
US-6: Feature Parity with Web UI
As a user
I want all Admin UI features in the desktop app
So that I don't need to switch to browser
Acceptance Criteria:
π Implementation Tasks
Phase 1: Project Setup
Phase 2: Core Infrastructure
Phase 3: Feature Implementation
Phase 4: Desktop Features
Phase 5: Offline & Sync
Phase 6: Build & Distribution
Phase 7: Testing & Polish
βοΈ Project Structure
π― Platform Requirements
β Success Criteria
π Dependencies
π References