Skip to content
Agent Workspaces
Agent

providers

- `packages/plugins/src/agents/registry.ts` - `packages/plugins/src/agents/impl/` - `src/main/core/dependencies/dependency-managers.ts` - `src/main/core/pty/`

From plugin
emdash
6.2k33 skills33 agents

Agent definition

providers.md

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 (37)

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, muse, jules, junie, oh-my-pi, pi, prime-agent, autohand, letta, mimocode, zero

Current ACP-Capable Providers (23)

codex, claude, opencode, grok, devin, qwen, qoder, droid, cursor, copilot, hermes, auggie, goose, kimi, kilocode, kiro, cline, mistral, junie, mimocode, oh-my-pi, prime-agent, codebuddy

Provider Metadata Includes

  • provider metadata and icon assets
  • PATH host dependency definitions and optional self-update argv descriptors
  • prompt delivery behavior
  • auto-approve, ACP, hooks, MCP, model, session, trust, and plugin capabilities

Agent Hooks And Notifications

Agent activity, completion, and attention states come from explicit hooks or plugins installed by the `tui-agents` runtime in `packages/core/src/runtimes/tui-agents/`. 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.

ACP conversations project agent status from runtime session summaries. Pending permission requests set `awaiting-input`, including requests already present on first observation. Resolving the final request restores `working` if generation continues and the session is not cancelling. The task and conversation indicators consume this projected status.

Provider-injected transcript notifications are normalized by the provider plugin, not by the Markdown renderer. Claude monitor envelopes become passive `notification` items; they do not open user turns, settle foreground work, or mark an idle session as generating. Task envelopes with a tool identity and an explicit known status continue to update subagent state. Missing or unknown statuses must not default to running. Incomplete or unrecognized envelopes remain readable message text: chat-ui renders HTML/XML nodes literally instead of dropping them or executing markup.

Shipped hook integrations install into user-global provider configuration, never into a task worktree. The provider behavior resolves its root from the same allowlisted environment passed to the CLI, including provider-specific home overrides and XDG/APPDATA conventions. Paths returned by hook and file-drop behaviors are relative to that root. `scope: 'workspace'` remains available as an extension escape hatch, but no built-in provider uses it.

Managed config entries include an Emdash hook-config version marker. On session startup the installer checks the complete expected entry set before taking a per-root write lock, checks again under the lock, and writes only when missing or stale. Existing JSON or TOML that cannot be parsed is left untouched and reported through logging. Global hooks are harmless in sessions outside Emdash: their commands exit successfully when the Emdash hook server environment is absent. On Windows each hook command is a single `powershell.exe ... -EncodedCommand` call, because agents run hooks through Git Bash, cmd.exe or PowerShell. Do not wrap it in `cmd.exe /c` or add `/`-style switches, redirects, or quotes: Git Bash rewrites `/c` into a path, and cmd.exe then reads the hook payload from stdin as commands.

The global roots used by the built-in integrations are:

| Providers | Root behavior | | --- | --- | | Auggie, CodeBuddy, Command Code, Qoder, Grok, Amp, Kilo, Droid, Goose | Fixed home roots (`~/.augment`, `~/.codebuddy`, `~/.commandcode`, `~/.qoder`, `~/.grok`, `~/.amp`, `~/.kilo`, `~/.factory`, `~/.agents`) | | Claude, Codex, Copilot, Qwen, Kimi, Kiro, Mistral Vibe | Provider home env override with a home fallback | | OpenCode, MiMoCode, Devin | Provider override where supported, then XDG config on POSIX or APPDATA on Windows | | Pi | `$PI_CODING_AGENT_DIR` with `~/.pi/agent` fallback | | Oh My Pi | `$PI_CODING_AGENT_DIR`, then `$PI_CONFIG_DIR`, with `~/.omp/agent` fallback | | Prime Agent | `$PRIME_AGENT_CODING_AGENT_DIR` with `~/.prime/agent` fallback | | Antigravity CLI | `~/.gemini/config` | | Muse Code | `$XDG_CONFIG_HOME/muse`, falling back to `~/.config/muse` on macOS and Linux |

Kimi also keeps the legacy `~/.kimi/config.toml` root synchronized. Kiro maintains both the classic `agents/emdash.json` format and the standalone `hooks/emdash.json` v1 schema so classic and `--v3` sessions are covered. The agent details UI obtains read-only installed/pending status through the host's `agent-config` runtime for both local and remote hosts.

Provider API Keys

Emdash passes provider API keys through to the agent CLIs it spawns. The allowlisted agent environment in `packages/core/src/primitives/agent-env/api/index.ts` is the single source of truth for which variables reach a spawned agent.

[OrcaRouter](https://www.orcarouter.ai) is an OpenAI-compatible gateway that routes to models from OpenAI, Anthropic, Google, DeepSeek, Qwen, and more through one API key (`sk-orca-…`). OpenCode resolves `orcarouter/*` models through its models.dev catalog, so setting `ORCAROUTER_API_KEY` lets you select an OrcaRouter model from the OpenCode model picker.

Provider Runtime Notes

  • Host dependencies are resolved by the host-scoped `HostDependencies` Wire component.

Provider plugins declare PATH-only definitions (`binaryNames`, install guidance, and optional update argv). Runtimes receive only the narrow resolver contract and must not infer package managers, fetch latest versions, or keep a second executable cache.

  • Agent list/status reads observe the demand-driven dependency snapshot; they must not force a

full refresh. Explicit overlapping desktop refreshes share one reques

Read more
@generalaction
Ships withemdash

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

Stars on GitHub

Momentum

stars in total
6.2k
Star history of generalaction/emdash on GitHub, a chart by star-history.com

Other agents on emdash.

acp-runtime

acp-runtime

Agent

The ACP runtime is the domain service that serves the ACP API contract. It owns the host-scoped dependencies needed to run…

core-modules

core-modules

Agent

This page defines the target organization of `packages/core/src/`. Core is organized by module type so that shared domain APIs…

git-runtime

git-runtime

Agent

Git is split into a transport contract and a host-scoped runtime. Renderer, desktop, and workspace-server code share the Wire…

main-process

main-process

Agent

The main process is organized into domain modules under `src/main/core/`. Each domain typically has a `controller.ts` (RPC…

path-system

path-system

Agent

`@emdash/core/primitives/path/api` is the source of truth for portable file identity and lexical path operations. The detailed…

More agents from other plugins.

api-builder

api-builder

Agent

Deprecated placeholder. Do not use; follow root AGENTS.md and package instructions instead.

happier1d2.2k
@happier-dev@happier-devInstall Agent

Questions about providers.

Which coding agents can use providers?
providers installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.