Skip to content
Development
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
5.7k32 skills32 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.

- `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.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.

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.

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 |

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.

  • Install command metadata stays sudo-free and declares an elevation policy. Commands that always

require elevation are wrapped by the host-dependency runtime, while npm-style `on-failure` commands first run with user privileges and may be explicitly retried with passwordless sudo after a permission-classified failure. Homebrew and user-local installers must remain `never`-elevated.

  • A provider self-update command runs directly as argv against the selected PATH binary. There is no

interpolated shell command and no uninstall/install lifecycle in provider metadata. Future managed sources such as Nix should add new source and selection variants without changing runtime spawn injection.

  • Executable selection belongs to the host-dependency runtime. Auto follows the plugin's binary

names on the host PATH; a saved path or CLI-name override resolves independently of discovery. The resolver accepts an optional proposed selection, so validation and startup share one operation and implementation. Invalid overrides block launch and never fall back to Auto. Settings save only after validation, and failed saves retain the previous selection. Existing path-selection JSON remains valid; CLI selections add a `kind: 'cli'` variant with a `command` field. Overrides accept executable files or PATH names; use a wrapper script for commands with arguments, such as `srt claude`.

  • Claude uses deterministic `--session-id` values for conversation isolation.
  • Codex ACP exposes collaboration mode separately from permission mode. The
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,748
Stars
589
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
8m ago
Last commit
1y ago
Created

Repo: generalaction/emdash

Other agents on emdash.