open-standards/mesh/mesh-rs/crates/mesh-openai/examples/serve.rs
Transaction Science e7403fde3b
Some checks failed
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 12s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 10s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 12s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 15s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 6s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 18s
wai-audit collector and player integration / does this change touch it (pull_request) Successful in 18s
wai cross-architecture byte-equality / does this change touch it (pull_request) Successful in 7s
WAI operation catalogue / does this change touch it (pull_request) Successful in 7s
WAI conformance / does this change touch it (pull_request) Successful in 7s
WAI energy receipts / does this change touch it (pull_request) Successful in 6s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 25s
wai-ledger service / does this change touch it (pull_request) Successful in 7s
WAI JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Successful in 9s
WAI neural decoders end-to-end / does this change touch it (pull_request) Successful in 5s
wai-key-proxy / does this change touch it (pull_request) Successful in 9s
wai-fleet service / does this change touch it (pull_request) Successful in 13s
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Successful in 16s
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 6s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 6s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 22s
WAI neural sink gates / does this change touch it (pull_request) Successful in 9s
wai-ops integer operators / does this change touch it (pull_request) Successful in 8s
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (pull_request) Successful in 44s
wai-quantum contract / does this change touch it (pull_request) Successful in 8s
wai-quantum CUDA member / does this change touch it (pull_request) Successful in 8s
wai-quantum dataflow member / does this change touch it (pull_request) Successful in 7s
wai-quantum command line / does this change touch it (pull_request) Successful in 13s
wai-quantum editors / does this change touch it (pull_request) Successful in 8s
wai-quantum signal processor / does this change touch it (pull_request) Successful in 10s
wai-quantum other formats / does this change touch it (pull_request) Successful in 6s
wai-quantum resource estimation / does this change touch it (pull_request) Successful in 7s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 13s
wai-quantum HIP member / does this change touch it (pull_request) Successful in 10s
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 8s
wai-quantum FPGA member / does this change touch it (pull_request) Successful in 13s
wai-quantum OpenQASM reader / does this change touch it (pull_request) Successful in 7s
wai-quantum npu-cores member / does this change touch it (pull_request) Successful in 7s
wai-quantum Metal member / does this change touch it (pull_request) Successful in 10s
wai-quantum OpenCL member / does this change touch it (pull_request) Successful in 12s
wai-quantum neural-processor member / does this change touch it (pull_request) Successful in 15s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 1m9s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m42s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 2m16s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 2m56s
energy meters on real hardware / sink decode table · per-task energy and the GPU rail on macOS (pull_request) Successful in 2m58s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 3m4s
wai-quantum on every processor / emulated · aarch64-unknown-linux-gnu (pull_request) Successful in 2m36s
standards workspaces build + test / jouleclaw-rs (-nodebug, jouleclaw/jouleclaw-rs, -p jouleclaw-energy --features rapl,nvml, jouleclaw-rs, linux-arm64, -C target-feature=+fp16) (pull_request) Successful in 3m34s
standards workspaces build + test / mesh-rs (mesh/mesh-rs, -p mesh-engine-gguf -p mesh-openai --features mesh-engine-gguf/gguf,mesh-openai/server, mesh-rs, linux-arm64) (pull_request) Successful in 1m20s
wai-quantum CUDA member / member · CUDA (thor) (pull_request) Successful in 2m13s
WAI conformance / fast integer kernels, every x86_64 kernel set (AVX-512 silicon) (pull_request) Successful in 3m31s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 34s
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Successful in 3m31s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m44s
wai-quantum pulse and dynamics / does this change touch it (pull_request) Successful in 5s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 25s
wai-quantum for Python / does this change touch it (pull_request) Successful in 4s
wai-quantum error correction and mitigation / does this change touch it (pull_request) Successful in 5s
wai-quantum-qpu / does this change touch it (pull_request) Successful in 5s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (thor) (pull_request) Successful in 1m14s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 26s
wai-quantum extension points / does this change touch it (pull_request) Successful in 5s
wai-quantum HIP member / member · HIP (framework-128gb) (pull_request) Successful in 1m13s
wai-quantum service / does this change touch it (pull_request) Successful in 6s
wai-quantum matrix-extension member / does this change touch it (pull_request) Successful in 6s
energy meters on real hardware / RAPL and NVML on jetson-hub (pull_request) Successful in 37s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 5s
wai-quantum tensor-engine member / does this change touch it (pull_request) Successful in 5s
wai-quantum portable tensor program / does this change touch it (pull_request) Successful in 4s
wai-quantum variational and algorithm library / does this change touch it (pull_request) Successful in 5s
wai-quantum CPU vector units / does this change touch it (pull_request) Successful in 6s
wai-quantum on every processor / emulated · s390x-unknown-linux-gnu (pull_request) Successful in 4m41s
wai-quantum verdicts and repairs / does this change touch it (pull_request) Successful in 5s
wai-quantum views in agent hosts / does this change touch it (pull_request) Successful in 6s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 5s
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 7s
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 5s
wai-quantum on every processor / emulated · armv7-unknown-linux-gnueabihf (pull_request) Successful in 5m8s
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Successful in 4s
WAI Studio / does this change touch it (pull_request) Successful in 7s
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Successful in 6m5s
wai-vector vector graphics / does this change touch it (pull_request) Successful in 6s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 6s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 6m23s
wai-web wasm32 / does this change touch it (pull_request) Successful in 7s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 3m48s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 28s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 28s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 14s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Successful in 35s
wai-quantum npu-cores member / member · npu-cores, neural processor (framework-128gb silicon) (pull_request) Successful in 1m50s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 5m49s
wai-quantum on every processor / emulated · loongarch64-unknown-linux-gnu (pull_request) Successful in 6m28s
wai-quantum OpenCL member / member · OpenCL GPU (framework-128gb) (pull_request) Successful in 30s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 32s
wai-quantum on every processor / emulated · riscv64gc-unknown-linux-gnu (pull_request) Successful in 6m39s
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Successful in 17s
standards workspaces build + test / joulehook-rs (joulehook/joulehook-rs, joulehook-rs, linux) (pull_request) Successful in 1m32s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 6m14s
wai-quantum on every processor / emulated · i686-unknown-linux-gnu (pull_request) Successful in 4m17s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m8s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 32s
energy meters on real hardware / sink decode table · RAPL on jetson-hub (NVML surveyed) (pull_request) Successful in 2m44s
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Successful in 22s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 8m5s
wai-audit collector and player integration / collector · linux (pull_request) Successful in 1m21s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 33s
wai-ledger service / service · macos (pull_request) Successful in 1m14s
wai-fleet service / service · macos (pull_request) Successful in 1m13s
WAI conformance / faces from keypoints under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m27s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m2s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m33s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 2m50s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 40s
wai-ledger service / service · linux (pull_request) Successful in 1m31s
wai-quantum on every processor / emulated · sparc64-unknown-linux-gnu (pull_request) Successful in 8m6s
wai-quantum service / service energy · linux packages (pull_request) Successful in 1m33s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 11m53s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 4m10s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 25s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Successful in 1m23s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 4s
wai-key-proxy / proxy · linux (pull_request) Successful in 1m27s
wai-pack / wai-pack · macos (pull_request) Successful in 4m10s
wai-fleet service / service · linux (pull_request) Successful in 2m18s
wai-pack / wai-pack · linux (pull_request) Successful in 2m41s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 8m10s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 3m2s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 5m57s
wai-ops integer operators / macos-arm64 (pull_request) Successful in 47s
wai-ops integer operators / linux-x86_64 (pull_request) Successful in 51s
WAI operation catalogue / the catalogue and every door · linux (pull_request) Successful in 8m41s
wai-ops integer operators / wasm32-wasip2 (wasmtime) (pull_request) Successful in 28s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 16m29s
wai-ops integer operators / wasm32 under Node (pull_request) Successful in 42s
wai-ops integer operators / independent checker (Python) (pull_request) Successful in 14s
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Successful in 17s
WAI neural sink gates / the exact JPEG-AI decoder reports its path (pinned inputs, required) (pull_request) Successful in 1m58s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 2m17s
wai-quantum contract / the policy is linked, and the deprecations page reads (pull_request) Successful in 5s
wai-quantum command line / command line · macos (pull_request) Successful in 1m31s
wai-quantum editors / editors · macos (pull_request) Successful in 1m18s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Successful in 1m6s
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Successful in 24s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 1m44s
wai-quantum Metal member / member · Metal (macos) (pull_request) Successful in 39s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 10m49s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 12m21s
wai-quantum on every processor / emulated · powerpc64-unknown-linux-gnu (pull_request) Successful in 19m15s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 15m44s
wai-quantum command line / command line · linux (pull_request) Successful in 3m9s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 8m58s
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Successful in 1m22s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 13m19s
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Successful in 38s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 9m25s
wai-quantum contract / schemas and the committed tool lists · linux (pull_request) Successful in 5m52s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 17m10s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 4m20s
wai-quantum for Python / python · macos (pull_request) Successful in 2m52s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 3m36s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 15s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 13s
wai-quantum resource estimation / estimation and calibration · linux, release (pull_request) Successful in 1m33s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 5m31s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 11m16s
wai-quantum contract / API compatibility · linux (pull_request) Successful in 8m33s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m46s
wai-quantum other formats / the set under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m14s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 20s
wai-quantum service / service · macos (pull_request) Successful in 4m10s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 19s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m27s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 18m53s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m50s
wai-quantum OpenQASM reader / corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 47s
wai-quantum OpenQASM reader / reader and corpus · linux (pull_request) Successful in 1m33s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m15s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 30s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 22s
wai-quantum editors / editors · linux (pull_request) Successful in 5m26s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 24s
wai-vector vector graphics / macos-arm64 (pull_request) Successful in 2m9s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 25m21s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 20m28s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs · linux, release (pull_request) Successful in 1m14s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m8s
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Successful in 24m33s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 1m21s
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (pull_request) Successful in 2m15s
wai-quantum for Python / python · linux (pull_request) Successful in 3m7s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 6m27s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m10s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 20s
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m48s
wai-quantum extension points / the registry and the example · linux (pull_request) Successful in 2m37s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 35s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 13m45s
wai-quantum other formats / readers, writers and the set · linux (pull_request) Successful in 10m58s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 26s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 27s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 22m50s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 18s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 31s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 10s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 57s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (pull_request) Successful in 1m41s
wai-quantum service / service · linux (pull_request) Successful in 4m41s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m16s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m12s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 10m58s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Successful in 1m59s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 1m42s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Failing after 1m15s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 51s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Successful in 2m58s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 6m38s
wai-quantum views in agent hosts / views · a scripted host (pull_request) Successful in 3m39s
wai-vector vector graphics / wasm32 under Node (pull_request) Successful in 31s
wai-vector vector graphics / wasm32-wasip2 (wasmtime) (pull_request) Successful in 51s
wai-vector vector graphics / fuzz, peak allocation, comparison count (pull_request) Successful in 23s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 8m6s
wai-vector vector graphics / linux-x86_64 (pull_request) Successful in 1m51s
wai-vector vector graphics / wasm32 in three browser engines (pull_request) Successful in 2m57s
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Successful in 7m24s
wai-vector vector graphics / independent checker (Python) (pull_request) Successful in 3m2s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m0s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 34m32s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 5m9s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 22m13s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 16m25s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 11m1s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 13m37s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 33m15s
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Successful in 26m0s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m51s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m53s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 16m21s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m53s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 28s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 40m8s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 17s
wai-ops integer operators / linux-aarch64 (pull_request) Successful in 1m47s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m21s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 35s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m2s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m1s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 2m21s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 25s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Successful in 17m5s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 7m45s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 1m33s
wai-vector vector graphics / linux-aarch64 (pull_request) Successful in 2m23s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h8m16s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m39s
mesh-meter: hw-meter-apple meters a Mac with the SMC's whole-machine power where IOReport is not live
hw-meter-apple now enables jouleclaw-energy's `smc` beside `ioreport`. On a Mac
whose IOReport CPU rail is frozen for an unprivileged reader (macOS 27 on an
M5 Max and an M3 Ultra), HwMeter::detect's backend becomes the SMC's
whole-machine power integral (ModelBased, EnergyDomain::System) instead of the
load estimator. A live IOReport counter still comes first.

