---
name: demonic-desktop
description: Install Demonic Desktop, an Electron AI workspace app powered by OpenRouter. TRIGGER when the user says "install demonic desktop", "set up demonic", or asks to install the demonic chat app. Builds and installs a signed .app to /Applications on macOS.
---


# demonic-desktop

A custom Electron-based AI chat workspace powered by OpenRouter. Multi-session, projects, slash-skills, MCP support, soul/memory/profile files for persistent identity, vision input, tool calling (shell, files, search, web fetch, sub-agent spawn).

## What this skill does

Extracts the bundled source, installs npm dependencies, builds + signs a macOS .app bundle, and installs it to `/Applications/Demonic Desktop.app`. Then prompts the user for their OpenRouter API key on first launch.

## When to use

Run this when the user asks to install demonic desktop on a fresh machine.

## Steps

1. **Confirm platform.** This is macOS-only (Electron + electron-builder + .icns icon). If the user is on a different platform, stop and tell them.

2. **Find the bundled source.** When this skill is invoked, the receiving Claude already has the skill directory available (it's the directory containing this SKILL.md). The source is in the `app/` subdirectory.

3. **Pick an install location.** Default: `~/Desktop/demonic`. Confirm with the user before overwriting.

4. **Copy the source to the install location:**

```bash
TARGET="$HOME/Desktop/demonic"
mkdir -p "$TARGET"
cp -R "<skill-dir>/app/." "$TARGET/"
```

(Replace `<skill-dir>` with the directory containing this SKILL.md — typically `~/.claude/skills/demonic-desktop/`.)

5. **Install dependencies and build:**

```bash
cd "$TARGET"
npm install
npm run install:app
```

The `install:app` script runs:
- `make:icon` — generates `build/icon.icns` from the SVG
- `tsc --noEmit` + `vite build` — compiles the React frontend
- `electron-builder --mac dir` — builds the .app bundle
- `node scripts/install-app.mjs` — copies it to `/Applications/`

This takes 1-3 minutes. Native deps (sharp for icons) recompile on first install.

6. **Launch the app:**

```bash
open -a "Demonic Desktop"
```

7. **First run.** The app starts with no API key. Tell the user to:
   - Click the "Add API key" button in the bottom-left of the sidebar
   - Paste their OpenRouter key (get one at https://openrouter.ai/keys)
   - Pick a default model

The app uses OpenRouter for model access — Anthropic, OpenAI, Google, Mistral, free models, etc. all available with one key.

## What's in the app

- **Multi-session chat** with per-session message history, persisted to localStorage
- **Projects** — folder-based grouping in the sidebar (right-click any chat to assign)
- **Per-session composer drafts** — each chat keeps its own typing state
- **Per-session streaming** — chat A streams while chat B can send normally
- **soul.md / profile.md / memory.md** — editable personality/context files (live at `~/Library/Application Support/demonic-desktop/workspace/`)
- **Slash-invoked skills** — type `/` to load any local SKILL.md as live instructions
- **MCP support** — configure servers via the MCP tab
- **Tool calling** — `run_shell`, `read_file`, `write_file`, `edit_file`, `apply_patch`, `glob`, `grep`, `web_fetch`, `save_fact`/`recall`, `search_messages`, `spawn_agent`
- **Vision** — paste/drop images into the composer for multimodal models
- **Signed for macOS** — uses your local Developer ID if available, otherwise unsigned

## Files of note (after install)

- App source: `~/Desktop/demonic/`
- Settings + key: `~/Library/Application Support/demonic-desktop/settings.json`
- Soul/memory/profile: `~/Library/Application Support/demonic-desktop/workspace/`
- Sessions storage: localStorage inside the .app

## Build issues

- **sharp install fails** → usually a node-gyp / Python issue. `npm rebuild sharp`.
- **electron-builder signing errors** → if you don't have a Developer ID cert, builds skip signing (still works locally).
- **port 5173 in use** → only matters in dev mode (`npm run dev`); the built .app doesn't need it.

## Updating

Re-run this skill — it overwrites `~/Desktop/demonic/` and reinstalls the app.

## License / origin

Author: the operator. Open the source freely.
