- Create concise README with TL;DR and quick start guide
- Move detailed technical docs to TECHNICAL.md
- Focus on: what it is, how to install, how to use
- Link to TECHNICAL.md and RESEARCH.md for deeper info
Co-authored-by: Cursor <cursoragent@cursor.com>
- Add scripts/test-randomness.py with 8 statistical tests based on
NIST SP 800-22 and ENT methodologies (Shannon entropy, chi-square,
Monte Carlo Pi, serial correlation, bit balance, etc.)
- Update README with Randomness Validation section documenting the
test suite, usage examples, and pass criteria
- Script supports testing from server, file, or stdin
Co-authored-by: Cursor <cursoragent@cursor.com>
Major changes:
- Refactor entropy extraction into modular src/entropy/ with camera, config,
extract, and pool submodules
- Add automatic camera reconnection with retry logic (5 retries, 500ms delay)
so the service survives temporary camera disconnections
- Build as OpenSSL 3.x provider (cdylib) for system-wide entropy integration
- Add manpage (man/camera-qrng.1) with setup instructions and API docs
- Add cross-compilation script for ARM64/x86_64 on macOS and Linux
- Add helper scripts: release-camera.sh, stream-random.sh, stream-demo.sh
The camera now automatically attempts to reconnect when frame capture fails
instead of dying, making the service more resilient for long-running deployments.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Configure camera for optimal noise capture (maximize gain, brightness, exposure)
- Update README with lens-covering instructions and security model
- Add RESEARCH.md with academic background on camera-based entropy
- Add FAKE_CAMERA=1 env var to use /dev/urandom instead of real camera
for testing in environments without camera hardware (Docker, CI)
- Add extract_entropy_fake() that simulates camera frames with random data
- Add web UI (index.html) and MCP well-known endpoint
- Add Dockerfile with multi-stage build for containerized deployment
- Add OBS virtual camera scripts for testing with simulated noise input
- Update Dockerfile to use rust:latest and add clang for bindgen