AI-powered vulnerability scanner for Nigerian developers and global SMBs
Project description
Permi
AI-powered vulnerability scanner for Nigerian developers and global SMBs.
Permi scans your code for security vulnerabilities and uses AI to filter out false positives — so you only see findings that actually matter.
Built in Nigeria. For Nigeria. Then for the world.
What Permi detects
- SQL Injection (string concatenation, f-strings, % formatting)
- Cross-Site Scripting (innerHTML, document.write, Jinja2 |safe)
- Hardcoded secrets (passwords, API keys, AWS keys, Paystack/Flutterwave keys)
- Insecure practices (eval/exec, pickle.loads, SSL verification disabled, debug mode)
- USSD vulnerabilities (Nigerian-specific — unvalidated sessionId, phoneNumber, serviceCode)
Installation
pip install permi
Requires Python 3.9+
Usage
Scan a local project:
permi scan --path ./myapp
Scan a GitHub repository:
permi scan --path https://github.com/user/repo
Show only high severity findings:
permi scan --path ./myapp --severity high
Output as JSON (for CI/CD pipelines):
permi scan --path ./myapp --output json
Skip AI filter (offline mode):
permi scan --path ./myapp --offline
Setup
Permi uses OpenRouter for AI-powered false positive
filtering. Create a free account, generate an API key, and add it to a .env
file in your project root:
OPENROUTER_API_KEY=sk-or-your-key-here
No API key? Use --offline mode. All findings are shown unfiltered.
Example output
[1] [HIGH] SQL001 SQL Injection — string concatenation File : app/auth.py Line : 42 Code : cursor.execute("SELECT * FROM users WHERE name = " + username) Why : Raw string concatenation used to build a SQL query. AI : REAL User input is directly embedded into a SQL query with no sanitisation.
Built by
Peter N. D. — Cybersecurity student, University of Jos, Nigeria.
Permi is in active development. Feedback and contributions welcome.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file permi-0.1.3.tar.gz.
File metadata
- Download URL: permi-0.1.3.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f714719de0df743b8a630c116b2b220282a44607184a671e19b808b63d62a940
|
|
| MD5 |
555d8f730ba7202017d1118bc06f7e6d
|
|
| BLAKE2b-256 |
297897a7429f11556fa2b16f3c7c2a31b1f7ddf76be0601d5e46e1c53e7acd39
|
File details
Details for the file permi-0.1.3-py3-none-any.whl.
File metadata
- Download URL: permi-0.1.3-py3-none-any.whl
- Upload date:
- Size: 20.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ac2de46df35e444f20b74d5c776aa1d4e7d30c47bc6190c5cff62445b1cec2f
|
|
| MD5 |
16d644a671213c1f7efa56e6351b6d5c
|
|
| BLAKE2b-256 |
88c838cfa083494fd782c2e50595754e3b792a549cd5b784e2c2c301df8690bb
|