Collect, store, and query audit events from any application. Real-time anomaly detection — no cloud, no external ML, no vendor lock-in.
Architecture
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.
Pre-loaded with realistic audit data. Read-only access — no sign-up required.
demo@bataudit.dev / demo
Demo data resets daily.
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.dev / demo
3. Send your first event
curl -X POST http://localhost:8081/v1/audit \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"path": "/api/users",
"method": "GET",
"status_code": 200,
"identifier": "user-123",
"service_name": "my-api",
"environment": "production"
}'
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' })