Common Agent Runtime — Python bindings for deterministic AI agent execution
Reason this release was yanked:
Missing macOS wheels — use car-runtime 0.4.4+
Project description
car-runtime (Python)
Python bindings for Common Agent Runtime (CAR) — a deterministic execution layer for AI agents. Models propose; the runtime validates and executes.
Pre-built wheels (abi3, Python 3.9+) for:
macosx_14_0_arm64,macosx_14_0_x86_64— macOS 14+ required (MLX Metal shaders)manylinux_2_17_x86_64,manylinux_2_28_aarch64
Building from source on macOS: set MACOSX_DEPLOYMENT_TARGET=14.0 when
invoking maturin build — MLX's bundled Metal shaders don't compile against
the default 11.0 target.
Install
From a release wheel (until PyPI is wired up):
pip install https://github.com/Parslee-ai/car/releases/download/vX.Y.Z/car_runtime-X.Y.Z-cp39-abi3-macosx_11_0_arm64.whl
Or build from source:
pip install maturin
cd car-rs/crates/car-ffi-pyo3
maturin develop --release
The import name is car_native (the native extension module).
Quickstart
import json
from car_native import CarRuntime, verify, execute
rt = CarRuntime()
# Tools + policies.
rt.register_tool("shell")
rt.register_policy(
"no_rm",
"deny_tool_param",
target="shell",
key="command",
pattern="rm -rf",
)
# Ground with facts.
rt.add_fact("project_language", "Python", "pattern")
# Verify before executing.
proposal = json.dumps({
"actions": [{
"id": "a1",
"type": "tool_call",
"tool": "shell",
"parameters": {"command": "ls"},
"dependencies": [],
}],
})
check = json.loads(rt.verify_proposal(proposal))
if not check["valid"]:
raise RuntimeError(f"invalid proposal: {check['issues']}")
# Execute with a Python-side tool callback.
def tool_fn(tool: str, params_json: str) -> str:
params = json.loads(params_json)
# Dispatch to your actual implementation.
return json.dumps({"stdout": "ok", "stderr": ""})
result_json = rt.execute_proposal(proposal, tool_fn)
Streaming inference
from car_native import CarRuntime
rt = CarRuntime()
def on_event(event_json: str) -> None:
e = json.loads(event_json)
if e["type"] == "text":
print(e["data"], end="", flush=True)
rt.infer_stream(
"Explain CAR in one sentence.",
on_event,
max_tokens=256,
)
Multi-agent coordination
import json
from car_native import register_agent_runner, run_swarm
def agent_fn(spec_json: str, task: str) -> str:
spec = json.loads(spec_json)
# Call your LLM of choice, returning an AgentOutput JSON.
return json.dumps({"name": spec["name"], "response": "...", "tool_calls": []})
# Option A: register once, then call run_* without passing agent_fn each time.
register_agent_runner(agent_fn)
result = run_swarm(
"parallel",
json.dumps([
{"name": "researcher", "role": "gather facts", "model": "gpt-5"},
{"name": "writer", "role": "compose summary", "model": "claude-opus-4-7"},
]),
"summarize the CAR paper",
)
# Option B: pass agent_fn per call.
result = run_swarm("parallel", agents_json, task, agent_fn=agent_fn)
API surface
The runtime (CarRuntime) exposes:
- State:
state_set,state_get,state_exists,state_snapshot,state_keys - Memory:
add_fact,query_facts,fact_count,build_context,build_context_fast,persist_memory,load_memory,consolidate - Skills:
ingest_skill,find_skill,report_outcome,distill_skills,ingest_distilled_skills,list_skills,domains_needing_evolution,repair_skill,evolve_skills - Tools + policies:
register_tool,register_agent_basics,register_policy,set_replan_config - Inference:
infer,infer_tracked,infer_with_context,infer_with_context_tracked,embed,rerank,classify,prepare_speech_runtime,transcribe,synthesize,infer_stream - Models:
list_models,pull_model,remove_model,list_models_unified,register_model,route_model,model_stats - Execution:
event_count,verify_proposal,execute_proposal
Module-level standalone functions:
- Verification:
verify,simulate,optimize,equivalent - Stateless execute:
execute(creates a fresh Runtime; for long-lived use, preferCarRuntime.execute_proposal) - Multi-agent:
register_agent_runner,run_swarm,run_pipeline,run_supervisor,run_map_reduce,run_vote - Scheduler:
create_task,run_task,run_task_loop,ensure_dream_task - Planner:
rank_proposals
Structured returns are JSON-encoded strings — json.loads them on the Python
side. This keeps the FFI surface stable across binding and protocol changes.
Development
# Install dev deps.
pip install maturin pytest
# Build and install in editable mode.
cd car-rs/crates/car-ffi-pyo3
maturin develop
# Run the smoke tests.
pytest tests/ -v
Architecture
This package is a thin PyO3 wrapper over the Rust car-engine + car-memgine
crates. Tool execution uses a callback pattern: the runtime doesn't own tools,
you provide a Python function that dispatches them. See the repo
README for the bigger picture.
License
Free for any use including commercial; free to redistribute unmodified.
Modification, reverse engineering, and derivative works are not permitted.
See LICENSE for the full text. Copyright © 2026 Parslee AI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file car_runtime-0.4.3-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: car_runtime-0.4.3-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 14.1 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b625a36439abdd6389883a0d919dea7a31531fde428d8fdc8f7e02356a82f0b
|
|
| MD5 |
1935d726961aee13a4d85cd1cf58910e
|
|
| BLAKE2b-256 |
50e6801849247e3e32eed90ad86474df9ace057522bb3d733807e4409cc46d8a
|
Provenance
The following attestation bundles were made for car_runtime-0.4.3-cp39-abi3-win_amd64.whl:
Publisher:
build.yml on Parslee-ai/car
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
car_runtime-0.4.3-cp39-abi3-win_amd64.whl -
Subject digest:
7b625a36439abdd6389883a0d919dea7a31531fde428d8fdc8f7e02356a82f0b - Sigstore transparency entry: 1343314711
- Sigstore integration time:
-
Permalink:
Parslee-ai/car@1dc1b00ea88868540a6f03fa4a8fa7c1164c855a -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/Parslee-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@1dc1b00ea88868540a6f03fa4a8fa7c1164c855a -
Trigger Event:
push
-
Statement type:
File details
Details for the file car_runtime-0.4.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: car_runtime-0.4.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 15.9 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea7e990afb0a51ef512b4a1ed1790e9ce1d7f603356ad2b62ed2900c291a0045
|
|
| MD5 |
5dee4c8445628540e8fa10e08229a441
|
|
| BLAKE2b-256 |
56cdd9806cf59013d2a3f54629820663b667db4d208dd929f1c49a1376960c34
|
Provenance
The following attestation bundles were made for car_runtime-0.4.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
build.yml on Parslee-ai/car
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
car_runtime-0.4.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
ea7e990afb0a51ef512b4a1ed1790e9ce1d7f603356ad2b62ed2900c291a0045 - Sigstore transparency entry: 1343314698
- Sigstore integration time:
-
Permalink:
Parslee-ai/car@1dc1b00ea88868540a6f03fa4a8fa7c1164c855a -
Branch / Tag:
refs/tags/v0.4.3 - Owner: https://github.com/Parslee-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@1dc1b00ea88868540a6f03fa4a8fa7c1164c855a -
Trigger Event:
push
-
Statement type: