# ctx.subagents `SubagentService` — provided by `@deepseek-ai/dsh-subagent`. Named provider registry and capability-checked start surface. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/subagent/subagent/src/index.ts#L153) ### ctx.subagents.registerProvider(provider) ```ts website-api registerProvider(provider: SubagentProvider): () => void ``` Register a provider under its name. Registration is effect-scoped and HMR safe; removing a provider blocks new starts but does not revoke runs that were already returned to their holders. - `provider` — the trusted provider implementation. **Returns** the exact Cordis effect disposer. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/subagent/subagent/src/index.ts#L167) ### ctx.subagents.getProvider(name) ```ts website-api getProvider(name: string): SubagentProvider | undefined ``` Look up a provider by name. - `name` — the provider name. **Returns** the provider, or undefined when absent. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/subagent/subagent/src/index.ts#L190) ### ctx.subagents.list() ```ts website-api list(): string[] ``` List registered provider names in insertion order. **Returns** the registered names. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/subagent/subagent/src/index.ts#L198) ### ctx.subagents.start(name, request) ```ts website-api async start(name: string, request: SubagentStartRequest): Promise ``` Establish a ready child on the named provider. Capability and semantic checks run before delegation. Provider ownership lasts until its promise fulfills; a rejection therefore has no run for the caller to dispose and emits no run lifecycle events. - `name` — the provider to use. - `request` — child prompt, parent, signal, and optional capabilities. **Returns** the ready holder-owned run. [Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/subagent/subagent/src/index.ts#L211)