I'm Building an AI Assistant in C#. I Don't Want to Rewrite Every Tool. A developer has released WeavePort, an open-source plugin runtime for .NET that lets C# applications call capabilities written in Python or TypeScript without rewriting them. The project's Decision Room sample demonstrates equivalent C# and Python strategies producing identical results, with the host retaining control over workflow, data access, and validation. The developer says the goal is to let teams contribute code in their own language without becoming C# developers. I'm building an AI assistant in C . Some of the code I want it to use already exists in Python or TypeScript. I could rewrite it. But then every improvement to the original becomes something I have to port, test and maintain. Choosing C for the application shouldn't mean choosing C for every capability it will ever have. Calling a script is easy enough. Deciding what happens when it hangs, which data it can ask the application for, and how to replace it without disturbing the rest of the system takes more thought. That's why I built WeavePort , an open-source plugin runtime for .NET. I also want to keep other applications small by moving selected functionality and strategies into replaceable plugins. A department that works in Python should be able to contribute useful code without first becoming a C team. Suppose I want the assistant to help compare improvement proposals. One capability could score them using business priorities and risk information. The assistant could explain the results; the application would decide when the calculation is allowed to run and what data it can use. That is an intended use, not a finished assistant integration. The scoring strategy might use a Python library or rules maintained by another team. Its inputs, outputs and meaning need to stay stable when I change the implementation. This is the idea behind the repository's Decision Room example https://github.com/yesbert/WeavePort/tree/v0.3.1/samples/DecisionRoom . Two participants evaluate three proposals using configurable priorities. Equivalent C and Python strategies produce the same results. Change the language and the winner stays the same; change the strategy and a different proposal can win. With the default configuration, “Automate support” wins. Increase the strategy's risk penalty and “Improve documentation” wins instead. The host still runs the same workflow. Decision Room deliberately leaves out the model. It exercises the capability I would put underneath an assistant: send proposals to a strategy, get evaluations back, and keep control of the workflow in the application. The same capability can serve a backend with no AI at all. Here is the call in the C host https://github.com/yesbert/WeavePort/blob/v0.3.1/samples/DecisionRoom/Host/RoomRunner.cs , after it has bound the selected strategy to a worker: js await using var client = new LocalPluginClient strategy ; Evaluation evaluation = await client.CallAsync