Collect, store, and query audit events from any application. Real-time anomaly detection — no cloud, no external ML, no vendor lock-in.
events/day
12,847
error rate
1.2%
alerts
2 ⚠
// How it works
POST to Writer :8081 from any app using our SDK or plain HTTP. Validated and queued instantly via Redis.
Worker dequeues, persists to PostgreSQL, runs anomaly detection — volume spikes, brute-force, silent services.
Reader :8082 serves filtered queries, exports, and sessions. Push/Webhook notifications fire on detection.
// Features
Without the cloud bill.
Send events via HTTP from any language using our SDK or a plain POST request. Events are validated, sanitized, and queued instantly.
Statistical engine detects volume spikes, error rate surges, brute-force attempts, mass deletions, and silent services — no ML models needed.
Browser Push (VAPID) and Webhooks to any URL — Discord, Slack, PagerDuty, n8n. HMAC-SHA256 signatures with automatic retry.
Owner / Admin / Viewer roles per project. API keys scoped to projects. Projects auto-created on first event — zero configuration.
Filter by service, method, status, identifier, date range. Export up to 100 000 events as CSV or JSON with a single click.
Raw events → hourly summaries → daily summaries. Infinite history without infinite storage. Configurable retention windows.
// Why BatAudit
// Live demo
Pre-loaded with realistic audit data. Read-only access — no sign-up required.
Demo data resets daily.
// Install
Docker Compose is the only prerequisite.
// 1. clone the repository
git clone https://github.com/joaovrmoraes/bataudit.git
cd bataudit
// 2. start with demo data
docker compose -f docker-compose.demo.yml up
Dashboard: http://localhost:8082/app · Login: demo@bataudit.com / demo123
// 3. send your first event
// or use the Node.js SDK
npm install @bataudit/nodeimport { BatAudit } from '@bataudit/node' const bat = new BatAudit('bat_your_api_key') await bat.log({ path: '/api/users', method: 'GET', statusCode: 200, identifier: 'user-123', serviceName: 'my-api' })