index · all work
03 · desktop app

Cortex

A private, encrypted desktop app for auditing your days as a founder, student, and human. Claude can read and write all of it.

Year2026
Statusshipped
RoleSolo · design + engineering
Built withReact 19 · TypeScript 5.9 · Electron 41 · Vite 8 · Tailwind CSS v4 · +7
cortex · founder dashboardopen ↗

Live demo. Click Run to load the real app and use it right here, or open it full-screen.

01Overview

Cortex is a macOS desktop app that pulls a founder's whole life into one private dashboard: habits, sprints, reading, CRM, calendar, coursework, finances, go-to-market state, and live founder metrics (GitHub commits, Lemon Squeezy MRR, Vercel deploys, Supabase signups). Everything is stored locally and encrypted at rest with AES-256-GCM, with the master key held in the macOS Keychain. A built-in web server on port 3456 makes the same dashboard reachable from a phone over Tailscale as a PWA.

The interesting part is the seam to AI. Cortex ships a Model Context Protocol server with 51 tools across 18 groups that proxies the app's local API, so Claude can read and write habits, journal entries, contacts, calendar events, and founder metrics directly. On top of that sits Opportunity Radar, a scheduled, prompt-injection-safe pipeline that scrapes social feeds on a VM, has a tool-less LLM classify and score them against an editable profile, then ingests the survivors into the dashboard with identity-level dedup. You steer it in plain language with hunt orders, and a sibling tracker watches fast-growing GitHub projects with stars and forks charts. It is a personal tool built to production standards, not a demo.

02The problem

Founders and students juggle habits, revenue, deploys, coursework, contacts, and a firehose of opportunities across a dozen disconnected tools, with no single private place to see and audit it all. Cortex is a local-first, encrypted desktop dashboard that unifies those signals and exposes them to an AI agent.

03Highlights
  • Encrypts every data file at rest with AES-256-GCM in a custom binary container (4-byte magic, 2-byte version, per-write 12-byte IV, 16-byte GCM auth tag). The 32-byte master key is sealed with Electron safeStorage (Keychain-backed on macOS), and a one-time migration rewrites any plaintext JSON to ciphertext behind a sentinel guard.
  • Ships a 51-tool Model Context Protocol server (18 groups: habits, books, CRM, calendar, GTM, finance, Obsidian vault, founder metrics) that proxies the app's localhost:3456 API, so Claude can read and write real data. Runs over stdio by default, with an optional --http transport for Tailscale access.
  • Three-tier persistence hook: Electron IPC to encrypted JSON, then the HTTP web API, then localStorage, with size-adaptive debounce (150/500/1000ms) and batched queueMicrotask writes. The web server socket is IP-gated to localhost and the Tailscale CGNAT range (100.64.0.0/10).
  • Opportunity Radar: a launchd-scheduled pipeline that scrapes feeds on a Lima VM, then classifies and scores them with a tool-less `claude -p` call against an editable profile. Untrusted scraped text is fenced as data and the model can run no tools, so a prompt-injected post can't escalate. You steer it in plain language with hunt orders, survivors are deduped by normalized apply-URL, title, and host across X, Reddit, and Devpost, and a sibling tracker charts fast-growing GitHub projects by stars and forks.
  • A KeepAlive watcher daemon turns a 'Run radar' button press into a full pipeline run by polling a runStatus flag over the HTTP API every 5 seconds. It is decoupled from Electron and self-heals stale runs after 45 minutes, so it needs zero app-code changes.
  • Bridges founder integrations (GitHub commits, Lemon Squeezy MRR, Vercel deploys, Supabase signups) and an Obsidian journal vault into a weekly-audit rollup, surfaced in both the UI and over MCP.
04By the numbers
51
MCP tools across 18 groups
20
feature modules
~22,000
lines of TypeScript
140
commits, solo, over ~3.5 months
What's inside6 parts
  • cortexapp

    The Electron 41 + React 19 macOS desktop app: around 20 feature modules (daily, habits, founder, CRM, finances, courses, GTM) on an OLED-black Tailwind v4 UI, persisted through Electron IPC, then the HTTP API, then localStorage.

  • cortex-mcp-servermcp

    A 51-tool MCP server across 18 groups that proxies the app's localhost:3456 API, so Claude can read and write habits, journal, contacts, calendar, GTM, and founder metrics over stdio or an optional --http transport.

  • opportunity-radarworker

    A launchd-scheduled pipeline that scrapes feeds on a Lima VM, has a tool-less claude -p call score them against an editable profile, then validates and dedupes survivors by apply-URL, title, and host before POSTing them back to the app.

  • electron main (:3456 web server)service

    The Electron main process owns the encrypted data directory, the tray, and context-isolated preload IPC, and runs a Tailscale-gated HTTP server on port 3456 that serves the same dashboard as a PWA to the phone.

  • crypto container (electron/crypto.ts)library

    Encrypts every data file with AES-256-GCM in a custom binary format (CTX1 magic, version byte, 12-byte per-write IV, 16-byte auth tag), keyed by a 32-byte master key held behind Electron safeStorage and the macOS Keychain.

  • integrations (electron/integrations)library

    Founder-metric clients for GitHub, Lemon Squeezy (MRR), Vercel, Supabase, the Mars Obsidian journal vault, and Paperclip, feeding the weekly-audit rollup shown in the UI and over MCP.

·Tags
desktop appMCPlocal-firstpersonal dashboardencryptionautomation
Full tech stack 12
React 19TypeScript 5.9Electron 41Vite 8Tailwind CSS v4shadcn/uiRechartsZustandModel Context Protocol SDKNode.jslaunchdSupabase