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:
car-memgine— graph memory + skill distillationcar-inference— model gatewaycar-multi— multi-agent coordination + built-in agentscar-server-core— daemon protocol types
Usage
[]
= "0.8"
use ;
use SandboxPolicy;
use 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.