providers
- `packages/plugins/src/agents/registry.ts` - `packages/plugins/src/agents/impl/` - `src/main/core/dependencies/dependency-managers.ts` - `src/main/core/pty/`
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.
- `packages/plugins/src/agents/registry.ts` - `packages/plugins/src/agents/impl/` - `src/main/core/dependencies/dependency-managers.ts` - `src/main/core/pty/`
Agent definition
providers.mdProviders
Source Of Truth
- `packages/plugins/src/agents/registry.ts`
- `packages/plugins/src/agents/impl/`
- `src/main/core/dependencies/dependency-managers.ts`
- `src/main/core/pty/`
Current Providers (35)
codex, claude, grok, devin, qwen, qoder, droid, antigravity, cursor, copilot, amp, commandcode, opencode, hermes, charm, auggie, goose, kimi, kilocode, kiro, rovo, cline, codebuddy, continue, codebuff, freebuff, mistral, jules, junie, oh-my-pi, pi, autohand, letta, mimocode, zero
Current ACP-Capable Providers (22)
codex, claude, opencode, grok, devin, qwen, qoder, droid, cursor, copilot, hermes, auggie, goose, kimi, kilocode, kiro, cline, mistral, junie, mimocode, oh-my-pi, codebuddy
Provider Metadata Includes
- provider metadata and icon assets
- host dependency detection, install, update, and uninstall descriptors
- prompt delivery behavior
- auto-approve, ACP, hooks, MCP, model, session, trust, and plugin capabilities
Agent Hooks And Notifications
Agent activity, completion, and attention notifications come from explicit hooks or plugins installed by `src/main/core/agent-hooks/`. Emdash does not infer agent status from terminal output. If a provider has no hook/plugin integration for an event, the renderer should not show or notify an inferred status for that event.
Provider Runtime Notes
- Claude uses deterministic `--session-id` values for conversation isolation.
- Agents that cannot receive an interactive initial prompt via argv or stdin use keystroke
injection — Emdash types the prompt into the TUI after startup.
- `src/main/core/agent-hooks/agent-hook-service.ts` forwards hook events to renderer windows and can show OS notifications. It also writes hook config files for hook-capable providers, including `.claude/settings.local.json`, `.qwen/settings.json`, and provider-specific global hook files.
- Qwen Code hooks use the documented Qwen settings schema in `.qwen/settings.json`. Emdash installs command hooks for permission requests and session end/stop events while preserving unrelated user hooks.
Adding Or Changing A Provider
1. add or update the plugin in `packages/plugins/src/agents/impl/` and register it in `packages/plugins/src/agents/registry.ts` 2. update allowlisted agent env vars in `src/main/core/pty/pty-env.ts` if needed 3. add or update hook/plugin installation in `src/main/core/agent-hooks/` if the provider supports explicit events 4. validate detection behavior in `src/main/core/dependencies/` 5. add or update tests for any non-standard behavior
Read more
Providers
Source Of Truth
- `packages/plugins/src/agents/registry.ts`
- `packages/plugins/src/agents/impl/`
- `src/main/core/dependencies/dependency-managers.ts`
- `src/main/core/pty/`
Current Providers (35)
codex, claude, grok, devin, qwen, qoder, droid, antigravity, cursor, copilot, amp, commandcode, opencode, hermes, charm, auggie, goose, kimi, kilocode, kiro, rovo, cline, codebuddy, continue, codebuff, freebuff, mistral, jules, junie, oh-my-pi, pi, autohand, letta, mimocode, zero
Current ACP-Capable Providers (22)
codex, claude, opencode, grok, devin, qwen, qoder, droid, cursor, copilot, hermes, auggie, goose, kimi, kilocode, kiro, cline, mistral, junie, mimocode, oh-my-pi, codebuddy
Provider Metadata Includes
- provider metadata and icon assets
- host dependency detection, install, update, and uninstall descriptors
- prompt delivery behavior
- auto-approve, ACP, hooks, MCP, model, session, trust, and plugin capabilities
Agent Hooks And Notifications
Agent activity, completion, and attention notifications come from explicit hooks or plugins installed by `src/main/core/agent-hooks/`. Emdash does not infer agent status from terminal output. If a provider has no hook/plugin integration for an event, the renderer should not show or notify an inferred status for that event.
Provider Runtime Notes
- Claude uses deterministic `--session-id` values for conversation isolation.
- Agents that cannot receive an interactive initial prompt via argv or stdin use keystroke
injection — Emdash types the prompt into the TUI after startup.
- `src/main/core/agent-hooks/agent-hook-service.ts` forwards hook events to renderer windows and can show OS notifications. It also writes hook config files for hook-capable providers, including `.claude/settings.local.json`, `.qwen/settings.json`, and provider-specific global hook files.
- Qwen Code hooks use the documented Qwen settings schema in `.qwen/settings.json`. Emdash installs command hooks for permission requests and session end/stop events while preserving unrelated user hooks.
Adding Or Changing A Provider
1. add or update the plugin in `packages/plugins/src/agents/impl/` and register it in `packages/plugins/src/agents/registry.ts` 2. update allowlisted agent env vars in `src/main/core/pty/pty-env.ts` if needed 3. add or update hook/plugin installation in `src/main/core/agent-hooks/` if the provider supports explicit events 4. validate detection behavior in `src/main/core/dependencies/` 5. add or update tests for any non-standard behavior
Emdash is the Open-Source Agentic Development Environment (🧡 YC W26). Run multiple coding agents in parallel. Use any provider.
Repo: generalaction/emdash
Other agents on emdash.
- acp-runtime
The ACP runtime is the domain service that serves the ACP API contract. It owns the host-scoped dependencies needed to run provider ACP sessions, but it should not mix cross-session routing with per-session state projection.
Open agent - main-process
The main process is organized into domain modules under `src/main/core/`. Each domain typically has a `controller.ts` (RPC handlers) and service/implementation files.
Open agent - overview
All paths are relative to `apps/emdash-desktop/`.
Open agent - renderer
All paths are relative to `apps/emdash-desktop/`.
Open agent - shared
- Agent/provider DTOs: - `src/shared/core/agents/agent-payload.ts` - provider metadata and capabilities are sourced from `packages/plugins/src/agents/registry.ts` - IPC primitives: - `src/shared/ipc/rpc.ts` — typed RPC router, controller, and client - `src/shared/ipc/events.ts`
Open agent - workspace-server
The Workspace Server (`apps/workspace-server/`) is a Node daemon that runs on a remote machine and exposes workspace runtimes (git, files, deps, ACP, …) to Emdash clients over the `@emdash/wire` protocol. Clients connect over an SSH-forwarded Unix socket; the daemon is
Open agent

