Build against one stable interface.
Use language models, retrieval, speech, and images in DSH plugins without rebuilding provider plumbing for every integration.
Independent project · DSH 0.2.x · English and Simplified Chinese
await ctx.embeddings.embed(texts)The abstraction is the product.
Consumer plugins call stable services. The runtime owns selection and coordination. Vendor packages own transport and useful provider-specific controls.
Depends on shared types and requests a capability from the Cordis context.
Registers providers, resolves selections, normalizes failures, and gates concurrency.
Resolves its connection and performs the provider-specific request.
const vectors = await ctx.embeddings.embed(texts, {
inputType: 'document',
signal,
})The consumer does not handle the vendor credential, endpoint, batching, HTTP errors, or provider selection. Those concerns stay behind the service boundary.
Implemented capability surface
One bundle installs the runtime and every provider maintained by this project. Install packages individually when a deployment needs less.
Interchangeable at the boundary. Specific where it matters.
The common contract stays deliberately small. Provider packages can still expose model names, dimensions, voices, reasoning controls, and other options their services actually support.
Read the architectureLLM · embed · TTS · STT · imageLLM · embed · rerank · decide · TTS · STT · imageLLMLLM · embedLLM · embed · rerankLLM · embed · rerank · TTS · STT · imagererank · embeddecideStop rebuilding the same integration layer.
Install the maintained bundle, or depend on the core contract and the provider packages your plugin needs.