![]() |
VOOZH | about |
dotnet add package CircleAI.Hosting --version 3.0.0
NuGet\Install-Package CircleAI.Hosting -Version 3.0.0
<PackageReference Include="CircleAI.Hosting" Version="3.0.0" />
<PackageVersion Include="CircleAI.Hosting" Version="3.0.0" />Directory.Packages.props
<PackageReference Include="CircleAI.Hosting" />Project file
paket add CircleAI.Hosting --version 3.0.0
#r "nuget: CircleAI.Hosting, 3.0.0"
#:package CircleAI.Hosting@3.0.0
#addin nuget:?package=CircleAI.Hosting&version=3.0.0Install as a Cake Addin
#tool nuget:?package=CircleAI.Hosting&version=3.0.0Install as a Cake Tool
On-device companion AI for the Aether Protocol ecosystem. ~100 C# modules covering inference, multi-agent orchestration, memory + persona, voice, tooling, mesh transport, and 50+ domain adapters β plus an OpenAI-compatible self-hosted inference server you can drop behind a load balancer.
Built around one architectural promise: the SDK has zero model knowledge. ModelScope's catalog is the source of truth, discovered at runtime. A new Qwen / Kimi / DeepSeek variant lands on ModelScope, the SDK picks it up on next refresh. NuGet sleeps β releases are for SDK bugs and new runtime backends, not "we support a new model."
See for why.
The trinity every consumer binds to:
| Type | Where | Purpose |
|---|---|---|
IChatGenerator |
CircleAI.Inference |
The atomic seam: messages in, tokens out |
IInferenceBridge |
CircleAI.Hosting.InferenceBridge |
Lifecycle + descriptor wrapper around a generator |
IAIService |
CircleAI.Hosting |
The long-lived companion service β RAG, persona, tools, observers |
Runtime: Alibaba MNN (Apache-2.0) on every platform. Models: Qwen 3+, Kimi-VL, DeepSeek, GLM β discovered through ModelScope, not pinned in source. See for the full Chinese-sovereign rationale.
CircleAI.Inference.ServerOpenAI-compatible HTTP server. Endpoints: /v1/chat/completions (SSE
streaming), /v1/embeddings, /v1/companion/*, /v1/diagnostics,
/v1/healthz, /v1/readyz. JWT and API-key auth out of the box. Ships
with a Dockerfile, a systemd unit, and a Windows-service install script.
Drop it behind a load balancer and any OpenAI-SDK consumer talks to it unchanged.
CircleAI.Companion β long-running session loop with proactive turn
generation and mesh-state sync.CircleAI.Memory β episodic memory + RAG context builder, persona
evolution, affect state, goal tracking, feedback signals.CircleAI.Orchestration β multi-agent loop (LokiOrchestrator)
with quality gates and concurrent dispatch.CircleAI.Tools β IToolBridge for function calling. Built-in
HttpToolBridge maps REST APIs to tool definitions.CircleAI.Skills β pluggable capability surface the model can
invoke contextually.CircleAI.Voice β ONNX TTS / STT pipeline (the only ONNX dependency
in the codebase β text inference stays MNN).CircleAI.Networking.* β pluggable transports (HTTP / WebSocket /
AetherNet are production; BLE / DTN / NearLink are scaffolded).
ITransportSelector picks per-message based on connectivity, not by
consumer choice.CircleAI.Security.* β mesh-directive-driven chat refusal,
AetherMesh bindings.CircleAI.Beauty, CircleAI.Construction, CircleAI.Faith,
CircleAI.Family, CircleAI.Fitness, CircleAI.Food,
CircleAI.Healthcare, CircleAI.RealEstate, CircleAI.Tourism,
CircleAI.Tradesperson, β¦ β each provides domain-specific system-prompt
context, knowledge facets, and lifecycle hooks. The companion engine
loads only the adapters whose required sensors / UI fit the host device.
dotnet add package CircleAI.Inference.Server # if you want the HTTP server
dotnet add package CircleAI.Hosting # if you want the in-process service
using CircleAI.Hosting;
// The SDK figures out: which model fits this device, what context window
// it can sustain, how many agents it can dispatch concurrently, which
// KV-compression mode to use. The consumer only states intent.
var ai = new AIService(new AIOptions
{
SystemPrompt = "You are B!, the helpful one.",
RequiredCapabilities = ChatCapability.Default | ChatCapability.Tools,
});
await ai.StartAsync();
var answer = await ai.AskAsync("What's the capital of Morocco?");
Console.WriteLine(answer);
That's it. No ModelId. No ContextSize. No MaxConcurrency. The
SDK probes the device, queries the ModelScope catalog, picks the
highest-quality bundle that fits + satisfies the capability flags, and
keeps that decision live as the catalog refreshes.
For the full picture (overrides, injection points, observer events, bring-your-own-runtime), see .
docker run -d -p 5050:5050 \
-v ~/.circleai/models:/var/lib/circleai/models \
ghcr.io/bhengubv/circleai-inference-server:latest
# Drop-in OpenAI replacement
curl http://localhost:5050/v1/chat/completions \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hi"}]}'
"model":"auto" β IModelSelector.BestFit(deviceProbe, ChatCapability.Default). The server picks; you don't.
Full deployment guide in .
The portable Circle AI kernel (AffectState math, KnownLanguages registry, ICompanionSession contracts) ships in 10 languages so every Aether node can host the companion stack natively β C#, Python, TypeScript, Go, Kotlin, Swift, Rust, C, Android (Kotlin), HarmonyOS (ArkTS).
The 10-language SDK lives alongside the C# framework in this repository. Per-language quickstarts: see .
MIT. See .
| Doc | Purpose |
|---|---|
| Why ModelScope is the catalog and NuGet sleeps | |
| The full Chinese-sovereign stack rationale | |
| The trinity, the three injection points, worked example | |
| MNN native-runtime setup per platform | |
| Open work, current priorities | |
| Per-language quickstart for the portable kernel |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 2 NuGet packages that depend on CircleAI.Hosting:
| Package | Downloads |
|---|---|
|
CircleAI.Companion
Circle AI Companion β the HER + JARVIS concierge persona. Knows who you are, remembers everything across all devices, speaks your language, feels your mood, adapts its personality, initiates contact, and acts in the world. The crown jewel of the Circle AI platform. |
|
|
CircleAI.Maui
.NET MAUI platform adapter for Circle AI. On-device inference on Android, iOS, macOS Catalyst, and Windows. |
This package is not used by any popular GitHub repositories.