car-runtime 0.13.0

Umbrella entry point for external Rust consumers of Common Agent Runtime
Documentation

car-runtime

Umbrella entry point for external Rust consumers of Common Agent Runtime. Bundles the runtime execution layer plus the perception cluster under a single dependency so consumers don't have to track which internal workspace crate exposes which type.

What it bundles

Re-exports as namespaced sub-modules:

Module Source What's in it
engine car-engine Runtime, IR types (Action, ActionProposal, Evidence, …), StateStore, EventLog, PolicyEngine, Planner, VerifyIssue, capability + authz + rate-limit machinery
sandbox car-sandbox SandboxPolicy, preflight, filter_sensitive_env, SENSITIVE_ENV_VARS
active_planner car-active-planner ActivePlannerConfig, ActiveReplanAdapter, Strategy, generate_candidates
browser car-browser BrowserToolExecutor, ChromiumBackend, perception pipeline
desktop car-desktop DesktopBackend, mouse/keyboard/window models, permission probes
ast car-ast Language, ProjectIndex, tree-sitter symbol extraction
voice car-voice Listener, Speaker, voice mixer, speaker enrollment, narration

Sibling published crates (NOT in this umbrella)

Each is a distinct subsystem and many apps consume only one of them — so they ship as their own published crates rather than folding into car-runtime:

Usage

[dependencies]
car-runtime = "0.8"
use car_runtime::engine::{Runtime, RuntimeOptions};
use car_runtime::sandbox::SandboxPolicy;
use car_runtime::desktop::models::Frame;

The module-renaming pub use car_X as X preserves all nested module access, so car_runtime::desktop::models::* reads identically to car_desktop::models::*.

Migrating from per-crate deps

Mechanical sed across consumers:

use car_engine::            →   use car_runtime::engine::
use car_sandbox::           →   use car_runtime::sandbox::
use car_active_planner::    →   use car_runtime::active_planner::
use car_browser::           →   use car_runtime::browser::
use car_desktop::           →   use car_runtime::desktop::
use car_ast::               →   use car_runtime::ast::
use car_voice::             →   use car_runtime::voice::

Plus the Cargo.toml trim — replace those seven direct deps with the single car-runtime dep.

Why

Originally raised as Parslee-ai/car#205 after the v0.9.0 release postmortem flagged the 41-crate publish surface as the primary release-loop friction point. This crate is the "Path A" deliverable from that issue's discussion — external API cleanup without workspace consolidation. The publish surface itself doesn't shrink (the underlying workspace crates still ship to crates.io because cargo's publish rules require it) but consumer ergonomics do.