Desktop App
The Acrobi Cortex Desktop App is an Electron-based application that provides a full-featured local environment for AI agent orchestration — with zero cloud costs for real-time events.
Why Desktop?
| Benefit | Description |
|---|---|
| Zero real-time costs | Embedded WebSocket server runs locally — no cloud connections needed for self-monitoring |
| Offline capability | Local SQLite database stores events for replay when reconnecting |
| Local LLM support | Built-in proxy to Ollama and LM Studio for privacy-first AI |
| Cross-user sync | Lightweight webhook push from cloud — no persistent connections |
Tech Stack
- Framework: Electron 33 + Next.js 15
- Language: TypeScript (strict mode)
- Database: better-sqlite3 (local persistence)
- WebSocket:
wslibrary (embedded server) - LLM Proxy: HTTP bridge to Ollama (port 11434) and LM Studio (port 1234)
Port Allocation
| Port | Service |
|---|---|
| 3690 | Cortex API (Express, dev mode) |
| 3691 | Next.js renderer (dev mode) |
| 3692 | Ollama proxy (LLM bridge) |
| 3693 | Local real-time server (WebSocket + event ingestion) |
Services
The Electron main process runs several embedded services:
| Service | File | Purpose |
|---|---|---|
| OllamaProxy | electron/services/OllamaProxy.ts | HTTP bridge to local LLMs |
| OllamaDetector | electron/services/OllamaDetector.ts | Auto-detects local LLM servers |
| ClaudeCodeBridge | electron/services/ClaudeCodeBridge.ts | Claude Code CLI integration |
| LocalRealtimeServer | electron/services/LocalRealtimeServer.ts | Embedded WebSocket + event ingestion |
| EventSyncBridge | electron/services/EventSyncBridge.ts | Cross-user sync coordinator |
| CortexService | electron/services/CortexService.ts | Backend lifecycle management |
IPC Bridge
The renderer (Next.js) communicates with the Electron main process via IPC:
typescript
// In renderer (React component)
const status = await window.cortex.realtime.getStatus();
const events = await window.cortex.realtime.getEventLog({ limit: 50 });
// Subscribe to local real-time events
window.cortex.realtime.subscribe('agent:my-agent', (event) => {
console.log('Agent event:', event);
});Getting Started
- Download the desktop app from acrobi.com/download
- Sign in with your Acrobi account
- The local real-time server starts automatically
- Your dashboard receives events locally — no cloud WebSocket needed
Next Steps
- Local Real-Time Server — How the embedded WebSocket server works
- Cross-User Sync — How team events flow between desktop apps
- Scaling Architecture — Cost analysis and scaling strategy