Home / Docs / Add-on lifecycle

Add-on lifecycle

From class library to running add-on

An OpenCaddis add-on is a compiled .NET assembly that registers FabrCore agents, plugins, tools, or other discoverable components. Server Builder helps create and publish it; Server loads and runs it.

1
Start Server Builder

Save a valid Builder configuration in the app, select Server Builder mode, choose the shared add-on output directory, and start the host.

2
Select or create a solution

The folder must contain exactly one .sln or .slnx. The app can create a .NET 10 .slnx when none exists.

3
Create a FabrCore class library

The Builder creates a .NET 10 project, adds FabrCore.Sdk 1.6.3, and adds the project to the solution.

4
Publish Skills and provision the project agent

OpenCaddis uploads the bundled exact-version FabrCore Skills, then creates a todo-driven Harness agent with the project, solution, output, Roslyn, filesystem, and .NET CLI boundaries.

5
Develop and verify

Ask the agent to inspect, implement, reload semantic state, build, and run solution tests.

6
Publish

When requested, the builder compiles Release and copies the project's primary DLL into the configured add-on directory.

7
Switch to Server and restart

OpenCaddis.Server creates a fresh catalog, discovers the DLL, and loads compatible agent/plugin registrations for use in Surface.

Design expectations

  • Reference FabrCore.Sdk for agent, plugin, and tool contracts.
  • Use the Builder agent's managed Skills for current FabrCore guidance; Skills do not grant additional execution authority.
  • Keep package versions compatible with the Server's FabrCore 1.6.3 runtime.
  • Include only the primary add-on DLL in the current publish step; dependencies must already be shared or otherwise resolvable.
  • Do not overwrite host-owned FabrCore, Orleans, Microsoft, System, or OpenCaddis.Server assemblies.
  • Treat add-ons as trusted code with the same process privileges as the local Server.
Restart is the reload boundary

Publishing changes a file on disk. The running Server does not hot-load that replacement. Stop or restart the Server so the collectible context is unloaded and a fresh directory scan occurs.

More FabrCore guidance

OpenCaddis supplies the development loop, while FabrCore defines the supported agent, plugin, and tool contracts. Use the FabrCore documentation for current framework APIs and patterns.

Documentation