Novolis.Agent.Surface
2026.1.1.33
dotnet add package Novolis.Agent.Surface --version 2026.1.1.33
NuGet\Install-Package Novolis.Agent.Surface -Version 2026.1.1.33
<PackageReference Include="Novolis.Agent.Surface" Version="2026.1.1.33" />
<PackageVersion Include="Novolis.Agent.Surface" Version="2026.1.1.33" />
<PackageReference Include="Novolis.Agent.Surface" />
paket add Novolis.Agent.Surface --version 2026.1.1.33
#r "nuget: Novolis.Agent.Surface, 2026.1.1.33"
#:package Novolis.Agent.Surface@2026.1.1.33
#addin nuget:?package=Novolis.Agent.Surface&version=2026.1.1.33
#tool nuget:?package=Novolis.Agent.Surface&version=2026.1.1.33
Novolis.Agent.Surface
Attributed agent surfaces on top of Novolis.Agent.Core: a single [AgentSurface]-decorated
interface auto-builds an action catalog, JSON Schema, an OpenAPI fragment, MCP tool descriptors, and JSON-RPC method
descriptors — then attaches loopback HTTP (+ WebSocket + SSE), TCP JSONL, JSON-RPC 2.0, local-IPC (MessagePack), stdio
JSONL, and MCP-stdio transports around any IAgentHost implementation.
Install
dotnet add package Novolis.Agent.Surface
Define a surface
[AgentSurface("my-app", Description = "My app's agent surface.")]
[AgentAction("doThing", Summary = "Do the thing", Params = "id; count?")]
public interface IMyAgentSurface;
var definition = AgentSurfaceDefinition.From<IMyAgentSurface>();
Attach transports
IAgentHost host = new MyAgentHost();
// Everything, unconditionally (good for "always on" apps):
await using var surface = AgentSurface.AttachAll(host, definition);
// Or gated by environment variables (NOVOLIS_AGENT, NOVOLIS_AGENT_HTTP, ...):
await using var surface = AgentSurface.TryAttachFromEnvironment(host, definition);
surface.HttpBaseUrl, surface.WebSocketUrl, surface.TcpPort, and surface.RpcPort report the bound endpoints.
Each host writes a small marker file under the temp directory ({MarkerPrefix}.http, .ws, .ipc, .tcp, .rpc,
.mcp) so sidecar processes can discover a running surface without guessing ports.
Discover the surface
GET /agent/document— full JSON document (capabilities, actions, command schema, OpenAPI, MCP tools, RPC methods).GET /agent/openapi/GET /agent/openapi.json— OpenAPI 3.0 fragment for/agent/*routes.GET /agent/mcp/tools— MCP tool descriptors ({surfaceId}_hello,_snapshot,_actions,_command, ...).GET /agent/rpc/methods— JSON-RPC method descriptors.GET /agent/announce— a lightweightAgentAnnouncementfor presence/discovery.
Clients
AgentHttpClient— REST client for the HTTP surface.AgentLocalIpcClient— MessagePack client for the local-IPC surface.
Command line agent tooling
AgentMcpStdioTransport speaks a minimal Model Context Protocol over stdio (initialize, tools/list,
tools/call) so an app can be driven directly by an MCP-aware agent host process.
| Product | Versions 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. |
-
net10.0
- Novolis.Agent.Core (>= 2026.1.1.33)
- Novolis.Transports.LocalIpc (>= 2026.1.10.32)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Novolis.Agent.Surface:
| Package | Downloads |
|---|---|
|
Novolis.Avalonia.ThreeD
Avalonia ThreeD editor surface: scene hierarchy, OpenGL wireframe viewport, mesh tools, lights, cameras, and agent session. |
|
|
Novolis.Logging.Agent
Agent Surface host for Novolis remote logging (snapshot tail, subscribe, setlevel/clear). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.1.33 | 38 | 10/4/2026 |
| 2026.1.1.32 | 36 | 10/4/2026 |
| 2026.1.1.31 | 67 | 10/2/2026 |