Norbert 0.1.0
See the version list below for details.
dotnet add package Norbert --version 0.1.0
NuGet\Install-Package Norbert -Version 0.1.0
<PackageReference Include="Norbert" Version="0.1.0" />
<PackageVersion Include="Norbert" Version="0.1.0" />
<PackageReference Include="Norbert" />
paket add Norbert --version 0.1.0
#r "nuget: Norbert, 0.1.0"
#:package Norbert@0.1.0
#addin nuget:?package=Norbert&version=0.1.0
#tool nuget:?package=Norbert&version=0.1.0
Norbert
Lightweight .NET library for bridging applications with AI agents through pluggable connectors.
What is Norbert?
Norbert provides a clean abstraction layer between your .NET application and AI agents like Claude, Codex, or any future provider. Instead of coupling your code to a specific AI service, you program against Norbert's interfaces and swap connectors as needed.
Your App → Norbert → Claude CLI
→ Claude API (future)
→ OpenAI (future)
→ Your own connector
Quick Start
Install
dotnet add package Norbert
dotnet add package Norbert.Claude.Cli
dotnet add package Norbert.Codex.Cli
Configure
builder.Services.AddNorbert(norbert =>
{
norbert.UseClaudeCli(cli =>
{
cli.DefaultModel = "claude-sonnet-4-20250514";
});
});
Use
public class ChatService
{
private readonly IAgentConnector _connector;
public ChatService(IAgentConnector connector)
{
_connector = connector;
}
public async Task<string> AskAsync(string question)
{
var request = new AgentRequest { Prompt = question };
var response = await _connector.SendAsync(request);
return response.Content;
}
}
Stream
var request = new AgentRequest { Prompt = "Write a poem about .NET" };
await foreach (var chunk in connector.StreamAsync(request))
{
if (chunk.Type == ChunkType.Text)
{
Console.Write(chunk.Content);
}
}
Sessions (conversation with history)
await session.SendAsync("What is CQRS?");
await session.SendAsync("How does it relate to Event Sourcing?");
// The agent remembers the first question
// Export for persistence
SessionSnapshot snapshot = session.Export();
string json = JsonSerializer.Serialize(snapshot);
Packages
| Package | Description |
|---|---|
Norbert |
Core library: interfaces, models, DI, sessions |
Norbert.Claude.Cli |
Connector for Claude CLI (claude -p ...) |
Norbert.Codex.Cli |
Connector for Codex CLI (codex exec --json ...) |
Key Features
- Pluggable connectors — swap AI providers without changing application code
- Streaming —
IAsyncEnumerable<StreamingChunk>with typed chunks (Text, Thinking, Command, Error, etc.) - Session management — in-memory conversation history with export/restore for persistence
- Dependency injection — standard
IServiceCollectionintegration with fluent builder - Thread-safe — concurrent session management via
ConcurrentDictionary
Documentation
Full documentation with examples, usage patterns, and API reference:
| English | Espanol | |
|---|---|---|
| Getting Started | Read | Leer |
| Core Concepts | Read | Leer |
| Models Reference | Read | Leer |
| Sessions In-Depth | Read | Leer |
| Dependency Injection | Read | Leer |
| Error Handling | Read | Leer |
| Claude CLI Connector | Read | Leer |
| Codex CLI Connector | Read | Leer |
Project Structure
src/
├── Norbert/ # Core library
│ ├── Abstractions/ # IAgentConnector, IAgentSession
│ ├── Constants/ # Internal constants
│ ├── Exceptions/ # NorbertException, ConnectorException
│ ├── Extensions/ # NorbertBuilder, DI extensions
│ ├── Internal/ # AgentSession, SessionManager
│ ├── Models/ # Request, Response, Chunk, Message, etc.
│ └── Options/ # ConnectorOptions
├── Norbert.Claude.Cli/ # Claude CLI connector
│ ├── Constants/ # ClaudeCliConstants
│ ├── Extensions/ # UseClaudeCli() builder extension
│ ├── Internal/ # ProcessManager, Executor, JsonParser
│ └── Options/ # ClaudeCliOptions
├── Norbert.Codex.Cli/ # Codex CLI connector
│ ├── Constants/ # CodexCliConstants
│ ├── Extensions/ # UseCodexCli() builder extension
│ ├── Internal/ # ProcessManager, Executor, JsonParser
│ └── Options/ # CodexCliOptions
tests/
├── Norbert.Tests/
├── Norbert.Claude.Cli.Tests/
├── Norbert.Codex.Cli.Tests/
samples/
├── Norbert.Sample.Api/ # ASP.NET example with SSE streaming
Requirements
- .NET 9.0+
- Claude CLI installed and in PATH (for
Norbert.Claude.Cli) - Codex CLI installed and in PATH (for
Norbert.Codex.Cli)
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net9.0
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Norbert:
| Package | Downloads |
|---|---|
|
Norbert.Claude.Cli
Claude CLI connector for Norbert — run AI agents through the Claude Code CLI |
|
|
Norbert.Codex.Cli
Codex CLI connector for Norbert - run AI agents through Codex CLI |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.1-preview.0.2 | 53 | 4/10/2026 |
| 0.1.1-preview.0.1 | 54 | 4/10/2026 |
| 0.1.0 | 125 | 4/10/2026 |
| 0.0.0-preview.0.8 | 54 | 4/10/2026 |
| 0.0.0-preview.0.6 | 53 | 4/10/2026 |
| 0.0.0-preview.0.5 | 67 | 4/10/2026 |
| 0.0.0-preview.0.4 | 67 | 4/10/2026 |
| 0.0.0-preview.0.3 | 54 | 4/10/2026 |
| 0.0.0-preview.0.2 | 56 | 4/10/2026 |
| 0.0.0-preview.0.1 | 52 | 4/10/2026 |
| 0.0.0-preview.0 | 52 | 4/10/2026 |