Skip to content

Explore CommitLLM as an optional verified-inference backend #147

Description

@i386

Summary

Explore how mesh-llm could use lambdaclass/commitllm to add optional verifiable inference to the mesh.

The key framing is that commitllm is not a replacement for mesh-llm's routing/discovery/runtime model. It is a provenance layer for inference: serve normally, return a compact commitment/receipt, and later answer audit challenges that a verifier can check against the claimed weights, config, transcript state, and decode policy.

Why this is interesting

mesh-llm already solves distributed placement, routing, discovery, and client access across a peer mesh. commitllm could add a trust layer on top for cases where clients need evidence that a remote node actually ran the claimed model and serving policy.

Potential value:

  • auditable inference for untrusted or mixed-operator meshes
  • stronger model-identity guarantees for benchmarks/evals
  • compliance-oriented or premium "verified inference" mode
  • groundwork for receipts/challenges in marketplace-style or third-party compute settings

Current fit

There is a strong conceptual fit, but the current implementations do not line up directly.

mesh-llm today:

  • routes requests through a QUIC mesh
  • uses llama.cpp (llama-server + rpc-server) as the inference backend
  • assumes the inference layer is mostly unmodified and reachable over HTTP/TCP tunnels

commitllm today:

  • is implemented around vLLM, not llama.cpp
  • relies on runtime instrumentation/capture hooks in the serving path
  • returns a response plus a commitment/receipt and supports later audit openings
  • still has llama.cpp plugin, OpenAI-compatible proxy, Streaming / SSE, and several production-serving pieces on its roadmap

This means commitllm is not currently a drop-in addition to the existing llama.cpp mesh path.

Recommended direction

Phase 1: optional verified backend

Add support for a new backend class in mesh-llm for verified inference, likely something like verified-vllm.

Scope:

  • keep mesh-llm as the network/routing/control plane
  • run verified nodes as an alternate backend rather than modifying the current llama.cpp path
  • likely constrain verified nodes to solo serving initially rather than tensor-split serving
  • allow the mesh to advertise that a given model/backend supports receipts and audits
  • preserve current behavior for normal llama.cpp nodes

Initial API shape:

  • inference response includes request_id and commitment/receipt metadata when the selected backend is verified
  • add an audit endpoint or management endpoint that proxies audit requests to the serving backend
  • expose verification capability in status/UI so clients know which nodes/models are auditable

Phase 2: verifier and UX surface

Add a verifier-facing flow to mesh-llm:

  • local CLI or plugin command to verify an audit proof from a receipt/challenge
  • console/API support for showing verification capability and challenge/audit status
  • optional receipt persistence and lookup by request ID

Phase 3: deeper native integration

Longer term, investigate native llama.cpp capture rather than treating verified inference as an alternate backend.

That would likely require:

  • retained-state capture from llama.cpp / rpc-server
  • canonical sampler parity
  • GGUF/ggml model identity binding compatible with the verifier story
  • a protocol for receipts/audits in tensor-split or multi-node execution

This is a research/runtime project, not an adapter.

Main technical questions

  • How should backend capability be modeled in node status, routing, and model advertisements?
  • Should verified inference be a per-node backend choice, a per-model capability, or both?
  • What is the smallest stable API extension for returning receipt metadata without breaking existing clients?
  • Where should audit requests live: inference API, management API, or plugin surface?
  • Do we want the first version to support only solo verified nodes?
  • What is the long-term plan for llama.cpp compatibility vs running a parallel verified backend?

Implementation notes

A reasonable first milestone is not to modify the current llama.cpp serving path.

Instead:

  1. add backend abstraction where needed so a model can be served by either llama.cpp or a verified backend
  2. route verified requests through the existing mesh proxy/control plane
  3. return receipt metadata to clients when present
  4. add an audit passthrough endpoint
  5. keep tensor-split and native llama.cpp verification out of scope for the first cut

Acceptance criteria for the first milestone

  • a node can advertise a verified backend capability for at least one model
  • routed inference to that model returns normal output plus receipt metadata
  • a client can request an audit opening for a prior response using the returned request ID
  • current non-verified llama.cpp flows are unchanged
  • status/API/UI surfaces make verified capability discoverable

References

  • mesh-llm: QUIC mesh + llama.cpp routing/control plane
  • commitllm: commit-and-audit provenance layer for open-weight inference
  • commitllm roadmap items worth tracking: llama.cpp plugin, OpenAI-compatible proxy, Streaming / SSE

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions