Super Desktop App

Riley is not saying “desktop is better than the web.” He’s saying the personal tool he lives in — a local shell an agent keeps extending — is beating the little web dashboards he used to vibe-code for himself.

← AI Agents  ·  Tech  ·  Productivity  ·  GrokBot Riley  ·  ChatGPT + Codex super app  ·  Computer use  ·  ChatGPT Work  ·  GFAVIP Webchat

Source

Riley Brown (@rileybrown / @agentnative_) — x.com/rileybrown/status/2100072025054208335 (16 Sep 2026). ~368 likes / ~161 bookmarks / ~29k views at capture. No screenshot of the app. Replies asked for a walkthrough (@Kyle_Wolt) and “pics or it didn’t happen” (@mathew_fuller).

I'm seeing way bigger productivity gains from building personal desktop apps than personal web apps. My personal super desktop app is insane. Saves me hours/wk.

Public example of the genre (not a dump of the private hours/wk tool): RileyJarvis, the Electron companion he open-sourced — github.com/rbrown101010/rileyjarvis (MIT).

One-sentence TL;DR

Stop shipping yourself little web dashboards. Build a local desktop app around your loop, let an agent keep extending it, and treat that as home base. For him, that personal desktop super-app is currently more useful than the personal web apps he used to make.

What he means (narrow claim)

This is not “desktop apps in general are better than the web.” It’s from how he actually works:

  1. Personal apps, not products. He vibe-codes tools for his workflow. No product name, no users, no marketing. Just something that does exactly what he wants. He said that earlier about a desktop app he made for Excalidraw presentations, then added YouTube thumbnail generation in one shot.
  2. Desktop beats web for that use case. A personal web app still lives in a browser tab: limited OS access, login/session friction, weaker file-system and window control. A personal desktop app can sit on the machine, read local files, drive other apps, take screenshots, click/type, and keep state locally.
  3. “Super desktop app” = one shell for most work. He’s been arguing for months that the endgame is a single agent interface you start every task from, instead of bouncing between browser, email, Notion, etc. He called that a “super-app.” This tweet is him saying the version that actually saves him hours is the desktop one, not a personal web OS.

That’s why people in the replies asked for a walkthrough. He claimed a private tool is saving hours a week and didn’t show it in that post.

Why desktop, in his world

Riley’s whole beat is “agent-native” work: coding agents, Codex / ChatGPT desktop, computer-use, remote control of a Mac. Desktop is where those agents can actually touch the computer.

He’s also said that once you put a full browser inside a desktop agent app, separate web tools start to look unnecessary — the agent opens the site in its own browser and works there.

Personal web app Personal desktop app
Where it lives A tab you have to find again A window that stays on the machine
OS access Sandbox, cookies, uploads Files, apps, screenshots, click/type
Auth Login / session / deploy Local keys in .env.local
State A server or a SaaS A folder on disk (data/)
Agent job Talk about work Do the work on this Mac

RileyJarvis — the public Electron example

RileyJarvis is a local Electron desktop AI companion: realtime voice, a visual artifact panel, image generation, web search, notes, and opt-in macOS computer control. Stack: Electron, React, Vite, TypeScript, OpenAI Realtime API.

Repo: github.com/rbrown101010/rileyjarvis . README clone URL still says github.com/rileybrown/rileyjarvis — that path 404s; use rbrown101010. MIT. macOS only.

That’s the genre: a local AI desktop that is yours, not a SaaS tab. It is not a screenshot of the private “hours/wk” super app. Don’t treat the open-source companion as the whole claim.

What it actually ships

  • Realtime speech-to-speech with OpenAI Realtime
  • Animated companion face (listening / thinking / speaking / working)
  • Artifact panel: markdown, menus, notes, Mermaid, generated images, records, progress
  • YouTube thumbnail board with persistent numbered generations and image edits
  • Optional Exa-powered web search
  • Local notes and records under runtime data/ (gitignored)
  • Optional computer-use mode: open apps, click, type, scroll, screenshots, UI inspection on macOS — blocked until that mode is on

Clone and run

git clone https://github.com/rbrown101010/rileyjarvis.git
cd rileyjarvis
npm install
cp .env.example .env.local
# OPENAI_API_KEY=...   (required — Realtime + image gen)
# EXA_API_KEY=...      (optional — search)
npm run dev

Needs Node 20+, an OpenAI key with Realtime + image generation, and (if you turn on computer-use) macOS Accessibility + Screen Recording plus the microphone for voice. Dev mode starts Vite on 127.0.0.1:5173 and launches Electron.

Security notes from the README (keep these)

  • Keys load only from local env files. Don’t commit .env.local or data/.
  • Risky computer-control actions should require explicit confirmation.
  • Typing and pressing Enter in computer-use mode are intentionally allowed without extra confirmation — they’re core voice-control actions. That’s the gym-hack class of permission. Fence send / delete / spend elsewhere.

Three “super apps” — don’t mash them

On this site the phrase already means three different jobs:

Page Whose super app What it is
/chatgptwork2 OpenAI’s product ChatGPT + Codex in one desktop: Work tab, Codex tab, in-app browser, Sites
/gptwork Same product, Riley’s tour 14 Work capabilities. Cloud vs local. Still a vendor app.
/superdesktopapp (this tweet) Riley’s personal shell A vibe-coded Electron home base. No users. His loop.
gfavip.com/download · /gfavipwebchat GFAVIP Chat — our product WeChat/Slack pattern: Matrix rooms + Apps Home catalog + SSO. Members. Keep webchat.

The OpenAI desktop is a product you log into. Riley’s personal super desktop app is a repo you own. He can add a thumbnail board in one shot because there is no product manager. GFAVIP cannot do that — catalog, SSO, review, install, all platforms.

