Embedding aube
aube can run inside another application instead of being invoked as a child process. Embedding avoids CLI startup and output parsing, gives the host structured progress events and stable error codes, and allows cooperative cancellation.
The native Rust API is the foundation for every embedding integration; the Node-API and C ABI distributions are thin adapters over it.
Supported operations
The stable aube::embed facade supports:
- installing a project's declared dependencies
- adding packages and installing the resulting dependency graph
- per-install structured progress and output events
- cooperative cancellation
- concurrent operations in unrelated projects
- stable
ERR_AUBE_*diagnostic codes
Operations that target the same workspace are serialized. The project lock spans manifest changes, lockfile updates, and linking, so concurrent callers do not observe partial state.
Choosing an integration
- Rust — the native
aube::embedfacade for Rust hosts. - Node-API —
@jdxcode/aube-nodefor Node.js, Bun, Electron, and compiled Bun executables. Prefer this for any JavaScript host that supports Node-API. - C ABI —
@jdxcode/aube-ffifor hosts that need a dynamic-library boundary: Deno FFI, Pythonctypes, and native applications.
Compatibility
The aube::embed module is the supported in-process interface. The aube::commands modules remain public for CLI wrappers, but their command argument types follow the CLI and are not the preferred API for native hosts.
Every error and warning emitted by aube carries a stable identifier. See the error code reference for the compatibility policy.
For questions and integration discussion, use GitHub Discussions.