⭐ Found this useful? Install from Packagist · Give it a star on GitHub so more developers can find it.
Device Intelligence Bundle — probabilistic device matching, risk scoring, a collect endpoint, Doctrine persistence, Security integration, and first-party browser collectors for Symfony. A Device ID is not a credential.
📋 Compatible with Symfony 7.4+ and 8.0–8.1+ — PHP 8.3+ (Symfony 8.x requires PHP 8.4+).
This bundle is FrankenPHP worker mode friendly.
- Weighted matching (no
sha256(all_signals)identity hash) - Named config profiles (
default_profile+profiles) - Risk engine with explainable rules
POST /_device/collectwith origin checks, nonce replay protection, and rate limits- Doctrine tables with a configurable prefix
- Controller attributes for risk, rate limits, and trusted devices
- Web Profiler panel
nowo_device_intelligence - Browser collectors: pnpm + Vite (IIFE for any host; Pentatrion Vite in the Symfony demo)
composer require nowo-tech/device-intelligence-bundleWith Symfony Flex, the recipe registers the bundle, config, and collect route. Without Flex, see docs/INSTALLATION.md.
// config/bundles.php
return [
Nowo\DeviceIntelligenceBundle\NowoDeviceIntelligenceBundle::class => ['all' => true],
];<script src="{{ asset('js/device-intelligence.min.js', 'nowo_device_intelligence') }}"></script>
<script>
const device = new DeviceIntelligence({ endpoint: '/_device/collect' });
device.collect();
</script>- PHP
>=8.3 <8.6 - Symfony 7.4, 8.0, and 8.1+
- Optional: Doctrine ORM (default persistence), Messenger, Twig / Web Profiler
- Installation
- Configuration
- Usage
- Contributing
- Code of Conduct
- Changelog
- Upgrading
- Release
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit
- Quick start
- Collectors
- Matching
- Risk engine
- Trusted devices
- Privacy
- Rate limiting
- Profiler
- Custom rules
- Custom collectors
- Scaling
- PSR evaluation
- Coverage policy
- Demo FrankenPHP
- GitHub CI
- GitHub About
PHP line coverage target: 99.75% of includable src/ and lib/ (gate ≥ 99%). TypeScript line coverage: 95.60% (gate ≥ 90%).
make test
make test-coverage
make test-ts
make qa| Language | Latest reported |
|---|---|
| PHP | 99.75% lines (Clover coverage.xml, CI) |
| TypeScript | 95.60% lines (pnpm run test:coverage) |
MIT © 2026 Héctor Franco Aceituno / Nowo.tech
