Home / Docs / OpenCaddis.Server

OpenCaddis.Server

The local FabrCore runtime

OpenCaddis.Server packages a FabrCore Host and FabrCore Surface into a host that can be started and stopped by OpenCaddis.App. It exposes discovery and agent creation, accepts protected Harness Skill packages, and remains the runtime destination for compiled add-ons.

What the Server enables

Registry and agent creation

Discovery metadata for registered agents, plugins, and tools plus the Host API used by the App to create configured agents.

Surface command center

Agent directory, chat, live status, shared agents, Adaptive Cards, and diagnostics. Agent creation is currently disabled in Surface.

Add-on discovery

Recursively discovers managed DLLs in the configured add-on directory and loads them through a collectible assembly context.

Cloud configuration and Skill administration

Downloads the matching model configuration and protects principal-scoped Harness Skill publishing with the App's generated local admin key.

Runtime routes

RoutePurpose
/Minimal health landing page showing that the selected host is running.
/surfaceFabrCore Surface command center.
/addonsReports the configured path and assemblies loaded for the current host.
/fabrcoreapi/*FabrCore host API surface.
/fabrcoreapi/admin/v1/principals/{principal}/skills/*Protected Harness Skill administration used by OpenCaddis Builder provisioning.

Registry-driven agent creation

OpenCaddis.App queries the running host's discovery registry, builds an AgentConfiguration from the user's selections, and submits it to the FabrCore Host API. The created agent can then be added to the principal's Surface agent list. This works in either host mode and reflects the assemblies actually registered by that host.

Protected Skill uploads

The Server reuses the selected mode's generated loopback cloud key as its FabrCore administration key and identifies the App as opencaddis-app. Only protected Harness Skill upload requests are buffered, with a 4 MiB limit; synchronous request-body access is not enabled globally.

Add-on isolation and restart behavior

OpenCaddis loads add-ons from streams so compiled files are not held open. The assembly context is collectible and is unloaded when the host stops. Restarting the Server creates a fresh catalog, so removed or replaced DLLs are discovered from the current directory state.

Assembly compatibility matters

FabrCore, Orleans, Microsoft, System, and OpenCaddis.Server assemblies are shared from the default runtime context. An add-on must be compatible with the versions used by the host.

Security boundary

  • The host URL must be http://localhost.
  • The cloud-configuration connection must be an absolute loopback HTTP URL.
  • Agent creation validates principal and agent handles before submission.
  • Skill administration requires the generated bearer credential held by the App.
  • Add-on DLLs are executable code. Load only assemblies you trust.
Documentation