# car-ffi-common
Shared logic for [Common Agent Runtime](https://github.com/Parslee-ai/car) FFI bindings (NAPI + PyO3).
## What it does
Pure Rust functions that accept JSON strings and return `Result<String, String>`. Each FFI crate (`car-ffi-napi`, `car-ffi-pyo3`) wraps these with its own error type (`napi::Error`, `PyErr`).
Why this exists: keeping the JSON-marshalling logic out of the binding crates means the NAPI and PyO3 surfaces stay thin and identical. Adding a new method to both bindings becomes "add it to `car-ffi-common`, then add a one-line wrapper to each binding."
## Where it fits
If you're adding a CAR capability to the FFI surface, write the body here. The binding crates should be wrappers, not implementations. See `crates/car-ffi-napi/src/lib.rs` and `crates/car-ffi-pyo3/src/lib.rs` for the pattern.
Modules cover: verify, simulate, equivalent, optimize, multi-agent, scheduler, browser, voice, meeting, accounts, calendar, contacts, mail, health, permissions, secrets.