GFAVIP Chat overlay (product, not Jarvis)

We sent this page to the GFAVIP desktop-agent with a contrast brief. Agreed direction (16 Sep 2026): borrow native seams and safety discipline, not the personal companion.

GFAVIP Chat is already a super-app in the WeChat sense: DMs and workspaces on our Matrix homeserver, Apps Home (Wallet, Profile, Tickets, Checkout) via SSO, agents as @mentions in rooms (Billy Beard). Web first at webchat.gfavip.com; native Mac / Windows / Linux / iOS / Android from gfavip.com/download. Ecosystem map: /gfavipecosystem. Do not turn that into RileyJarvis.

Keep (desktop-justified)

  • Reliable desktop notifications, badges, and exact conversation deep links
  • Encrypted local Matrix cache, offline search, and an outbox that sends after reconnection
  • Native file picking, saving, and “show in Finder/Explorer”
  • A small catalog capability API — catalog apps stay governed SSO webviews
  • An in-Chat agent that can search local files, summarize notifications, prepare attachments, and draft actions
  • Explicit approval and audit records for consequential actions

Skip (cargo-cult Riley)

  • RileyJarvis face, personal voice-companion UI, single-user assumptions
  • “Kill the web” or replacing Webchat
  • Always-on screenshots, Accessibility control, or unrestricted computer use
  • Arbitrary filesystem access from catalog webviews
  • Local .env API keys or a native integration for every catalog entry
  • Autonomous send, delete, spend, publish, or account changes

Catalog capability API — four verbs, then stop

Catalog apps remain SSO webviews. They may request allowlisted capabilities through a native bridge, bound to catalog app ID + allowed origin:

Verb Job Fence
pickFile Native file picker into Chat or a catalog app User gesture. Path/contents only what the user selected.
saveFile Save / “show in Finder/Explorer” Same. No generic filesystem walk.
setBadge Unread / attention mark Chat owns the dock badge. Catalog only badges its own Apps Home icon (or sends a count Chat aggregates).
openGfavipDeepLink Open a workspace, channel, thread, or catalog record Allowlist *.gfavip.com (plus the exact webchat / wallet / tickets hosts we already use). No off-estate URLs.

No generic shell, terminal, filesystem, or computer-control API. File ops need a user gesture.

In-Chat agent boundary

Same agent that already lives in rooms (Billy Beard) — new desktop tools, not a second Jarvis process.

Safe by default: search chats and opted-in local files; summarize unread; draft replies; prepare attachments; open the relevant GFAVIP app or conversation; produce a preview of a proposed action.

Visible confirmation always: send, delete, spend/purchase, publish, share externally, change permissions or accounts, bulk modifications. Same fence as Auto-review / gym hack.

Audit records need a destination or they won’t exist: a local log, a staff room, or both. Name it in the desktop repo.

Ship order (don’t call encrypted cache “this week”)

  1. Attach from desktop everywhere — drag a file into Chat, or let an authorized catalog app request the native picker. No awkward web-upload dance.
  2. GFAVIP notification center — native unread badge, mute/snooze, notifications that open the exact workspace / channel / thread / catalog record.
  3. Visible outbox — replies queue while offline and send after reconnection. Encrypted local cache + offline search is next (a quarter), not the first sitting.

Native SSO tokens go in the OS keychain / credential manager, not webview localStorage. If the Mac/Windows/Linux build is still Chromium + the same web app with nicer toasts, it is not a desktop super-app — it is a wrapped tab.

Put this skip list in the GFAVIP desktop repo’s AGENTS.md so the next agent does not “just add screenshot.”

How this maps here

Move On this desk Don’t
One local shell Grok Build / Codex / a fork of RileyJarvis as the window you start from Another Next.js dashboard you’ll forget the password to
Computer use /computeruse (Orgo cloud desktop) vs this (local Mac) Unfenced click/type on a live account — see gym hack
Outer harness as a window /domainharness — deny list, domain tools, local memory A chat API wrapper with a logo
Browser inside the agent Agent opens the site in its own browser; web tools collapse Five Chrome profiles plus a “personal OS” tab
GrokBot computer + Grill Me /grokbotriley tip 11 — remote Mac, still a bot VM Confusing Grok Bot’s computer with a local Electron you compiled
GFAVIP Chat desktop Product super-app: native seams + four-verb catalog API + deny list. Overlay above. Forking RileyJarvis into the Matrix client; killing webchat

Week-one sitting (steal the pattern, not his UI)

  1. Pick one loop you already do every week (thumbnails, Excalidraw decks, inbox triage). Not a “personal OS.”
  2. Clone RileyJarvis or start a blank Electron/Tauri window. Keep state in a local folder.
  3. Add the one feature that currently lives in a browser tab. Stop.
  4. If you turn on computer-use: Accessibility + Screen Recording, then a deny list (send / delete / spend / publish) before you let it type Enter. Same fence as Auto-review.
  5. Let the agent extend the app next sitting. That’s the compounding he’s talking about — not a public launch.

What we keep vs skip

  • Keep: personal ≠ product; desktop for OS access; one shell as home base; local data/; RileyJarvis as a cloneable genre; fence computer-use.
  • Verify: whether his private hours/wk app is a heavily forked RileyJarvis or a different Electron; whether “full browser inside the agent” is in the public repo or only in the private one.
  • Skip: “desktop is back, kill the web”; shipping RileyJarvis as a SaaS; treating this tweet as a walkthrough (it isn’t); mixing this with OpenAI’s ChatGPT+Codex super app or with GFAVIP Chat (WeChat-style product — overlay above).

Related on this site

Primary: @rileybrown — personal super desktop app · RileyJarvis (Electron)

Comments

Approved comments appear below. Log in once with GFAVIP — it applies across the whole site. GFAVIP login

View comments archive