OSSPREY (Open Source PRoject sustainabilitY tracker) is built to help open source projects not just survive, but thrive. Instead of relying on surface-level metrics, OSSPREY looks deeper — mapping how people collaborate, how code evolves, and how projects grow or struggle over time.
We combine network analysis, machine learning, and lessons pulled directly from real research to offer practical, evidence-based recommendations — not just vague advice. Our goal is simple: make it easier for maintainers, contributors, and foundations to spot risks early, understand what’s working, and take action to build more sustainable projects.
Open source is complex and always changing. OSSPREY gives you tools that grow with you — whether you're steering a small project or managing a major foundation’s portfolio. It’s not about static scores or dashboards; it’s about building a healthier future for your community.
To learn more about OSSPREY, visit our live link at ossprey.netlify.app
➡️ OSSPREY is here to help you build sustainable open source software.
OSSPREY consists of multiple modular components. Begin by cloning all required repositories:
git clone https://github.com/OSS-PREY/OSSPREY-FrontEnd-Server
git clone https://github.com/OSS-PREY/OSSPREY-BackEnd-Server
git clone https://github.com/OSS-PREY/OSSPREY-ReACT-API
git clone https://github.com/OSS-PREY/OSSPREY-Pex-Forecaster
git clone https://github.com/OSS-PREY/OSSPREY-OSS-Scraper-Tool
-
Ensure Node.js & npm are installed (version 14.x or above):
sudo apt install npm
-
Install project dependencies:
npm install
-
Start development server (hot reload):
npm run dev
-
Build for production:
npm run build
-
Clear cache and reinstall (if build issues occur):
rm -rf node_modules package-lock.json npm cache clean --force npm install
-
Create and activate Python environment (Python 3.10 recommended):
python3 -m venv venv source venv/bin/activate
-
Install Python dependencies:
Downloadrequirements.txt
from GitHub and run:pip install -r requirements.txt
-
Navigate to OSSPREY-OSS-Scraper-Tool directory:
cd OSSPREY-OSS-Scraper-Tool
-
Install Rust and Cargo:
Follow the official guide at rust-lang.org/tools/install -
Environment File Configuration
Create a.env
file in theOSSPREY-OSS-Scraper-Tool
directory with the following content:GITHUB_TOKEN="PERSONAL-TOKEN"
Replace
PERSONAL-TOKEN
with your GitHub personal access token. The token should be fine-grained access tokens with read access to the public repositories on GitHub. -
Prepare and build the OSS Scraper tool:
cargo update cargo clean cargo build cargo fix --bin "miner"
The built binary will appear inside the
target
directory. -
Navigate to the core backend directory (OSSPREY-BackEnd-Server):
cd ../OSSPREY-BackEnd-Server
This directory contains the Flask server that serves API endpoints.
-
Install MongoDB and Mongosh:
Use the provided scripts (MongoDB and Mongosh) to install MongoDB and Mongosh:sh install_mongo.sh sh install_mongosh.sh
-
Set up the database user in mongosh:
mongosh use decal-db db.createUser({ user: "ossprey-backend", pwd: "FL3YyVGCr79xlPT0", roles: [{ role: "readWrite", db: "decal-db" }] })
-
Download Foundational Data:
Download the foundational data and place it in theparent
directory. -
Insert data into MongoDB:
Run the following script from the given Insert-Data file.sh insert_data_to_mongodb.sh
-
Environment File Configuration
Create a.env
file in theOSSPREY-BackEnd-Server
directory with the following content:GITHUB_TOKEN_1="PERSONAL-TOKEN-1" GITHUB_TOKEN_2="PERSONAL-TOKEN-2" GITHUB_TOKEN_3="PERSONAL-TOKEN-3" GITHUB_TOKEN_4="PERSONAL-TOKEN-4" PEX_GENERATOR_REPO_URL="https://github.com/arjashok/pex-forecaster.git" OSS_SCRAPER_REPO_URL="https://github.com/priyalsoni15/OSS-scraper.git" PEX_GENERATOR_DIR="/mnt/data1/OSPEX/root-linode/pex-forecaster" OSS_SCRAPER_DIR="/OSSPREY-OSS-Scraper-Tool" REACT_API_DIR="/OSSPREY-ReACT-API" GITHUB_USERNAME="GITHUB_USERNAME" MONGODB_URI="mongodb://ossprey-backend:FL3YyVGCr79xlPT0@localhost:27017/decal-db?retryWrites=true&w=majority"
Replace
PERSONAL-TOKEN-1
,PERSONAL-TOKEN-2
,PERSONAL-TOKEN-3
, andPERSONAL-TOKEN-4
with your GitHub personal access tokens. These should be fine-grained access tokens with read access to public repositories. Also, replaceGITHUB_USERNAME
with your GitHub username. -
Start the Flask backend using Gunicorn (production):
gunicorn -w 4 --max-requests 100 --max-requests-jitter 10 --timeout 120 -b 0.0.0.0:5000 run:app
-
Debug locally using Flask (development):
python -m flask run