🛡️ SYNAPSE SHIELD
Next-Gen Open-Source Behavioral Biometrics & Bot Mitigation Engine
A privacy-first, zero-friction, self-hosted alternative to Cloudflare Turnstile.
Key Features • Architecture • Quickstart • Developer Guide • Benchmarks • Math
⚡ Overview
Synapse Shield replaces intrusive legacy CAPTCHAs and expensive proprietary cloud WAFs with sub-millisecond behavioral biomechanics.
By evaluating natural human neuromuscular micro-tremors (Jerk: $\frac{da}{dt}$), Fitts's Law terminal deceleration profiles, cursor curvature, and millisecond keystroke dynamics, Synapse Shield autonomously classifies and mitigates bots, scrapers, and credential stuffers before they touch your backend logic.
✨ Key Features & Hardening (v0.5.0)
| Feature | Description |
|---|---|
| 🧩 100% Invisible UX | Zero annoying puzzles, image selections, or audio challenges. Legitimate humans pass friction-free. |
| ⚡ Async Non-Blocking SLA (<0.5 ms) | Heavy CPU-bound kinematics processed via asyncio.to_thread, guaranteeing zero event-loop blocking under high concurrency. |
| 🔐 Cryptographic Replay Defense | Every session is bound to a single-use HMAC-SHA256 signed nonce. Intercepted tokens cannot be replayed. |
| 🧠 Fitts's Law Deceleration Kinematics | Distinguishes advanced Bézier curve bots (ghost-cursor) from organic human hands by analyzing terminal velocity drops before click actions. |
| ⚛️ React & Next.js Drop-in Support | Native "use client" compatible <SynapseProtect /> component and useSynapseShield hook with event throttling. |
| 🐍 Multi-Framework Adapters | Native middlewares and decorators for Django (SynapseShieldMiddleware) and Flask (@shield_protect_flask). |
| ♿ Accessibility Mode | Graceful risk scaling (accessibility_mode=True) prevents false positives for motor-impaired and assistive device users. |
| 📈 Enterprise Prometheus Metrics | Built-in /metrics endpoint supporting multi-process Gunicorn/Uvicorn aggregation via PROMETHEUS_MULTIPROC_DIR. |
| 🔒 100% Zero-PII & Privacy-First | No keystroke characters or form values collected — strictly relative millisecond timing deltas processed (GDPR & KVKK compliant). |
| 📊 Poisson Flooder Defense | Statistical Poisson anomaly detection identifies high-frequency headless API flooders and applies dynamic IP rate penalties. |
| 💾 SQLite WAL with Auto-Pruning | In-memory TTL nonce management + Write-Ahead Logging with automatic log pruning prevents memory leaks and disk bloat. |
🏛️ Architecture & Sequence Diagram
┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────────────┐
│ Client Browser │ │ FastAPI Gateway │ │ Kinematic Decision │
│ (synapse-sdk) │ │ (Synapse Shield) │ │ Engine (<0.5ms SLA) │
└────────┬────────┘ └──────────┬──────────┘ └────────────┬────────────┘
│ │ │
│── 1. GET /api/challenge ───────►│ │
│◄── 2. { nonce, ts, hmac_sig } ──│ (Generates single-use signed nonce)│
│ │ │
[User moves cursor / types] │ │
[SDK bundles 50Hz telemetry] │ │
│ │ │
│── 3. POST /api/score {token} ──►│ (1. Validates HMAC signature) │
│ │ (2. Checks 60s TTL freshness) │
│ │ (3. Checks Replay Attack nonce) │
│ │ │
│ │── 4. asyncio.to_thread ────────────►│ (19D Kinematics)
│ │ │ (Jerk & Fitts's Law)
│ │ │ (Poisson Anomaly)
│ │◄── 5. (bot_score, ALLOW/BLOCK) ─────│
│ │ │
│ │── 6. Save Log to SQLite (WAL) │
│◄── 7. HTTP 200 {ALLOW/BLOCK} ───│ │
🚀 30-Second Quickstart
Option 1: Install via PyPI
pip install synapse-shield
Run the server and live cockpit directly from your terminal:
synapse-shield run --port 8000
Run the automated 7-vector adversarial security test suite:
synapse-shield test
Option 2: Clone & Local Development
git clone https://github.com/0xStoic-bit/Synapse_Shield.git
cd Synapse_Shield
pip install -e .
python test_suite.py
Visit http://127.0.0.1:8000 in your browser to launch the Live Security Cockpit.
💻 Developer Integration
1. FastAPI Integration
Protect any API endpoint using the @shield_protect decorator or global middleware:
from fastapi import FastAPI, Request
from synapse_shield import shield_protect, SynapseShieldMiddleware
app = FastAPI()
app.add_middleware(SynapseShieldMiddleware, protected_paths=["/api/auth"])
@app.post("/api/login")
@shield_protect(max_risk_score=50.0, accessibility_mode=False)
async def login(request: Request):
return {"status": "authenticated"}
2. Django & Flask Integration
Native support for Django and Flask environments.
Django (settings.py):
MIDDLEWARE = [
# ...
'synapse_shield.django.SynapseShieldMiddleware',
]
SYNAPSE_SHIELD_PROTECTED_PATHS = ['/api/login']
SYNAPSE_SHIELD_MAX_RISK = 50.0
SYNAPSE_SHIELD_ACCESSIBILITY = False
Flask:
from flask import Flask
from synapse_shield.flask import shield_protect_flask
app = Flask(__name__)
@app.route("/login", methods=["POST"])
@shield_protect_flask(max_risk_score=50.0)
def login():
return {"status": "authenticated"}
3. React / Next.js Integration
We provide a drop-in "use client" compatible React package.
import { useSynapseShield, SynapseProtect } from 'synapse-shield-react';
export default function LoginForm() {
const { getProtectedPayload } = useSynapseShield();
const handleSubmit = async (e) => {
e.preventDefault();
const payload = getProtectedPayload();
// Send payload.token to your backend
};
return (
<form onSubmit={handleSubmit}>
<SynapseProtect />
<button type="submit">Login</button>
</form>
);
}
4. Prometheus Metrics
Enterprise observability out of the box. Automatically exposes latency and block rates. To enable multi-process support (e.g., Gunicorn workers), set the environment variable:
export PROMETHEUS_MULTIPROC_DIR=/tmp/synapse_metrics
5. Vanilla JS / HTML SDK
Add the lightweight SDK (<5 KB) to your vanilla project:
<script src="http://localhost:8000/static/synapse-sdk.js"></script>
<script>
SynapseShield.init();
async function handleLogin() {
const payload = SynapseShield.getPayload();
// Submit payload
}
</script>
🤖 Attack Simulation Benchmarks
Run the full adversarial suite anytime:
synapse-shield test
| Attack Vector | Simulated Signature | Detection Mechanism | Decision | Risk Score | Latency |
|---|---|---|---|---|---|
| Selenium Crawler | navigator.webdriver = true |
WebDriver API Detection | 🔴 BLOCK | 100.0% | 0.01 ms |
| Linear Bot | Straightness = 1.000 & Zero Jerk | Straightness > 0.985 & Jerk ~ 0 | 🔴 BLOCK | 100.0% | 0.18 ms |
| Bézier Stealth Bot | Mathematical curved trajectory | Fitts's Law + Zero Accel Variance | 🔴 BLOCK | 65.0% | 0.22 ms |
| Robotic Auto-Typer | Fixed-interval key injections | Keystroke Variance < 1.0 ms² | 🔴 BLOCK | 50.0% | 0.15 ms |
| Poisson Flooder | 8 rapid requests in <500 ms | Poisson anomaly (P > 99%) | 🔴 BLOCK | 60.0% | 0.08 ms |
| Replay Attack | Re-sending captured valid token | Single-use HMAC Nonce reuse | 🔴 BLOCK | 100.0% | 0.05 ms |
| Natural Human | Organic curves with tremors | Biologic Jerk & Deceleration | 🟢 ALLOW | 0.0% | 0.24 ms |
🧠 Kinematic & Mathematical Foundations
1. Jerk — Neuromuscular Tremor Fingerprint
$$\text{Jerk} = \frac{da}{dt} = \frac{d^3x}{dt^3}$$
Human muscle tremors produce continuous high-frequency Jerk. Mathematical bot curves (Bézier/Linear) produce near-zero or static Jerk.
2. Fitts's Law Terminal Deceleration Index
$$\text{Terminal Decel Ratio} = \frac{\bar{v}{\text{terminal (last 25%)}}}{v{\text{peak}}}$$
Humans naturally decelerate ($< 0.40$) as they approach the target click point.
3. Cumulative Poisson Anomaly Distribution
$$P(X < k) = \sum_{i=0}^{k-1} \frac{\lambda^i e^{-\lambda}}{i!}$$
📁 Repository Structure
Synapse_Shield/
├── .github/
│ └── workflows/
│ └── ci.yml # Automated CI matrix (Python 3.10, 3.11, 3.12)
├── src/
│ └── synapse_shield/
│ ├── __init__.py # Public API exports
│ ├── cli.py # CLI Controller (run / test commands)
│ ├── engine.py # Real-time Decision & Poisson Engine
│ ├── features.py # 19D Kinematics & Fitts's Law Extractor
│ ├── main.py # Async FastAPI Gateway & SQLite Logger
│ ├── middleware.py # @shield_protect & Middleware classes
│ ├── django.py # Django Middleware Adapter
│ ├── flask.py # Flask Route Decorator
│ ├── metrics.py # Prometheus Multi-Process Exporter
│ ├── tokens.py # HMAC-SHA256 Challenge & Replay Defense
│ ├── live_attacker.py # 7-Vector Red Team Simulation Suite
│ └── static/ # Embedded 3D Cockpit & Client SDK
│ ├── index.html
│ └── synapse-sdk.js
├── synapse-shield-react/ # React / Next.js SDK Package
│ ├── src/
│ │ ├── SynapseProtect.tsx # "use client" Drop-in Component
│ │ ├── useSynapseShield.ts# React Hook with event throttling
│ │ └── index.ts
│ ├── package.json
│ └── tsconfig.json
├── tests/ # Modular Pytest Suite
│ ├── test_features.py
│ ├── test_tokens.py
│ ├── test_engine.py
│ └── test_api.py
├── test_suite.py # Standalone Zero-Dependency Test Runner
├── pyproject.toml # PEP 517/621 Package Definition
├── requirements.txt # Core Dependencies
├── LICENSE # MIT License
└── README.md
📜 License
Distributed under the MIT License. Free for commercial and personal use.
Release files for synapse-shield 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| synapse_shield-0.6.0.tar.gz | 40.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| synapse_shield-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 75.7 kB
Release files / synapse_shield-0.6.0.tar.gz
| Download URL | synapse_shield-0.6.0.tar.gz |
|---|---|
| Size | 40.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
111f9d315ae079af25705c2d02ef71ddfaf946565d835f9ee8a0f9ca87f4f200
|
|
BLAKE2b-256 checksum How to use checksums |
af7f89f64612c02d0cc70896645b20c27858ff99a2820a3128f3b83b6a54391c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Release files / synapse_shield-0.6.0-py3-none-any.whl
| Download URL | synapse_shield-0.6.0-py3-none-any.whl |
|---|---|
| Size | 35.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
95c9ffbcc425c02197c5ddc7dbdf8a6a3a74530385a897faafdd90e98fb73d0f
|
|
BLAKE2b-256 checksum How to use checksums |
00fb4367306ae2b7dc4d21275d67060d27790d6138ee9d1389821e9b80975e82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|