Skip to main content

Why QWEDLocal?

No backend server needed

  • Run verification directly in your application
  • No infrastructure to manage
  • Suitable for prototyping, scripts, and small projects

Local execution

  • Your API keys stay on your machine
  • Your data does not touch QWED servers
  • Useful for HIPAA, GDPR, and sensitive-data workloads

Model agnostic

  • Works with any supported LLM — OpenAI, Anthropic, Gemini
  • Works with local models via Ollama
  • Works with any OpenAI-compatible API

Deterministic caching

  • Cached results return without an LLM round-trip
  • Repeated queries skip the LLM call
  • Cache hits avoid network latency

Installation

Dependencies:

Quick start

From v9.0.0, QWEDLocal needs model=. QWED names no default model, so pass a model ID your provider serves. Without one, QWEDLocal raises ValueError. The same applies to verify().

Option 1: Ollama (no per-call cost)

Option 2: OpenAI

Option 3: Anthropic Claude


Verification engines

1. Math verification (SymPy)

2. Logic verification (Z3)

3. Code security (CodeVerifier)

Changed in v8.0.0 (GHSA-v8qq-v427-qrqc)
verify_code runs QWED’s CodeVerifier in process and admits the code with admission_decision(). Only admitted code is verified=True with value="SAFE".
Dangerous code detection:
result.evidence carries the verifier’s status, admission, constraint_id, critical_count, issues, and proof_ref. From v9.1.0, CodeVerifier admits Python code only when the modules and module names it uses, its builtins, and its special attributes are on QWED’s lists. QWEDLocal uses the default lists with no trusted modules, so code that imports a third-party module such as numpy is not admitted. See Only listed modules, builtins and attributes are admitted. QWEDLocal does not serve code results it cached before v9.1.0. CodeVerifier ships with the full qwed package. Without it, verify_code returns verified=False with value="UNVERIFIABLE" and an error. It never returns SAFE.
Before v8.0.0, verify_code used a local AST check that flagged only bare calls to eval, exec, compile, and __import__. Code such as os.system(...), subprocess.run(...), or from os import system came back SAFE. Cached code results from that check are not reused after you upgrade.

Deterministic caching

Caching avoids redundant LLM calls.
Cache stats:
Disable caching:

CLI tool

One-shot verification

Interactive mode

Cache management

Help


Cost comparison

Caching reduces repeated-query cost by skipping the LLM call.

Privacy and security

Local-only data flow

QWEDLocal architecture:
Use cases:
  • Healthcare (HIPAA compliance)
  • Finance (PCI-DSS compliance)
  • Government (classified data)
  • Privacy-focused applications

Advanced configuration

Custom cache settings

Environment variables

Quiet mode (no branding)


Examples

Example 1: fact-checking pipeline

Example 2: code review automation

Example 3: batch processing with cache


Troubleshooting

LLM not available

Missing dependencies

Cache issues


Learn more


Contributing

Contributions welcome. See the contributing guide.

License

Apache 2.0 — see LICENSE.

Support

If QWEDLocal saved you time or money, give us a star! ⭐ Made with 💜 by the QWED team