Local vs Hosted
vr.dev runs in two modes. Choose based on your use case.
Comparison
| Feature | Local SDK | Hosted API | |---------|-----------|------------| | Cost | Free (MIT) | Pay-per-call (USDC) | | Latency | Sub-millisecond (BYOS) to seconds | Network RTT + verification | | Evidence anchoring | None (local only) | SHA-256 Merkle chain + Base L2 | | Tamper evidence | None | Ed25519 signed + on-chain | | Team dashboards | None | Yes | | API keys / auth | Not needed | Required | | Language support | Python only | Any (REST API) | | RL training loops | Ideal (fast, no overhead) | Too slow for training | | Production audits | Not suitable | Designed for this | | Offline / air-gapped | Yes | No |
When to Use Local
- RL training loops: Thousands of episodes need sub-millisecond reward computation. HTTP overhead is unacceptable.
- Development & testing: Iterate on verifier pipelines without API keys or network.
- CI/CD gating: Run verification in your pipeline without external dependencies.
- Air-gapped environments: HARD verifiers with BYOS/pre_result need no network access at all.
pip install vrdev
# No API key, no hosted dependency - just works
python -c "from vrdev import get_verifier, VerifierInput; v = get_verifier('vr/code.python.tests_pass'); print(v.verify(VerifierInput(completions=['ok'], ground_truth={'repo': '.', 'test_cmd': 'pytest'}))[0].passed)"
When to Use Hosted
- Production verification: Tamper-evident evidence chain for audits and compliance.
- Multi-language teams: Call from TypeScript, Go, Rust, or any language via REST.
- Team visibility: Shared dashboards, usage tracking, and evidence history.
- Evidence replay: Re-verify historical episodes from stored evidence records.
curl -X POST https://api.vr.dev/v1/verify \
-H "Authorization: Bearer vr_live_..." \
-d '{"verifier_id": "vr/code.python.tests_pass", ...}'
Hybrid Approach
Many teams use both:
- Train locally - fast reward computation with the SDK
- Evaluate via API - tamper-evident results for final benchmarks
- Audit via evidence replay - re-verify any historical result
The SDK and API use identical verification logic. Results are deterministic and reproducible.