| Filename | Latest commit message | Latest commit date |
|---|---|---|
The corpus so far encoded receipt *structure* — intent class, retrieval
depth, counter honesty. Useful, but blind to meaning: two differently
worded questions of the same shape embedded identically. This adds the
semantic path.
The obstacle is real and is why this is not a one-liner: a receipt
records a BLAKE3 of its input, never the input. An embedder that
captures what a query *means* cannot read it off the receipt — it needs
the text, which only the deployment that logged both the receipts and
the queries can supply. So the type system now says so:
- `TextEmbedder` — embeds query text, the semantic counterpart to the
structural `Embedder`.
- `CorpusBuilder::build_with_text(&[(Receipt, String)])` — takes that
(receipt, query) join explicitly. The join is the caller's; it is
not silently verifiable here (the receipt hash is over a
normalisation this crate does not know).
- rows are `[semantic ‖ structural]` by default — meaning and shape
are complementary signals, so a row carries both; the
`with_append_structural(false)` toggle gives a pure-semantic vector.
Either way the width is constant across the corpus, as the trainer
requires.
The real embedder is behind the `candle` feature so the default build
stays light and offline: `CandleTextEmbedder` wraps the fleet's own
on-device BERT/BGE embedder (jouleclaw-embed-candle) — the same L2-tier
backend the cascade already uses, now feeding the corpus that trains the
router above it. The skip/negative semantics are unchanged: L1Lawful
still has no EOC analogue and is counted, not guessed.
Verified end to end with a real model, not a mock: MiniLM (384-dim) over
five real queries → a 399-dim composite corpus (384 semantic + 15
structural), one L1Lawful receipt skipped, and `train_logreg` +
`train_mf` both fit a router on the result. 19 tests (5 new for the text
path, driven by a deterministic mock so the logic stays offline-testable);
the real model runs in the `emit_corpus_semantic` example behind the
`candle` feature.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
|
||
| .. | ||
| conformance/v1 | ||
| jouleclaw-rs | ||
| vocab | ||
| LICENSE | ||
| README.md | ||
| ROADMAP.md | ||
| SPEC.md | ||
JouleClaw — Energy-Optimized AI Runtime
The substrate for AI that costs Joules, not tokens.
Capability per Joule, not capability per parameter.
What JouleClaw is
JouleClaw is a pure-Rust, omni-modal AI runtime + harness + agentic layer governed by Transaction Science as an open standard (5th in the open-standards quartet, alongside OpenPay, Smart Byte, EOC, and WAI).
Every operation JouleClaw performs walks an explicit energy-tiered cascade, top to bottom, stopping at the first stage that closes the query:
| Tier | Name | Cost class | What runs here |
|---|---|---|---|
| L0 | Cache | picojoules | Content-addressed cache hits |
| L1 | Lawful | nanojoules | Deterministic, pre-compiled primitive (text/code only) |
| L2 | Embed | sub-millijoules | Matryoshka embeddings + nearest-neighbor + hybrid search |
| L3 | Model | joules | Local SSM / ternary / multimodal / diffusion / etc. |
| L4 | Wire | tens of joules | Remote frontier RPC (escape hatch only) |
L1 (Lawful) is only meaningful for text and code modalities. For image, audio, video and 3D generation, the cascade collapses to L0 / L2 / L3 / L4 — the energy savings come from caching plus dispatch to the cheapest model that meets the quality bar.
Why JouleClaw exists
The mainstream "agentic AI" ecosystem treats inference as the entry point. Every state shift, every tool call, every routing decision runs through a 70-billion-parameter stochastic engine, burning kilojoules to do work that deterministic compute or a hot cache could resolve for microjoules.
JouleClaw inverts the default. Inference is the last resort, not the first. Frozen model weights are less trustworthy than current world state; fresh, provenance-stamped retrieval beats synthesis from training cuts. Every operation is metered in microjoules where the hardware permits it, and in millijoules where it doesn't — the spec is honest about the floor on every platform.
The thermodynamic circuit breaker is the safety mechanism. Set an energy budget; when measured consumption exceeds the budget, the breaker trips and the operation halts. Hallucination loops cannot survive an honest joule ledger.
What's here
| Path | Contents |
|---|---|
SPEC.md |
JouleClaw v1 spec — cascade tiers, energy contract, receipt |
CHARTER.md |
Stewardship pattern (shared across open-standards) |
jouleclaw-rs/ |
Apache-2.0 Rust reference implementation |
spec/ |
Tier specifications, energy provenance, receipt format |
conformance/v1/ |
Signed wire vectors for cross-implementation verification |
Reference implementation
jouleclaw-rs/ is the Apache-2.0 reference implementation in Rust. It
runs on Apple Silicon (M3/M4/M5 with UMA + Metal 4 Tensor APIs), AMD Strix
Halo / Ryzen AI Max, Intel Lunar Lake, NVIDIA Jetson, and discrete
NVIDIA / AMD GPUs.
It is omni-modal: text, code, vision, audio, video, image diffusion, 3D Gaussian splatting, and cross-modal fusion all dispatch through the same energy-tiered cascade.
The MCP tool surface is a JCP consumer: jouleclaw-jcp wraps any
jouleclaw-mcp metered tool so every dispatch is decided by the JCP runtime
against a signed, metered Grant before a byte reaches the tool — the tool's
identity is the content-addressed resource, the call's energy estimate is
debited from the grant's joule budget, and every decision (allow and deny
alike) seals as a JCR-1 receipt. An injected instruction can name an ungranted
tool; it cannot make the gate dispatch it.
Status
v0.1.0 reference implementation in active development. The spec is draft status. Cross-implementation conformance vectors will land with v1.0.0.
License
- Code: Apache-2.0 (see
LICENSE) - Spec text: CC-BY-4.0 (see
spec/LICENSE)