<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://firefox2100.github.io/dsh-ai-providers/blog</id>
    <title>DSH AI Providers Blog</title>
    <updated>2026-10-16T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://firefox2100.github.io/dsh-ai-providers/blog"/>
    <subtitle>DSH AI Providers Blog</subtitle>
    <icon>https://firefox2100.github.io/dsh-ai-providers/img/favicon.svg</icon>
    <entry>
        <title type="html"><![CDATA[DSH AI Providers is ready for use]]></title>
        <id>https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use</id>
        <link href="https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use"/>
        <updated>2026-10-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A stable interface for language models, retrieval, speech, and image generation in DeepSeek Harness plugins.]]></summary>
        <content type="html"><![CDATA[<p>DSH AI Providers is ready for developers and users to install. Version 0.1.3 is published on npm, the provider bundle can be added to a DeepSeek Harness profile, and the interfaces needed by consumer plugins are documented.</p>
<p>The project gives DSH plugins one provider-neutral way to use language models, embeddings, reranking, text-to-speech, speech-to-text, and image generation. A plugin can depend on the shared contracts instead of building its own credential storage, provider selection, concurrency controls, and vendor transports.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_hA1m" id="one-interface-several-kinds-of-ai-service">One interface, several kinds of AI service<a href="https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use#one-interface-several-kinds-of-ai-service" class="hash-link" aria-label="Direct link to One interface, several kinds of AI service" title="Direct link to One interface, several kinds of AI service" translate="no">​</a></h2>
<p>AI features tend to arrive in separate integrations. A plugin adds one implementation for embeddings, another for speech, then repeats the work for a second vendor. The resulting code mixes the feature itself with authentication, endpoints, request formats, error handling, and settings.</p>
<p>DSH AI Providers moves that plumbing behind stable TypeScript services. Consumer plugins call interfaces from <code>@dsh-ai-providers/core</code>. Provider packages implement those interfaces, while <code>@dsh-ai-providers/runtime</code> handles registration, selection, settings, credentials, probes, and shared concurrency limits.</p>
<p>The current contracts cover:</p>
<ul>
<li class="">language-model routes and streaming responses;</li>
<li class="">embeddings and reranking;</li>
<li class="">text-to-speech and completed or realtime speech-to-text;</li>
<li class="">image generation, including reference images where the provider supports them.</li>
</ul>
<p>The common interface stays deliberately small. Vendor packages can still expose useful request controls, and the runtime can render those settings without requiring the consumer to know the vendor.</p>
<h2 class="anchor anchorTargetStickyNavbar_hA1m" id="providers-available-in-the-first-release">Providers available in the first release<a href="https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use#providers-available-in-the-first-release" class="hash-link" aria-label="Direct link to Providers available in the first release" title="Direct link to Providers available in the first release" translate="no">​</a></h2>
<p>The maintained bundle installs the runtime and four provider packages.</p>
<p><code>@dsh-ai-providers/openai</code> supports reusable OpenAI-compatible connections for language models, embeddings, speech, and image generation. <code>@dsh-ai-providers/localai</code> uses the same general protocols with LocalAI-specific defaults, reranking, realtime transcription, and native image controls. <code>@dsh-ai-providers/anthropic</code> provides language models through Anthropic's Messages API. <code>@dsh-ai-providers/jina-cohere</code> covers Jina- and Cohere-compatible reranking endpoints.</p>
<p>The OpenAI-compatible transports are also published separately as <code>@dsh-ai-providers/openai-compatible</code>. Provider authors can reuse them without depending on the OpenAI plugin itself.</p>
<p>Connections and credentials are configured once in DSH. Each capability can then select the appropriate connection independently. A local endpoint might provide the language model and embeddings, while another service handles speech or reranking.</p>
<h2 class="anchor anchorTargetStickyNavbar_hA1m" id="designed-for-consumer-plugins">Designed for consumer plugins<a href="https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use#designed-for-consumer-plugins" class="hash-link" aria-label="Direct link to Designed for consumer plugins" title="Direct link to Designed for consumer plugins" translate="no">​</a></h2>
<p>The main audience is developers building DSH plugins. Installing the bundle does not add an assistant and does not send a request by itself. It supplies services that another plugin can consume.</p>
<p>A consumer declares the service it needs and calls its stable contract. For example, an embedding consumer receives ready-to-use vectors. It remains responsible for storing them beside its own data. This boundary avoids a shared cache that cannot understand the consumer's lifecycle or invalidation rules.</p>
<p>Services follow DSH's live configuration model. Provider selections and request defaults can change without rewriting consumer code. Unavailable capabilities withdraw their usable service value instead of leaving a facade that fails later for an unexplained reason. Failures cross the boundary as shared error types rather than vendor-specific exceptions.</p>
<p>Concurrency is shared as well. Limits can cover a model route or an entire capability, reserve capacity for foreground work, and allow background indexing or media jobs to wait without blocking a user's next request indefinitely.</p>
<p>The <a class="" href="https://firefox2100.github.io/dsh-ai-providers/docs/consumers/using-services">consumer guide</a> shows the service interfaces and lifecycle rules. Developers implementing another vendor can start with the <a class="" href="https://firefox2100.github.io/dsh-ai-providers/docs/providers/creating-provider">provider guide</a> and the <a class="" href="https://firefox2100.github.io/dsh-ai-providers/docs/reference/core-contracts">core contract reference</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_hA1m" id="ready-means-usable-with-a-clear-compatibility-range">Ready means usable, with a clear compatibility range<a href="https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use#ready-means-usable-with-a-clear-compatibility-range" class="hash-link" aria-label="Direct link to Ready means usable, with a clear compatibility range" title="Direct link to Ready means usable, with a clear compatibility range" translate="no">​</a></h2>
<p>Version 0.1.3 is the first release I consider ready for normal use. All public packages share the same version, include DSH bundle metadata where applicable, and are published through the repository's release checks. The workspace includes type checking, automated tests, production builds, and package validation before publishing.</p>
<p>The project currently targets DSH <code>&gt;=0.2.0-rc.2 &lt;0.3.0</code>. DSH is still pre-stable, so that compatibility range matters. A future DSH release may require a corresponding provider update. The interfaces in <code>@dsh-ai-providers/core</code> are intended to remain the stable surface for consumers, but version 0.1.x should still be treated as an early public series rather than a promise that no contract will ever change.</p>
<p>The implementation has also been exercised with LocalAI for language models, embeddings, reranking, speech, and image generation. Provider-specific guides state what each package supports and where an upstream service imposes a limitation. That is a stronger readiness claim than saying every compatible endpoint behaves identically.</p>
<h2 class="anchor anchorTargetStickyNavbar_hA1m" id="install-the-complete-bundle">Install the complete bundle<a href="https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use#install-the-complete-bundle" class="hash-link" aria-label="Direct link to Install the complete bundle" title="Direct link to Install the complete bundle" translate="no">​</a></h2>
<p>Add the maintained bundle to the DSH profile that should use it:</p>
<div class="language-bash codeBlockContainer_TJey theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_IKgH"><pre tabindex="0" class="prism-code language-bash codeBlock_cpk8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines__RHY"><div class="token-line" style="color:#393A34"><span class="token plain">dsh plugin --profile &lt;profile&gt; add @dsh-ai-providers/all</span><br></div></code></pre></div></div>
<p>Restart the profile, then open <strong>Settings &gt; AI Providers</strong>. Configure the required connections and credential references, choose active services, and test them from the settings pages. The <a class="" href="https://firefox2100.github.io/dsh-ai-providers/docs/getting-started/installation">installation guide</a> covers the profile changes needed when these language-model routes replace DSH's stock adapter.</p>
<p>Individual packages can be installed separately when a profile only needs part of the bundle. Plugin developers normally depend on <code>@dsh-ai-providers/core</code> for types and contracts, then leave provider choice to the user's profile.</p>
<h2 class="anchor anchorTargetStickyNavbar_hA1m" id="what-comes-next">What comes next<a href="https://firefox2100.github.io/dsh-ai-providers/blog/dsh-ai-providers-ready-for-use#what-comes-next" class="hash-link" aria-label="Direct link to What comes next" title="Direct link to What comes next" translate="no">​</a></h2>
<p>The project now has a usable base: common contracts, a runtime, maintained providers, configuration UI, documentation, and a release path. Future posts will be reserved for changes that deserve more than a changelog entry, such as an important provider, a new capability, or a material change to the developer contract.</p>
<p>For now, the useful next step is to install the bundle in a test profile, configure the services a consumer needs, and report concrete compatibility problems through the <a href="https://github.com/Firefox2100/dsh-ai-providers/issues" target="_blank" rel="noopener noreferrer" class="">project issue tracker</a>.</p>]]></content>
        <author>
            <name>Firefox2100</name>
            <uri>https://github.com/Firefox2100</uri>
        </author>
        <category label="DSH AI Providers" term="DSH AI Providers"/>
        <category label="Release" term="Release"/>
    </entry>
</feed>