In most real-world systems, “AI agents” sit on top of a polyglot stack:
If your capability model only really exists in one language, you end up with: A more sustainable pattern is to treat the capability protocol as the primary artifact and the language SDKs as implementations.
Concretely:
Now a capability implemented in Rust can be:
…without reinventing validation, approvals, or tracing.
If you are designing your own internal runtime, consider starting with the protocol and tests first, and only then layering language-specific ergonomics on top. It is slower upfront but pays off when your stack inevitably becomes polyglot.