![]() |
VOOZH | about |
dotnet add package CircleAI.Skills --version 3.0.0
NuGet\Install-Package CircleAI.Skills -Version 3.0.0
<PackageReference Include="CircleAI.Skills" Version="3.0.0" />
<PackageVersion Include="CircleAI.Skills" Version="3.0.0" />Directory.Packages.props
<PackageReference Include="CircleAI.Skills" />Project file
paket add CircleAI.Skills --version 3.0.0
#r "nuget: CircleAI.Skills, 3.0.0"
#:package CircleAI.Skills@3.0.0
#addin nuget:?package=CircleAI.Skills&version=3.0.0Install as a Cake Addin
#tool nuget:?package=CircleAI.Skills&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 1 NuGet packages that depend on CircleAI.Skills:
| Package | Downloads |
|---|---|
|
CircleAI.Hosting
DI wiring + proactive reasoning host for Circle AI β 2.0.3 adds the CircleAI.Hosting.Tools namespace: ToolDescriptor + IToolCatalog + IToolProvider + IToolExecutor + InMemoryToolCatalog (keyword-substring search) + ToolCatalogExtensions.ImportFromAsync. Pattern-port skeleton from composio (MIT) under Apache 2.0; downstream consumers (circle-concierge, Observer's IObserverTool) can build IToolProvider impls now. Full catalog (semantic search + bundled SaaS integrations) lands in 2.5.0. Carries forward 2.0.1's Generative UI plug point and 2.0.0's RT-04 brownout + RT-08 fallback chain. |
This package is not used by any popular GitHub repositories.