The minimum-window rule (#630) is what makes this sound: the SMC's figure needs
2 s, so a span at least that long is sealed ModelBased, and a shorter one (most
served requests) is this crate's estimate of its own length, as before. System
covers the whole request (#622), so a long span's figure stands for it: high,
since it holds whatever else the machine powered, never low.

mesh-core, mesh-openai and mesh-engine-gguf take it through their own
hw-meter-apple and metal features. ProcessMeter's host fallback becomes the SMC
on such a Mac, under the same window rule.

On the M3 Ultra: the bridge picks apple-smc with a 2 s floor; a 20 ms span is
Estimator (0.38 J) and a 2.2 s span ModelBased (152.6 J for the whole, shared
machine); mesh-openai's serve example over hw-meter-apple seals a microsecond
serve as Estimator (172 µJ), and over metal its process meter still seals
HwShunt. Tests pass on macOS (mesh-meter, mesh-core with hw-meter-apple;
mesh-openai with server,hw-meter-apple and server,metal) and Linux (mesh-meter
with hw-meter-apple); clippy clean; mesh-engine-gguf --features metal checks.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 22:08:37 -05:00

118 lines
5.6 KiB
Rust
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//! Run the Mesh OpenAI-compatible reference server — a real
//! `/v1/chat/completions` endpoint any OpenAI client (curl, the SDKs, vLLM-style
//! tooling) can drive, returning energy-metered serving + a sealed receipt.
//!
//! ```text
//! cargo run --example serve --features server -- 127.0.0.1:8088 &
//! curl -s localhost:8088/v1/chat/completions \
//! -d '{"model":"gpt-mini","messages":[{"role":"user","content":"hi"}],"max_tokens":8}'
//! ```
//!
//! **What a receipt's figure is.** Each request's `usage.energy` carries the
//! energy of the served span — the deterministic reference engine's work, in
//! this process (the HTTP handling around it is outside the span) — at the
//! grade of whatever read it, in `usage.energy.provenance` and in the sealed
//! `mesh/1` receipt. The meter is the one this build can read:
//!
//! - `--features server,metal` (macOS): `mesh_meter::ProcessMeter`, this
//! process's own CPU and GPU energy over the span. The engine runs in this
//! process and uses no GPU, so where the GPU counter is proved live its GPU
//! energy is exactly zero and the span covers the whole request: `HwShunt`,
//! the kernel's count of this process's CPU energy. That count is every
//! thread of this process, so a request served while another of its
//! threads works reads that work too. Where the GPU counter is not proved
//! live (a GPU busy with other work fails its probe) the span covers part
//! of the request and is sealed as an estimate of all of it, `Estimator`.
//! A serve too short for the CPU count to advance over it (this engine's
//! are microseconds) has no reading either, and is the estimator's figure
//! for the serve, `Estimator`.
//! - `--features server,hw-meter` (or `hw-meter-rapl`, `-nvml`, `-apple`):
//! `mesh_meter::HwMeter::detect`, the machine's counter, a reading only
//! where a live one covers the whole request (a RAPL package on Linux) and
//! `mesh_meter::EstimatorMeter` otherwise. With `-apple` on a Mac whose
//! IOReport CPU rail is frozen it is the SMC's whole-machine power: a modeled
//! figure (`ModelBased`) for a serve at least its 2 s floor long, an estimate
//! for a shorter one, as this engine's are. A machine counter reads
//! everything the host does over the span, not this request alone.
//! - `--features server` alone: `mesh_meter::EstimatorMeter`, wall time × an
//! assumed draw, `Estimator`.
//!
//! No build seals a figure nothing read: a `mesh/1` receipt has no coverage
//! field, so `HwShunt` there claims a hardware reading of the whole request
//! (SPEC §3.3), and only a meter that read one may say so.
use std::net::TcpListener;
use ed25519_dalek::SigningKey;
use mesh_core::Mesh;
use mesh_engine::ReferenceEngine;
use mesh_meter::Meter;
use mesh_openai::{server, ChatBackend};
use mesh_router::BackendSpec;
use mesh_schema::Fidelity;
/// A trivial tokenizer bridge: bytes in, a deterministic note out. A real
/// deployment pairs the model's own tokenizer with the engine that serves it.
pub struct ByteBackend;
impl ChatBackend for ByteBackend {
fn encode(&self, text: &str) -> Vec<u32> {
text.bytes().map(u32::from).collect()
}
fn decode(&self, ids: &[u32]) -> String {
format!("[mesh reference engine served {} tokens]", ids.len())
}
}
/// The meter this build serves with: see the module docs for each feature's
/// meter and what its figures cover.
pub fn meter() -> Box<dyn Meter> {
#[cfg(feature = "metal")]
let meter: Box<dyn Meter> = Box::new(mesh_meter::ProcessMeter::new(
jouleclaw_backend_apple::gpu_liveness_load,
mesh_meter::SpanUses::CpuGpu,
));
#[cfg(all(feature = "hw-meter", not(feature = "metal")))]
let meter: Box<dyn Meter> = Box::new(mesh_meter::HwMeter::detect());
#[cfg(not(feature = "hw-meter"))]
let meter: Box<dyn Meter> = Box::new(mesh_meter::EstimatorMeter::default());
meter
}
/// The deterministic reference engine behind one steward-signed receipt
/// chain, metered by `meter`.
pub fn mesh(meter: &dyn Meter) -> Mesh<'_> {
let sk = SigningKey::from_bytes(&[8u8; 32]);
let mut mesh = Mesh::new(meter, sk, "did:example:mesh-demo");
mesh.register(
BackendSpec::new("tiny", "ssm-1b", Fidelity::F2, 50_000),
Box::new(ReferenceEngine::new("tiny", "ssm-1b", Fidelity::F2, 50_000, 32)),
);
mesh
}
fn main() -> std::io::Result<()> {
let addr = std::env::args().nth(1).unwrap_or_else(|| "127.0.0.1:8088".to_string());
let listener = TcpListener::bind(&addr)?;
let meter = meter();
eprintln!("mesh OpenAI server: http://{addr}/v1/chat/completions (meter: {})", meter.name());
let mut mesh = journalled(mesh(meter.as_ref()))?;
server::run(&listener, &mut mesh, &ByteBackend, 100_000_000)
}
/// With `MESH_JOURNAL` set, record grant decisions and seals in that file and
/// replay what it already holds before serving, so a restart gives no budget
/// back and the receipt chain continues (Mesh SPEC §2.2). Without it the
/// journal is in memory, which a steward that restarts must not rely on.
pub fn journalled(mesh: mesh_core::Mesh<'_>) -> std::io::Result<mesh_core::Mesh<'_>> {
let Some(path) = std::env::var_os("MESH_JOURNAL") else {
return Ok(mesh);
};
let (journal, recorded) = mesh_core::FileJournal::open(&path)?;
let mesh = mesh
.with_journal(journal, &recorded)
.map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e.to_string()))?;
for u in mesh.unresolved() {
eprintln!("unresolved: request {} on backend {}, debited {} µJ", u.request_id.to_hex(), u.backend, u.debited_uj);
}
Ok(mesh)
}