Skip to content
Development
Agent

overview

All paths are relative to `apps/emdash-desktop/`.

From plugin
emdash
5.4k24 skills24 agents

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

All paths are relative to `apps/emdash-desktop/`.

Agent definition

overview.md

Architecture Overview

All paths are relative to `apps/emdash-desktop/`.

Process Model

  • `src/main/`: Electron main process — app lifecycle, RPC controllers, domain services, database, PTY orchestration, updater, SSH
  • `src/preload/`: Electron preload bridge — exposes typed `invoke`, `eventSend`, `eventOn` to renderer
  • `src/renderer/`: React UI — app shell (`app/`), feature areas (`features/`), shared infrastructure (`lib/`), typed RPC client
  • `src/shared/`: Provider registry, IPC primitives (RPC + events), MCP types, skills types, shared domain types

Boot Sequence

`src/main/index.ts` → app lifecycle → IPC/RPC registration → window creation → renderer

  • `index.ts` — Loads `.env`, normalizes PATH, initializes database, registers all RPC controllers via `src/main/rpc.ts`, creates the main window.
  • `src/main/rpc.ts` — Assembles the typed RPC router from domain controllers (`src/main/core/*/controller.ts`).
  • `src/preload/index.ts` — Exposes `window.electronAPI` (`invoke`, `eventSend`, `eventOn`) via `contextBridge`.
  • `src/renderer/lib/ipc.ts` — Creates the typed RPC client and event emitter used throughout the renderer.

Build Tooling

  • `electron.vite.config.ts` — electron-vite config for main, preload, and renderer builds.
  • `vitest.config.ts` — Vitest config with five test projects: `node`, `main-db`, `fixtures`, `migrations`, and `browser` (Playwright-backed renderer tests).
  • Single `tsconfig.json` (in `apps/emdash-desktop/`) for all app targets.

Read Next

  • Main process details: `main-process.md`
  • Renderer details: `renderer.md`
  • Shared modules and provider registry: `shared.md`
Read more
Ships withemdash

Emdash is the Open-Source Agentic Development Environment (🧡 YC W26). Run multiple coding agents in parallel. Use any provider.

Get the whole plugin
Stats
5,374
Stars
554
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
21h ago
Last commit
11mo ago
Created

Repo: generalaction/emdash