nemo-relay-ffi
nemo-relay-ffi
Generated from cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-ffi.
C FFI layer for NeMo Relay.
This crate exposes the NeMo Relay core runtime as a C-compatible shared library. It is consumed by the Go bindings via CGo and regenerates the committed nemo_relay.h header through cbindgen during Cargo builds. All exported symbols use the nemo_relay_ prefix.
Middleware Pipeline
When a tool or LLM call is executed end-to-end via the _execute functions, the runtime applies the following middleware pipeline in order:
- Request intercepts - transform the request before guardrails.
- Sanitize-request guardrails - validate/sanitize the request.
- Conditional-execution guardrails - gate whether the call proceeds.
- Execution intercepts - optionally replace the call implementation.
- Sanitize-response guardrails - validate/sanitize the response.
Error Handling
Every extern "C" function returns an error::NemoRelayStatus code. On failure, call error::nemo_relay_last_error on the same thread to retrieve a human-readable error description. The error is stored in thread-local storage and is valid until the next FFI call on that thread.
Memory Ownership
All opaque handles (FfiScopeHandle, FfiToolHandle, FfiLLMHandle, etc.) are heap-allocated and must be freed through their corresponding nemo_relay_*_free functions. C strings returned by accessor functions must be freed with nemo_relay_string_free.
Modules
api- Top-level FFI entry points (scope, tool, LLM, guardrail, intercept, subscriber, ATIF exporter). Tool calls accept an optionaltool_call_idand LLM calls accept an optionalmodel_namefor ATIF trajectory correlation. ATIF exporter functions (nemo_relay_atif_exporter_*) create, register, export, and clear trajectory data.types- C-compatible struct and enum definitions, plus event accessor functions (nemo_relay_event_input,_output,_model_name,_tool_call_id,_parent_uuid,_scope_type) and theFfiAtifExporteropaque handle.error- Status codes and thread-local error storage.callable- C function pointer typedefs and wrapper functions.convert- JSON and C-string conversion utilities.