# Standalone example (own workspace) — does NOT join joule-code-rs's workspace, so # the standard's lib stays free of a JouleClaw dependency. This is a *consumer # binding*: how to wire JouleClaw's L3 (Model) tier into the Joule Code cascade. [workspace] [package] name = "l3-jouleclaw-binding" version = "0.1.0" edition = "2021" rust-version = "1.97" license = "Apache-2.0" description = "Example binding: JouleClaw's L3 model tier (jouleclaw-llm LlmBackend) as a Joule Code cascade FnStage. Verified model-free via EchoBackend; a real backend (vLLM, or jouleclaw-runtime GGUF) drops into the same slot." publish = false [dependencies] joule-code-schema = { path = "../../joule-code-rs/crates/joule-code-schema" } joule-code-cargo = { path = "../../joule-code-rs/crates/joule-code-cargo" } joule-code-receipt = { path = "../../joule-code-rs/crates/joule-code-receipt" } joule-code-cascade = { path = "../../joule-code-rs/crates/joule-code-cascade" } jouleclaw-llm = { path = "../../../jouleclaw/jouleclaw-rs/crates/jouleclaw-llm" } jouleclaw-energy = { path = "../../../jouleclaw/jouleclaw-rs/crates/jouleclaw-energy", features = ["ioreport"] } # JouleClaw's own from-scratch GGUF tensor runtime (no llama.cpp, no FFI) — # the in-process L3 backend. jouleclaw-runtime = { path = "../../../jouleclaw/jouleclaw-rs/crates/jouleclaw-runtime" } jouleclaw-loader-gguf = { path = "../../../jouleclaw/jouleclaw-rs/crates/jouleclaw-loader-gguf", features = ["rayon", "fabric"] } # The grades (`Measured` / `Benchmarked` / `Estimated`) the fabric ledger prices # a call from, which the L3 stage grades the call's projected energy by. jouleclaw-fabric = { path = "../../../jouleclaw/jouleclaw-rs/crates/jouleclaw-fabric" } # The GPU load the in-process meter's GPU-counter liveness probe runs # (`gpu_liveness_load`): the `run` binary meters the in-process engine on this # process's own CPU and GPU (`jouleclaw_energy::span::ProcessSpanMeter`). jouleclaw-backend-apple = { path = "../../../jouleclaw/jouleclaw-rs/crates/jouleclaw-backend-apple" } # The llama engine's subprocess, read on its own process tree where the host # counts each process's CPU energy (macOS): `TreeMeter`. sandbox-meter = { path = "../../../sandbox/sandbox-rs/crates/sandbox-meter" } serde_json = "1" # macOS: the llama engine's process is waited for without being reaped # (`waitid` with `WNOWAIT`), so the tree meter reads its exited count. [target.'cfg(target_os = "macos")'.dependencies] libc = "0.2"