Skip to main content

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

Illustrative integration path contract available
Consumer pluginawait ctx.embeddings.embed(texts)
OpenAILocalAIAnthropicOllamaCohereDashScopeJina
@dsh-ai-providers/coreStable consumer contract
llmLanguage models
embedEmbeddings
rerankReranking
ttsText-to-speech
sttSpeech-to-text
imageImage generation
decisionDecisions
Configure onceReuse connections and credential references across capabilities.
Consume one contractKeep plugin code independent from vendor transports.
Coordinate capacityShare limits while reserving room for foreground work.

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.

01Consumer

Depends on shared types and requests a capability from the Cordis context.

02Runtime

Registers providers, resolves selections, normalizes failures, and gates concurrency.

03Vendor package

Resolves its connection and performs the provider-specific request.

consumer.tsconst 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.

llmLanguage modelsMultiple provider routes coexist through DSH’s model interface.
embedEmbeddingsSelected provider exposed as ctx.embeddings.
rerankRerankingSelected provider exposed as ctx.rerankers.
ttsText-to-speechStreaming audio through ctx.textToSpeech.
sttSpeech-to-textFile and optional live transcription services.
imageImage generationGenerated blobs and optional reference images.
decisionDecisionsTyped answers as probabilities through ctx.decisions.

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 architecture
OpenAI-compatibleLLM · embed · TTS · STT · image
LocalAILLM · embed · rerank · decide · TTS · STT · image
AnthropicLLM
OllamaLLM · embed
CohereLLM · embed · rerank
DashScopeLLM · embed · rerank · TTS · STT · image
Jinarerank · embed
TypeSafedecide

Stop rebuilding the same integration layer.

Install the maintained bundle, or depend on the core contract and the provider packages your plugin needs.