StemCode 1.1.23

dotnet add package StemCode --version 1.1.23
                    
NuGet\Install-Package StemCode -Version 1.1.23
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StemCode" Version="1.1.23" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="StemCode" Version="1.1.23" />
                    
Directory.Packages.props
<PackageReference Include="StemCode" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add StemCode --version 1.1.23
                    
#r "nuget: StemCode, 1.1.23"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package StemCode@1.1.23
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=StemCode&version=1.1.23
                    
Install as a Cake Addin
#tool nuget:?package=StemCode&version=1.1.23
                    
Install as a Cake Tool

StemCode

StemCode provides the core libraries and application services behind StemCode, a local AI coding agent built for repository-aware development workflows.

If you want the end-user command-line experience, install the stemcode CLI from the release installers:

  • macOS / Linux: curl -fsSL https://raw.githubusercontent.com/rizwan3d/StemCode/master/scripts/install.sh | bash
  • Windows PowerShell: irm https://raw.githubusercontent.com/rizwan3d/StemCode/master/scripts/install.ps1 | iex

See the releases page for all download options.

Embed the SDK

The StemCode.Sdk namespace lets you drive the coding agent from your own application (an app builder, a server, a bot, automation) without implementing the interactive console UI. Configure a provider and model with the fluent builder, then run turns and subscribe to progress events. Provider credentials are held in memory only — embedding the SDK never touches the machine-wide StemCode configuration.

using StemCode.Sdk;

await using StemCodeClient client = StemCodeClient.CreateBuilder()
    .UseAnthropic(apiKey, "claude-opus-4-8")   // or UseOpenAi / UseOllama / UseOpenAiCompatible / ...
    .UseBuildTool()                            // full coding-agent tool bundle
    .WithWorkspace("/path/to/repo")
    .AutoApproveTools()                          // for trusted / sandboxed automation
    .Build();

// Surface progress in your UI (final answer is still returned from RunTurnAsync).
client.AssistantMessageChunkReceived += (_, e) => Console.Write(e.Text);
client.ToolCallsStarted += (_, e) => Console.WriteLine($"Running {e.ToolCalls.Count} tool(s)...");
client.StatusMessage   += (_, e) => Console.WriteLine($"[{e.Severity}] {e.Message}");

await client.InitializeAsync();
ConversationTurnResult result = await client.RunTurnAsync("Build a TODO app");
Console.WriteLine(result.ResponseText);

Create a client without any built-in StemCode tools by omitting UseBuildTool(). The agent can answer normally, but it cannot call repository editing, file, shell, browser, planning, memory, code intelligence, or subagent tools unless you add tools yourself.

SDK clients start with no configured base system prompt. Add one explicitly with WithSystemPrompt(...), or opt into StemCode's built-in coding-agent prompt with UseStemCodeSystemPrompt():

await using StemCodeClient client = StemCodeClient.CreateBuilder()
    .UseAnthropic(apiKey, "claude-opus-4-8")
    .WithSystemPrompt("Follow this product team's engineering conventions.")
    .Build();

await using StemCodeClient stemCodePromptClient = StemCodeClient.CreateBuilder()
    .UseAnthropic(apiKey, "claude-opus-4-8")
    .UseStemCodeSystemPrompt()
    .Build();

SDK observability is opt-in. Configure logging with the standard Microsoft.Extensions.Logging builder, enable tracing with WithOpenTelemetryTracing(), and export spans by subscribing to StemCodeObservability.ActivitySourceName from your OpenTelemetry setup. Built-in anonymous product telemetry is disabled for SDK clients unless you call EnableProductTelemetry().

using Microsoft.Extensions.Logging;
using StemCode.Sdk;

await using StemCodeClient client = StemCodeClient.CreateBuilder()
    .UseAnthropic(apiKey, "claude-opus-4-8")
    .WithLogging(logging => logging.AddConsole())
    .WithOpenTelemetryTracing()
    .Build();

// In your OpenTelemetry tracer provider:
// builder.AddSource(StemCodeObservability.ActivitySourceName);
using StemCode.Sdk;

await using StemCodeClient client = StemCodeClient.CreateBuilder()
    .UseAnthropic(apiKey, "claude-opus-4-8")
    .Build();

client.AssistantMessageChunkReceived += (_, e) => Console.Write(e.Text);

await client.InitializeAsync();
ConversationTurnResult result = await client.RunTurnAsync("Explain dependency injection in C#.");
Console.WriteLine(result.ResponseText);

Build a simple conversation loop by initializing once, then calling RunTurnAsync for each user message. Reusing the same client keeps the session history alive between turns.

using StemCode.Sdk;

await using StemCodeClient client = StemCodeClient.CreateBuilder()
    .UseAnthropic(apiKey, "claude-opus-4-8")
    .UseBuildTool()
    .WithWorkspace("/path/to/repo")
    .Build();

client.AssistantMessageChunkReceived += (_, e) => Console.Write(e.Text);
client.ToolCallsStarted += (_, e) => Console.WriteLine($"Running {e.ToolCalls.Count} tool(s)...");

await client.InitializeAsync();

while (true)
{
    Console.Write("> ");
    string? prompt = Console.ReadLine();

    if (string.IsNullOrWhiteSpace(prompt) ||
        prompt.Equals("exit", StringComparison.OrdinalIgnoreCase))
    {
        break;
    }

    Console.WriteLine();
    await client.RunTurnAsync(prompt);
    Console.WriteLine();
}

Extend it with your own tools and services:

StemCodeClient client = StemCodeClient.CreateBuilder()
    .UseAnthropic(apiKey)
    .UseBuildTool()                            // alternative to Semantic Kernel-style tool orchestration
    .AddTool(new MyDeployTool())                 // custom ITool the agent can call
    .AddMcpServer(new BackendMcpServerConfiguration("docs") { Url = "https://..." })
    .ConfigureServices(services => { /* override or add any DI service */ })
    .Build();

The CLI and desktop apps continue to use the same core through their existing entry points; the SDK is an additive layer on top.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.23 107 9/23/2026
1.1.22 109 9/23/2026
1.1.21 105 9/23/2026
1.1.20 107 9/23/2026
1.1.19 98 9/23/2026
1.1.18 100 9/18/2026
1.1.17 96 9/18/2026
1.1.16 95 9/17/2026
1.1.15 118 8/27/2026
1.1.14 121 8/27/2026
1.1.13 118 8/22/2026
1.1.12 163 8/16/2026
1.1.11 126 8/15/2026
1.1.10 120 8/15/2026
1.1.9 121 8/14/2026