Skip to main content

⚛️ 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.

License: MIT Python 3.8+


✨ 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


🧪 XML Scenario Import

Upload any CORE .xml scenario directly in the dashboard:

  1. Open Scenario Engine in the sidebar
  2. Drag-and-drop your .xml file (or click Browse Files)
  3. A Scenario Briefing appears in the telemetry panel with a plain-English summary
  4. 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.json
  • robustness_matrix.json
  • ml_matrix.json
  • mars_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

  1. Start your module (a FastAPI server with /health and /analyze endpoints)
  2. In the dashboard sidebar → ML MODULES
  3. Select a node → pick module type → enter the API URL → Attach
  4. 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)

Source distribution for emion 1.0.0
File Size Uploaded Provenance
emion-1.0.0.tar.gz 106.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for emion 1.0.0
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page