Inject production-ready modules into any Python or Node project. AI-adaptive, framework-aware, BSL Licensed.
Project description
shadow-stack v5
Inject production infrastructure into any Python or Node project in minutes. Framework-aware · AI-adaptive · Multi-provider with fallback · Git-branch rollback · BSL Licensed
pip install shadow-stack
shadow-stack scan ./myproject # health score + what's missing (FREE)
shadow-stack diff ./myproject # preview changes before inject (FREE)
shadow-stack cost ./myproject # estimate AI cost first (FREE)
shadow-stack audit ./myproject # security issues (FREE)
shadow-stack inject ./myproject # AI-adapted production modules (PAID)
shadow-stack rollback ./myproject # list/clean inject branches (FREE)
What's new in v5
| Feature | v4 | v5 |
|---|---|---|
| Framework-aware scanner (no false positives on JS/TS projects) | ❌ | ✅ |
| AI provider fallback chain (auto-retry on rate-limit / 5xx) | ❌ | ✅ |
| Git-branch rollback (every inject = its own branch) | ❌ | ✅ |
| Node/Express module pack (auth + security + monitoring + tests + docker) | ❌ | ✅ |
| GitHub Action for CI integration | ❌ | ✅ |
| Freemium model (free scans, paid inject) | ❌ | ✅ |
| pyproject.toml packaging | ❌ | ✅ |
Free tier (always free)
scan · audit · diff · cost · frameworks · providers · explain · license
Run scans on any project, any time, no key required. This is the acquisition loop —
get a real production-readiness score before deciding if inject is worth paying for.
Paid tier (license key required)
inject · recipe apply · upgrade · sync · fix-wiring · install
export SHADOW_STACK_LICENSE_KEY=solo_xxxxxxx
shadow-stack inject ./myproject --only auth payments monitoring
Tiers: solo_* ($29/mo) · team_* ($99/mo) · ent_* ($499/mo) · lifetime_* ($149)
Framework support
| Framework | Detect | Inject | Modules |
|---|---|---|---|
| FastAPI | ✅ | ✅ | All 16 Python modules |
| Django | ✅ | ◑ | auth, monitoring, security, tests, docker, deployment |
| Flask | ✅ | ◑ | auth, monitoring, security, tests, docker |
| Express | ✅ | ✅ | v5 NEW — node_auth/security/monitoring/tests/docker |
| NestJS | ✅ | ✅ | v5 NEW — same Node module pack |
| Next.js | ✅ | ◑ | v5 NEW — node_auth, node_monitoring, node_tests |
| Fastify | ✅ | ○ | Detection only |
| React/Vite | ✅ | ◑ | node_tests |
| Go (Gin) | ○ | ○ | Planned v6 |
The scanner is framework-aware: a Next.js project no longer gets false-positive "missing password hashing" warnings just because the FastAPI checker doesn't know JS.
Git-branch rollback
Every inject in a git repo creates a dedicated branch:
shadow-stack/inject-auth-monitoring-20260510-153022
Review the diff, then merge or rollback:
git checkout main && git merge --no-ff <branch> # accept
git checkout main && git branch -D <branch> # discard
shadow-stack rollback ./myproject --cleanup 14 cleans up branches older than 14 days.
AI provider fallback (v5 reliability fix)
Default chain: anthropic → openai → gemini → groq → deepseek → ollama
If your primary rate-limits halfway through a 12-module inject, v5 auto-retries on the next available provider. v4 used to fail the whole run.
Set SHADOW_STACK_AI_PROVIDER=openai to pin a specific primary; the chain still
applies on failure.
GitHub Action
# .github/workflows/health-score.yml
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shadowhunter89/shadow-stack/.github/actions/scan@v5
with:
fail-below: 60 # fail the PR if score drops below 60
comment-on-pr: true # post score as a PR comment
What the comment looks like
On every pull request, the action posts a comment like this:
🟡 shadow-stack score: 62/100
Framework fastapiMissing modules 6 Critical security issues 2 Run
shadow-stack injectlocally to fix the gaps. Get a license to enable inject.
Score emoji is colour-coded:
- 🟢 80+ — production-ready
- 🟡 60-79 — has gaps, but shippable
- 🔴 < 60 — needs work before launch
What you'll see in the GitHub Actions tab
The action also writes a Job Summary visible in the run page:
## shadow-stack scan
| Metric | Value |
|--------|------:|
| Health Score | 62/100 |
| Framework | fastapi |
| Missing modules | 6 |
| Critical issues | 2 |
Outputs you can use in downstream steps
- uses: shadowhunter89/shadow-stack/.github/actions/scan@v5
id: scan
- run: echo "Health = ${{ steps.scan.outputs.health-score }}"
- run: echo "Framework = ${{ steps.scan.outputs.framework }}"
License
Business Source License 1.1. You may use it on your projects (private or commercial). You may not sell it as a standalone product or build a hosted SaaS of it. Converts to Apache 2.0 four years after release.
Commercial licensing: shadowhunter89@proton.me · © 2026 ShadowHunter89.
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 shadow_stack-5.0.2.tar.gz.
File metadata
- Download URL: shadow_stack-5.0.2.tar.gz
- Upload date:
- Size: 79.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4545683a76ef1cd8987c0863b770535ffa65cc3ab9b7e7acf4dc530e4c0b08b8
|
|
| MD5 |
fff5451858e4cd7dc2f5979ec8d02f91
|
|
| BLAKE2b-256 |
5a6b8fad5c0a802192b0251fe9d5eed1fb833950d04c1d8d18790e9000268796
|
File details
Details for the file shadow_stack-5.0.2-py3-none-any.whl.
File metadata
- Download URL: shadow_stack-5.0.2-py3-none-any.whl
- Upload date:
- Size: 78.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2582d97fab40c4851c4bc2f195cc5675a5b57f72f011a263a594394245c12e9f
|
|
| MD5 |
37976da9010f69507e5da98ee0c5270e
|
|
| BLAKE2b-256 |
9479b6a53ecbb2190600c7409fc321a27f3126236fd28f93728b4ff4185347fd
|