Kepler is an AI-powered Orbital Intelligence Platform designed to monitor satellites, track space debris, predict collision risks, and generate autonomous avoidance recommendations.
The project addresses one of the fastest-growing challenges in modern space operations:
The increasing congestion of Earth's orbital environment.
As thousands of new satellites enter orbit and space debris continues to accumulate, the probability of orbital collisions rises dramatically.
Kepler provides:
- Real-time orbital visualization
- Satellite and debris tracking
- Collision prediction
- Conjunction analysis
- Orbital risk assessment
- Autonomous maneuver recommendations
- Space weather monitoring
- Orbital intelligence dashboards
The platform combines modern AI systems, orbital mechanics, data visualization, and predictive analytics into a unified operational command center.
- π°οΈ Live Satellite Tracking
- βοΈ Space Debris Monitoring
β οΈ AI-Based Collision Prediction- π Orbital Risk Assessment
- π€ Multi-Agent AI Decision System
- π Digital Twin Earth Visualization
- π Autonomous Collision Avoidance Recommendations
- π Space Weather Monitoring
- π Interactive Dashboard & Analytics
- π Real-time Orbital Data Processing
- React
- TypeScript
- Tailwind CSS
- CesiumJS
- Redux Toolkit
- FastAPI
- Python
- PostgreSQL
- SQLAlchemy (async) / asyncpg
- Alembic (migrations)
- OpenAI API
- LangGraph
- NumPy
- Pandas
- Scikit-learn
- Space-Track
- CelesTrak
- NASA DONKI
- NOAA SWPC
- Docker
- Docker Compose
- GitHub Actions
Kepler/
β
βββ frontend/
β βββ public/
β βββ src/
β βββ components/
β βββ pages/
β βββ hooks/
β βββ store/
β βββ services/
β βββ utils/
β βββ assets/
β βββ styles/
β
βββ backend/
β βββ app/
β βββ api/
β βββ services/
β βββ ai/
β βββ orbital/
β βββ database/
β βββ models/
β βββ schemas/
β βββ middleware/
β βββ migrations/
β βββ utils/
β
βββ docs/
βββ datasets/
βββ scripts/
βββ docker/
βββ tests/
β
βββ .env
βββ docker-compose.yml
βββ requirements.txt
βββ README.md
Click the Fork button at the top-right of this repository.
git clone https://github.com/<your-username>/Kepler.gitcd Keplergit remote add upstream https://github.com/7-Blocks/Kepler.gitVerify:
git remote -vcd backend
pip install -r ../requirements.txtcd ../frontend
npm installCreate a .env file in the project root.
Example:
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
POSTGRES_DB=kepler
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
DATABASE_URL=postgresql+asyncpg://your_username:your_password@localhost:5432/kepler
SPACETRACK_USERNAME=your_username
SPACETRACK_PASSWORD=your_password
OPENAI_API_KEY=your_api_keyRun a local PostgreSQL instance, or use Docker:
docker run --name kepler-postgres \
-e POSTGRES_USER=your_username \
-e POSTGRES_PASSWORD=your_password \
-e POSTGRES_DB=kepler \
-p 5432:5432 \
-d postgres:16Alternatively, connect to a managed PostgreSQL instance (e.g. Supabase, Neon, RDS) by pointing DATABASE_URL at it.
cd backend
alembic upgrade headcd backend
uvicorn app.main:app --reloadBackend:
http://localhost:8000
Swagger:
http://localhost:8000/docs
cd frontend
npm run devFrontend:
http://localhost:5173
To quickly populate the local PostgreSQL database with realistic sample satellite, telemetry, and conjunction records for development, testing, and demonstration, use the seeding script:
cd backend
PYTHONPATH=. python scripts/seed_db.py --count 50 --clear--count/-c(default50): Number of satellite records to generate.--clear/-x: Drops existing satellite, debris, telemetry, and conjunction records from PostgreSQL before seeding.
By default, the script connects to the database specified by DATABASE_URL in the .env file, defaulting to postgresql+asyncpg://postgres:postgres@localhost:5432/orbital_guardian if unset. You can configure a custom PostgreSQL connection string by setting the DATABASE_URL environment variable:
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/custom_db PYTHONPATH=. python scripts/seed_db.py --count 100 --clearBackend
pytestFrontend
npm testWe welcome contributions from developers of all experience levels. Whether you're fixing bugs, improving documentation, or adding new features, your contributions are appreciated.
Before starting new work, sync your fork with the latest changes.
git checkout main
git fetch upstream
git merge upstream/mainUse a descriptive branch name.
git checkout -b feature/add-health-endpointExamples:
feature/add-authentication
bugfix/fix-postgres-sync
docs/update-readme
refactor/improve-api
Implement your feature or bug fix following the project's coding standards.
Write clear and meaningful commit messages.
git add .
git commit -m "feat: add satellite synchronization endpoint"Examples:
feat:
fix:
docs:
refactor:
test:
style:
git push origin feature/add-health-endpointGo to your fork on GitHub and click New Pull Request.
Please include:
- A clear description of the changes
- Screenshots (if UI changes)
- Related issue number (if applicable)
- Testing details
Please ensure that:
- Your code follows the existing project structure.
- Keep pull requests focused on one feature or fix.
- Write clean and maintainable code.
- Update documentation when necessary.
- Add tests for new functionality whenever possible.
- Run the project locally before submitting a PR.
- Resolve merge conflicts before requesting a review.
When reporting a bug, please include:
- Operating System
- Browser (if frontend)
- Python version
- Node.js version
- Steps to reproduce
- Expected behavior
- Actual behavior
- Screenshots or logs (if available)
We encourage new ideas.
Before opening a feature request:
- Check existing issues.
- Clearly explain the problem.
- Describe the proposed solution.
- Explain the expected impact.
- Follow PEP 8
- Use type hints
- Write descriptive function names
- Use ESLint formatting
- Prefer functional components
- Keep components modular
- Satellite synchronization
- AI collision prediction improvements
- Multi-agent planning
- Digital Twin enhancements
- Space weather analytics
- Orbital maneuver optimization
- Real-time alert system
- Production deployment
If you find Kepler useful:
β Star the repository
π΄ Fork the project
π Report issues
π‘ Suggest new ideas
π€ Contribute code
Kepler uses an automated labeling system powered by GitHub Actions to triage and organize issues and pull requests automatically. This simplifies contribution tracking, prioritizes maintenance work, and streamlines reviews.
The workflow (.github/workflows/auto-labeler.yml) triggers on various GitHub events and applies rules defined in the configuration file .github/labeler-config.js.
- Assignment Tracking: Automatically adds the
assignedlabel when an issue is assigned to a contributor. When unassigned, the label is removed only if no assignees remain, preventing race conditions. - Form Parsing: Automatically extracts values from issue form dropdown fields:
- Priority: Maps selection to
priority:low,priority:medium,priority:high, orpriority:critical. - Platform: Maps selection to
website,frontend,backend,api, ormobile(including their respectivetype:*prefixes). - Difficulty: Maps selection to
level:beginner,level:intermediate,level:advanced, and assigns appropriate initialsize:*labels (e.g.size:Sfor beginner,size:Mfor intermediate).
- Priority: Maps selection to
- Keyword Matching: Scans the title and body for key terms to apply labels like
bug,documentation,enhancement,AI,database,GitHub Actions, etc.
- Scope Detection: Scans modified files to automatically apply scope labels:
- Changes in
frontend/**->frontend - Changes in
backend/**->backend - Changes in
.github/workflows/**->github-actions - Changes in
tests/**->testing - Docker changes ->
docker - Database-related files (models, migrations, schemas) ->
database
- Changes in
- Documentation-Only Changes: If a pull request modifies only documentation paths (e.g.,
docs/**,README.md,*.md), it will receive thedocumentationlabel, and other code/scope labels will be bypassed. - PR Size Calculation: Measures the total lines changed (additions + deletions) and applies a size label:
size:XS(β€ 10 lines)size:S(β€ 50 lines)size:M(β€ 200 lines)size:L(β€ 500 lines)size/XL(> 500 lines)
- Keyword Matching: Scans PR title and description for keywords.
All labeling configurations are centralized in .github/labeler-config.js.
To update or add a new label:
- Open
.github/labeler-config.js. - Add the label metadata (name, color, description) under the
labelsobject (the workflow will automatically create this label in the repository if it doesn't already exist!). - Add/edit rules:
- For issues, add patterns under
issueRules.keywordsor map a new form option underissueRules.formMappings. - For pull requests, add file glob paths under
prRules.filePatternsor modify keywords underprRules.keywords.
- For issues, add patterns under
- Label not added: Check the GitHub Actions logs for
Automatic Labeler. It prints detailed information on which rules matched, which labels already existed, and which labels were added. - Fork security: The workflow runs under
pull_request_targetto securely label pull requests from external forks. It checks out the trusted base branch to prevent execution of untrusted code.
This project is licensed under the MIT License.
Developed and maintained by 7-Blocks.
We appreciate every contribution that helps make Kepler a better open-source platform for autonomous space traffic management.
β If you found this project helpful, consider giving it a star. β

























