docs/INTEROP_GUIDE.md
elizaOS supports cross-language plugins and runtime interoperability via the packages/interop/ package.
The design goals are:
packages/interop/README.mdpackages/interop/typescript/types.tspackages/interop/typescript/wasm-loader.tspackages/interop/typescript/python-bridge.tspackages/interop/rust/wasm_plugin.rspackages/interop/rust/ffi_exports.rspackages/interop/python/bridge_server.pypackages/interop/python/rust_ffi.pyAt a minimum, interop requires a plugin manifest that can describe a plugin's name, version, language, and the capabilities it exposes (actions/providers/evaluators/services/routes).
In practice, interop implementations in this repo exchange:
All transports serialize inputs and outputs as JSON so the same data model can be shared across TypeScript, Rust, and Python.
When using WASM:
wasm32-unknown-unknown and export functions via wasm-bindgen..wasm module and wraps exports into a Plugin-shaped adapter that the runtime can register.See:
packages/interop/README.mdpackages/interop/typescript/wasm-loader.tspackages/interop/rust/wasm_plugin.rsWhen using FFI:
packages/interop/rust/ffi_exports.rs.ctypes to load a shared library and call those functions (packages/interop/python/rust_ffi.py).When using subprocess IPC:
id.Reference:
packages/interop/README.md ("Protocol Messages")packages/interop/python/bridge_server.pypackages/interop/typescript/python-bridge.tsInterop unit tests live in:
packages/interop/typescript/__tests__/packages/rust/__tests__/ (including interop equivalence tests)The examples/ directory contains multi-language implementations for many deployment targets:
examples/cloudflare/ - TypeScript, Rust (WASM), Python workersexamples/aws/ - TypeScript, Python, Rust Lambda handlersexamples/gcp/ - TypeScript, Python, Rust Cloud Run servicesexamples/vercel/ - TypeScript, Python, Rust (WASM) edge functions