⚛️ EmION — Research-Grade ION-DTN Simulation
Built with 💻 by Team DOMinators
EmION is an authentic, research-grade Delay-Tolerant Networking (DTN) simulation framework. Unlike other simulators, EmION uses the real NASA-JPL ION-DTN C-engine and Contact Graph Routing (CGR) for 100% protocol authenticity — with a state-of-the-art visual dashboard and per-node ML module attachment.
✨ Key Features
| Feature | Description |
|---|---|
| Real ION-DTN | Uses the actual NASA-JPL ION C-engine — not a simulator |
| BPv7 + CGR | Full Bundle Protocol v7 with Contact Graph Routing |
| WLAN Mobility | Spatial distance-based wireless link management |
| XML Scenario Import | Load CORE GUI .xml scenarios directly |
| Scenario Briefing | Plain-English mission summary from any loaded scenario |
| Per-Node ML Modules | Attach anomaly detectors, BPSec signers to specific nodes |
| Auto-Feed Pipeline | Nodes automatically stream telemetry to attached modules |
| Visual Dashboard | Real-time canvas with node LEDs, bundle animation, HUD overlays |
| CFDP Support | Authentic file delivery over DTN |
🌍 Platform Support
| Platform | Support | Notes |
|---|---|---|
| Linux (Ubuntu/Debian) | ✅ Native | Recommended. Use install.sh |
| Windows (WSL2) | ✅ Supported | Ubuntu 22.04 on WSL2 |
| Docker | ✅ Containerized | Zero local setup |
| Windows (Native) | ❌ | Use WSL2 or Docker |
🚀 Installation
From PyPI
pip install "emion[dashboard]"
From Source
git clone https://github.com/info-gallary/emion.git
cd emion
pip install -e ".[dashboard]"
For Testing
pip install -e ".[dashboard,test]"
Full Environment (Linux/WSL)
chmod +x install.sh && ./install.sh
🛰️ Usage
Launch the Dashboard
emion dashboard
Open http://localhost:8420 in your browser.
CLI
emion info # ION system status
emion dashboard # Start the visual dashboard
Run Tests
pytest -q
For a reviewer-friendly quick pass:
pytest -q tests/test_scenario_import.py tests/test_dashboard_scenarios.py
Run Automated Experiments
python3 scripts/run_experiments.py \
--config examples/experiments/scalability_matrix.json \
--output-dir artifacts/experiments_matrix
This writes per-scenario CSVs plus aggregate SVG plots under artifacts/experiments_matrix/.
📖 Documentation
- Quickstart
- Architecture Overview
- Dashboard API Reference
- Custom XML Scenario Format
- Troubleshooting
- Reproducibility Guide
🧪 XML Scenario Import
Upload any CORE .xml scenario directly in the dashboard:
- Open Scenario Engine in the sidebar
- Drag-and-drop your
.xmlfile (or click Browse Files) - A Scenario Briefing appears in the telemetry panel with a plain-English summary
- Click ▶ Start to begin the simulation
See examples/ion_mars/ for a sample scenario.
For a reproducibility-oriented validation workflow, see docs/reproducibility.md.
Experiment configs are available in examples/experiments/, including:
scalability_matrix.jsonrobustness_matrix.jsonml_matrix.jsonmars_actual_schedule.json
📚 Citation
Citation metadata is available in CITATION.cff.
🔌 Per-Node ML Modules
Attach ML inference modules (anomaly detectors, security analyzers) to specific nodes. The node automatically feeds all telemetry and bundle data to the attached module.
Quick Start
- Start your module (a FastAPI server with
/healthand/analyzeendpoints) - In the dashboard sidebar → ML MODULES
- Select a node → pick module type → enter the API URL → Attach
- Watch the canvas LED indicators (🟢/🟡/🔴) change in real-time
Module API Contract
Your module must expose:
GET /health→{"status": "ok"}POST /analyze→ receives{"payload": ..., "metadata": {...}}, returns{"is_anomaly": bool, "score": float}
See examples/anomaly_detector/ for a reference implementation.
🐳 Docker
docker build -t emion .
docker run -p 8420:8420 emion
For a containerized experiment run:
docker compose run --rm --profile experiments runner
📦 Project Structure
emion/
├── emion/ # Core Python package (BPv7, CGR, Dashboard)
│ ├── core/ # ION engine, scenarios, WLAN mobility
│ ├── dashboard/ # FastAPI server + static UI
│ ├── plugins/ # Module base classes (APIPlugin)
│ └── pyion/ # C-extension bindings for ION
├── examples/ # User-facing research examples
│ ├── ion_mars/ # CORE XML scenario (5 WLAN nodes)
│ ├── anomaly_detector/ # Sample ML inference module
│ └── core_services/ # CORE integration scripts
├── scripts/ # Maintenance & developer utilities
├── docs/ # Coding guide & usage notebook
├── tests/ # Test suite
├── Dockerfile # Self-contained build
├── pyproject.toml # Package config (v1.0)
├── LICENSE # MIT
└── CONTRIBUTING.md # How to contribute
🤝 Contributing
See CONTRIBUTING.md for guidelines.
📜 License
MIT License — see LICENSE.
Authentic. Professional. Space-Ready. ⚛️
Built by Team DOMinators using the real NASA-JPL ION-DTN engine.
Metadata
Release files for emion 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| emion-1.0.0.tar.gz | 106.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| emion-1.0.0-cp310-cp310-manylinux_2_34_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.34+ x86-64 | Details |
Total release size: 1.8 MB
Release files / emion-1.0.0.tar.gz
| Download URL | emion-1.0.0.tar.gz |
|---|---|
| Size | 106.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
26cdd28dd7f9913efecb522ac09273dc71649b505c47516694d63686aa26e973
|
|
BLAKE2b-256 checksum How to use checksums |
25c72de473d4501bf6bcff9ba03d030f0c2528e71335d94d326362b4cd776bd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / emion-1.0.0-cp310-cp310-manylinux_2_34_x86_64.whl
| Download URL | emion-1.0.0-cp310-cp310-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
fbf21b9852a98c9777299aaab299dd65a7d3e92a86f5d29c3aa17cce591fc6cd
|
|
BLAKE2b-256 checksum How to use checksums |
1a16d8b8600cc91d1802e596597783c5491c252e9c24d216c0d0a738154a4914
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Security for emion 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.