Home / Docs / System architecture

System architecture

Local development and runtime architecture

OpenCaddis.App coordinates two mutually exclusive FabrCore hosts. It can create agents from either host's live registry. Server Builder also publishes managed Skills and develops add-ons; Server loads and runs them. Both obtain their own model configuration from a loopback service owned by the App.

OpenCaddis.AppLifecycle, agent creation, Builder workspace, and Surface shell
Loopback configuration serviceSeparate Server and Builder model/API-key documents
Selected host modeOne of the two hosts runs on the configured local port
Server BuilderHarness project agents, managed Skills, Roslyn, filesystem, and .NET CLI tools
ServerFabrCore registry, agent creation, Surface, APIs, diagnostics, and add-on loading
Compiled add-on directoryBuilder publishes DLLs; Server discovers them on its next start

Responsibility boundaries

ComponentOwnsDoes not own
OpenCaddis.AppLocal settings, configuration documents, host lifecycle, registry-driven agent creation, workspace UI, Surface WebViewAgent runtime implementation
OpenCaddis.Server.BuilderSkill packaging and publishing, Harness project provisioning, constrained code and CLI toolsLoading published add-ons into the runtime
OpenCaddis.ServerFabrCore registry and Host APIs, protected Skill administration, Surface, diagnostics, add-on assembly catalogEditing add-on source projects
FabrCoreAgent runtime, messaging, SDK, host APIs, plugins/tools, and Surface componentsThe OpenCaddis desktop workflow

Data and execution boundaries

  • Configuration: JSON documents and generated bearer keys persist in local app data.
  • Source: builder filesystem and Roslyn operations are scoped to one project directory.
  • Commands: builder agents call a controlled set of dotnet operations instead of an unrestricted shell.
  • Skills: text-only packages are principal-scoped, immutable, exact-versioned, and read on demand by the Harness.
  • Agent creation: choices come from the running host registry; the App submits a normalized configuration through the Host API.
  • Add-ons: compiled DLLs are trusted executable code loaded into a collectible assembly context.
  • Network: the current OpenCaddis-managed hosts require HTTP loopback addresses.
Documentation