Project Info
Try it here -> https://detour-azure.vercel.app/ TL;DR π°οΈ Detour is an edge-first, autonomous decision-support system for satellite debris avoidance. Built for the ASUS Ascent GX10 / NVIDIA DGX Spark, Detour transforms raw orbital data into direct physical action, enabling agents to independently determine when a satellite requires a maneuver and generating the precise path-adjustment commands to execute it. It ingests live Two-Line Element (TLE) sets, propagates orbits in real-time, and generates a prioritized feed of Conjunction Data Message (CDM)-style events. The core of Detour is a multi-agent workflow powered by a local NVIDIA open model via vLLM. The system evaluates risks against real-world satellite constraints, such as fuel budgets, burn limits, and mission horizons, to ensure any proposed maneuver is both physically possible and operationally safe. Our agentic approach provides a transparent audit log, showing the system's reasoning as it screens, ranks, and triages the most dangerous objects in the debris field. Ultimately, Detour automates a high-stakes workflow that satellite operators have managed manually for decades, redefining the future of orbital infrastructure! The problem with today's debris avoidance Low Earth Orbit is getting overwhelmed with operational satellites and debris. Even a small debris fragment can cause catastrophic damage at orbital speeds. Satellite operators therefore run continuous conjunction assessments to predict close approaches and decide whether an avoidance maneuver is worth the operational cost (fuel/Ξv, mission disruption, and the risk of creating new conjunctions). Conjunction warnings are typically delivered to operators as Conjunction Data Messages (CDMs), which are standardized notifications generated from tracking and screening systems that summarize an upcoming close approach. Operators are often overwhelmed by a constant stream of these messages. Because the data is so technically dense, itβs difficult to quickly filter out the noise and identify which threats actually require a maneuver.
How we built it
The Agentic Engine Detour is designed to run entirely at the edge, simulating the air-gapped environment of a real satellite or ground station. We utilized the ASUS Ascent GX10 (NVIDIA DGX Spark) to host our agentic workforce, deploying the NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4 model via vLLM for low-latency reasoning. We split the workload into specialized roles: The Ingest & Screening Agents: These manage the live TLE data stream and run the heavy SGP4 physics to predict where every object in the catalog will be over the next 24 hours. The Navigator Agent: This agent acts as the primary "operator." It evaluates threats against the user-defined constraints and decides if a maneuver is necessary. -The Logic Loop: To ensure accuracy, we kept the math and logic separate. The agents call Python-based physics libraries for orbital propagation and only use the LLM layer for high-level decision logic and maneuver triage. The dashboard We built a Next.js + React + TypeScript dashboard styled with shadcn/ui for a clean, high-contrast mission-control layout. The visualization uses a Three.js 3D globe to render the target orbit and surrounding debris environment in real-time. Left Panel: Handles NORAD lookup and the live conjunction feed. Right Panel: Exposes constraint inputs that define the rules for the agents. Terminal: Provides a readable system trace, showing exactly how the agents are fetching data, screening threats, and calculating maneuvers.
Challenges we ran into
We quickly found that LLMs are excellent at reasoning but terrible at orbital mechanics. Early versions of the agent tried to "guess" the result of a burn. We solved this by implementing a strict Tool Use architecture, forcing the model to offload all math to the SGP4 propagator and only interpret the results. We also found that our agents could not calculate all the orbital paths of the thousands of debris with a latency sufficient for inference; to fix this, we ended up using a Gaussian stochastic sampling distribution. to model each asteroid path. Lastly, running a local LLM alongside a heavy 3D visualization and real-time physics engine on a single edge device was a huge challenge. We had to aggressively optimize our vLLM configuration and context window to ensure the agents could act without choking the GPU.
What we learned
We discovered that for time-sensitive orbital operations, latency is a safety risk. We learned how to optimize model throughput using vLLM to ensure that our Planning Agent could evaluate multiple maneuver candidates in seconds, which would be impossible with the round-trip latency of a cloud API. We learned that in the NVIDIA ecosystem, balancing between model size and hardware limits is really important. We spent a significant amount of time testing different quantizations and parameters to ensure our agents could run in parallel on the ASUS GX10 without hitting VRAM bottlenecks.
What's next
βοΈ Onboard to operator-grade data sources: Integrate services that provide richer conjunction products (e.g., true CDMs, higher-fidelity screening outputs, and more frequent updates) so Detourβs agents can rank threats more accurately, reduce false alarms, and recommend safer maneuvers with clearer tradeoffs. Deploying to a real satellite :)
Detour β On-Board AI Agents Saving Satellites from Orbital Debris
TreeHacks 2026 | NVIDIA Edge AI Track β Honourable Mention Winner
Devpost https://devpost.com/software/detour-64kpds?ref_content=user-portfolio&ref_feature=in_progress
Detour is an autonomous collision-avoidance system that runs on-board a satellite using NVIDIA's Nemotron LLM on the ASUS Ascent GX10 (Grace Blackwell). A multi-agent LangGraph pipeline detects debris threats, assesses risk, plans maneuvers, validates safety constraints, and executes avoidance burns β all locally with zero ground-station latency.
Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ASUS Ascent GX10 (On-Board) β
β β
β βββββββββββ ββββββββββββ ββββββββββββ ββββββββββ ββββββββ β
β β SCOUT ββ β ANALYST ββ β PLANNER ββ β SAFETY ββ β OPS β β
β β scan & β β risk & β β maneuver β β verify β βBRIEF β β
β β triage β β refine β β design β β& exec β β β β
β βββββββββββ ββββββββββββ ββββββββββββ ββββββββββ ββββββββ β
β β β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Physics Engine (deterministic) β β
β β screening Β· risk Β· CW dynamics Β· RK4 Β· SGP4 Β· Chan Pc β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Satellite Model (fuel, power, dynamics) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Nemotron 3 Nano 30B (NVFP4) via vLLM β local inference β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Components
| Component | Path | Description |
|---|---|---|
| Agent Pipeline | agents/ | LangGraph 5-agent pipeline with tool-calling |
| Physics Engine | engine/ | RK4 solver, J2 perturbation, CW dynamics, Chan collision probability |
| Satellite Model | engine/models/active_satellite.py | Full orbital dynamics with resource management (fuel, power, battery) |
| Tool Wrappers | agents/tools.py | 11 LangChain tools wrapping the physics engine |
| API | api/ | FastAPI server with agent, catalog, conjunction, and satellite endpoints |
| Frontend | frontend/ | Next.js + React Three Fiber 3D globe with live satellite tracking |
| Ascent GX10 Setup | scripts/setup_gx10.sh | One-command setup for the ASUS Ascent GX10 |
Agent Pipeline
| Agent | Role | Tools |
|---|---|---|
| Scout | Scan catalog for upcoming conjunctions, triage by severity | scan_conjunctions, scan_demo_conjunctions |
| Analyst | Deep risk assessment β Chan probability, high-fidelity TCA refinement | assess_risk, refine_conjunction, propagate_orbit |
| Planner | Design avoidance maneuvers considering satellite resources | propose_avoidance_maneuvers, simulate_maneuver, get_satellite_status, check_maneuver_feasibility |
| Safety | Validate constraints, approve or reject, execute approved burns | check_maneuver_constraints, get_satellite_status, check_maneuver_feasibility, execute_maneuver_on_satellite |
| Ops Brief | Generate human-readable summary for operators | (synthesis only) |
Quick Start
1. Backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn api.app:app --reload --port 8000
2. Frontend
cd frontend
npm install
npm run dev # localhost:3000
3. Agent System (with Ascent GX10)
# Start Nemotron on the Ascent GX10
chmod +x scripts/setup_gx10.sh
./scripts/setup_gx10.sh
# Run agent pipeline
python -m agents.run "Scan for conjunction threats to satellite 25544 in the next 48 hours" --demo
4. Agent System (without GPU β dev mode)
# Set OPENAI fallback in .env
NEMOTRON_BASE_URL=https://api.openai.com/v1
NEMOTRON_API_KEY=sk-...
NEMOTRON_MODEL=gpt-4o-mini
python -m agents.run "Scan for threats" --demo
Model
nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4 β 4-bit quantized (NVFP4) for fast edge inference on the Ascent GX10. ~15GB model weight footprint, leaving ample memory for KV cache and concurrent requests on the 128GB unified memory Grace Blackwell SoC.
Served locally via NGC vLLM container with tool-calling (--enable-auto-tool-choice --tool-call-parser hermes --enable-chunked-prefill).
Why Edge AI?
| Ground Station | On-Board (Detour) |
|---|---|
| 5-15 min communication delay | < 1 sec decision |
| Limited pass windows | 24/7 monitoring |
| Single point of failure | Autonomous operation |
| Manual operator in the loop | Agent-validated decisions |
In LEO, a debris collision can happen in minutes. You can't wait for the next ground station pass.
Team
- Justyna β Frontend, 3D Visualization, UI/UX
- Ethan β ASUS Ascent GX10 Setup, Simulation Logic
- Adit β Satellite Data Feed, Simulation Logic
- Keanu β Ascent GX10 vLLM Setup, LangChain NVIDIA Nemotron Agent System
Analysis
View
Metric
- 33
- 24
- 12
- 8
- 6
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- LangChainIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- VercelClaimed
8 of 9 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeCommits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
409 KB
Source files
89
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
keanucz/detour
103 files Β· 6.4 MB Β· @ 20879f8
Structure
Interface
17 files Β· 17%Screens, components and styles rendered to the user.
API & routing
21 files Β· 20%Request entry points: routes, handlers and controllers.
Application logic
33 files Β· 32%Domain rules, services and shared utilities.
+1 moreData & schema
4 files Β· 4%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here β open the file browser to check anything the diagram implies.
Languages
- TypeScript48%
- Python44%
- Markdown4%
- Shell3%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm Β· 19- @react-three/drei
- @react-three/fiber
- class-variance-authority
- clsx
- lucide-react
- next
- react
- react-dom
- satellite.js
- tailwind-merge
- three
- +8 more
requirements.txt
pypi Β· 7- fastapi
- langchain
- langchain-core
- langchain-openai
- langgraph
- numpy
- uvicorn[standard]
Declared in the repositoryβs manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This projectβs features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.