The world's first open-source web dashboard for NVIDIA Sionna 6G wireless simulation results.
Turn raw Sionna output into publication-ready charts, share results via a single URL, and collaborate with researchers worldwide — all from your browser.
The problem: NVIDIA Sionna is the most powerful open-source 6G simulation library (200,000+ downloads), but every researcher has to write Python scripts, manually generate matplotlib charts, and email CSV files to share results. There is no visual, collaborative, web-based way to work with Sionna simulations.
The solution: Sionna Visualizer wraps Sionna in a full-stack web dashboard. Run AWGN, beam pattern, path loss, channel capacity, and channel model simulations from a browser UI. See results as interactive Chart.js charts. Export to PNG/CSV/JSON for publications. Share any simulation via a single public URL. Every simulation is saved permanently with full performance metadata for reproducibility.
Who it's for: 6G researchers, wireless communications students, telecom engineers, and anyone working with NVIDIA Sionna who wants a faster, more visual workflow.
What makes it unique:
- Publication Pipeline — IEEE/Nature-ready figure export, LaTeX parameter tables, reproducibility packages
- Platform Neutrality — CDL/TDL channel models (3GPP standard), SigMF signal import, multi-simulator comparison
- AI-Powered Analysis — Natural language simulation with Claude AI, BER anomaly detection, THz atmospheric modeling
| Layer | URL |
|---|---|
| Frontend | sionna-visualizer.vercel.app |
| Backend API | sionna-backend.onrender.com/api |
| API Docs | sionna-backend.onrender.com/api-docs |
| Health Check | sionna-backend.onrender.com/actuator/health |
| Feature | Description |
|---|---|
| AWGN BER Simulation | BPSK / QPSK / 16QAM / 64QAM — theoretical + Monte Carlo curves |
| Beam Pattern Visualization | ULA antenna polar chart — 8/16/32/64 antennas, 28/39/60/77 GHz |
| Modulation Comparison | All 4 modulations on one chart with crossover analysis |
| Channel Capacity | Shannon theorem C = B × log₂(1 + SNR), interactive multi-bandwidth |
| Path Loss Breakdown | Per-ray FSPL — bar chart + scatter + delay chart + data table |
| Simulation Comparison | Select 2 saved runs, overlay charts, compute winner |
| Time Estimate | Complexity label (Fast/Medium/Slow/Heavy) + tips before running |
| Custom Colormaps | 7 palettes — Viridis, Grayscale, colorblind-safe Publication |
| Ray Direction Analysis | Azimuth/elevation ray visualization for MIMO channels |
| UE Trajectory | Mobile user equipment path visualization with handover analysis |
| SINR Beamforming | Steering angle optimization with interference mapping |
| Measurement Overlay | Calibration overlay with real-world measurement comparison |
| Feature | Description |
|---|---|
| JWT Authentication | Login + register + protected routes via Spring Security |
| Simulation History | All past runs searchable, viewable, re-shareable |
| Shareable Public Links | One URL per simulation — no login needed for viewer |
| Performance Metadata | Duration (ms), memory (MB), CPU/GPU, Sionna version per run |
| Public REST API | 7 endpoints, API key system, 100 req/day per key |
| PNG / CSV / JSON Export | Export any chart or dataset in 3 formats |
| Bulk Export | Export all simulations from history in one action |
| API Docs Page | /api-docs with curl + Python examples |
| Rate Limiting | 10 simulations/min per IP via Bucket4j |
| Circuit Breaker | Python bridge failure handled gracefully via Resilience4j |
| Feature | Description |
|---|---|
| IEEE/Nature Figure Wizard | Export charts with journal-specific formatting, DPI, and font requirements |
| LaTeX Parameter Table Generator | Auto-generate LaTeX tables from simulation parameters for papers |
| Reproducibility Package | Download a complete ZIP with data, config, and scripts to reproduce results |
| Feature | Description |
|---|---|
| CDL/TDL Channel Models | 3GPP-standard CDL-A through CDL-E and TDL channel model simulations |
| SigMF Signal Import | Import and analyze SigMF-compliant signal recordings |
| Multi-Simulator Comparison | Upload CSV results from MATLAB/ns-3/other simulators, compare with Sionna |
| Feature | Description |
|---|---|
| Public Results Gallery | Browse, search, and fork community-published simulation results |
| Experiment Tagging + Search | Organize simulations with tags, full-text search, batch operations |
| Collaborative Team Workspace | Create teams, invite members, share simulations, comment & annotate |
| Feature | Description |
|---|---|
| TTDF Progress Dashboard | Telecom Technology Development Fund milestone tracking with KPIs |
| Bharat 6G Alliance Reporting | Organization registration, PoC management, quarterly compliance reports |
| Feature | Description |
|---|---|
| Natural Language Simulation | Describe a simulation in plain English → Claude AI converts to parameters → runs it |
| AI Anomaly Detection on BER | Physics-based + AI analysis of BER curves to detect errors automatically |
| THz Atmospheric Sliders | ITU-R P.676/P.838 physics model for THz link budget with interactive sliders |
Install the SDK and visualize any simulation with one line of code:
pip install sionna-visualizerimport sionna_visualizer as sv
sv.init(api_key="your-api-key")
url = sv.track_ber(
snr_range=list(range(-10, 31)),
ber_values=[...your simulation output...],
modulation="QPSK",
frequency_ghz=28.0,
title="My 28 GHz Simulation"
)
print(f"View results: {url}")Get your free API key at: sionna-visualizer.vercel.app/api-docs
┌──────────────────────────────────────────────────────────────┐
│ Browser │
│ Angular 17 + Angular Material │
│ Chart.js · D3.js · ng2-charts · JWT Auth │
└──────────────────────┬────────────────────────────────────────┘
│ HTTP/REST
┌──────────────────────▼────────────────────────────────────────┐
│ Java Spring Boot 3 │
│ REST API · Spring Security · JWT · JPA │
│ SimulationService · Cache · Circuit Breaker · Actuator │
│ Claude AI · FigureExport · TTDF · Gallery · Workspace │
└───────────┬───────────────────────────┬───────────────────────┘
│ JPA/Hibernate │ HTTP
┌───────────▼───────────┐ ┌───────────▼───────────────────────┐
│ PostgreSQL │ │ Python 3.10 + FastAPI │
│ 19 Flyway Migrations │ │ NVIDIA Sionna SDK Bridge │
│ All Simulation Data │ │ AWGN · Beam · PathLoss · CDL/TDL │
│ Users · API Keys │ │ THz Physics · SigMF · Colormaps │
└────────────────────────┘ └───────────────────────────────────┘
| Layer | Technology |
|---|---|
| Frontend | Angular 17, Angular Material, Chart.js, D3.js, ng2-charts |
| Backend | Java 17, Spring Boot 3, Spring Security, JWT, Hibernate, Flyway |
| Bridge | Python 3.10, FastAPI, NVIDIA Sionna SDK, NumPy, SciPy |
| AI | Anthropic Claude API (natural language + anomaly detection) |
| Database | Supabase (PostgreSQL) with 19 Flyway migrations |
| Deployment | Render (backend + Python), Supabase (database), Vercel (frontend) |
| SDK | Python package, PyPI |
| DevOps | Docker, docker-compose, GitHub auto-deploy |
- Node.js 18+
- Java 17+
- Python 3.10+
- PostgreSQL 14+
- Docker (optional, recommended)
git clone https://github.com/Vinu2111/sionna-visualizer.git
cd sionna-visualizer
cp .env.example .env
# Edit .env with your actual values
docker-compose upOpen http://localhost:4200. All 4 services start automatically.
# Create PostgreSQL database
createdb sionna_visualizer
# Or via psql:
psql -U postgres -c "CREATE DATABASE sionna_visualizer;"cd backend
# Set environment variables (see Environment Variables section)
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/sionna_visualizer
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=your_password
export JWT_SECRET=$(openssl rand -hex 32)
./mvnw spring-boot:runBackend runs at http://localhost:8080
cd python-bridge
pip install -r requirements.txt
uvicorn main:app --port 8001Bridge runs at http://localhost:8001
cd frontend
npm install
ng serveFrontend runs at http://localhost:4200
Full documentation available at /api-docs
Run an AWGN simulation:
curl -X POST https://sionna-backend.onrender.com/api/public/simulate \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{"modulationType": "QPSK", "snrMin": 0, "snrMax": 20, "snrSteps": 21}'Get simulation estimate (no API key needed):
curl -X POST https://sionna-backend.onrender.com/api/simulations/estimate \
-H "Content-Type: application/json" \
-d '{"simulation_type": "AWGN", "parameters": {"modulation": "QPSK", "snr_steps": 21}}'List available colormaps (no API key needed):
curl https://sionna-backend.onrender.com/api/simulations/colormapsPython SDK example:
import requests
response = requests.post(
"https://sionna-backend.onrender.com/api/public/simulate",
headers={"X-API-Key": "your-api-key"},
json={"modulationType": "QPSK", "snrMin": 0, "snrMax": 20, "snrSteps": 21}
)
result = response.json()
print(f"BER at 10 dB: {result['simulatedBer'][10]:.2e}")| Variable | Description | Example |
|---|---|---|
SUPABASE_URL |
Supabase project URL | https://xyz.supabase.co |
SPRING_DATASOURCE_URL |
PostgreSQL JDBC connection string | jdbc:postgresql://aws-0-eu-central-1.pooler.supabase.com:6543/postgres |
SPRING_DATASOURCE_USERNAME |
Database username | postgres.your_project |
SPRING_DATASOURCE_PASSWORD |
Database password | your_secure_password |
JWT_SECRET |
Secret key for JWT signing (64+ chars) | openssl rand -hex 32 |
JWT_EXPIRATION |
JWT token expiry in milliseconds | 86400000 (24 hours) |
PYTHON_BRIDGE_URL |
FastAPI bridge URL | https://sionna-python.onrender.com/simulate/demo |
ANTHROPIC_API_KEY |
Claude AI API key for NL simulation | sk-ant-... |
CORS_ALLOWED_ORIGIN |
Frontend URL for CORS | https://sionna-visualizer.vercel.app |
See .env.example for the complete template.
- Create a new project on Supabase
- Get your connection details from Database Settings > URI
- Flyway migrations will automatically run when the Spring Boot backend starts
- Create a new Web Service at Render
- Connect your GitHub repo → Render auto-detects Java/Maven
- Set environment variables in Render dashboard:
SPRING_DATASOURCE_URL— from SupabaseSPRING_DATASOURCE_USERNAME— from SupabaseSPRING_DATASOURCE_PASSWORD— from SupabaseSUPABASE_URL— from Supabase project settingsJWT_SECRET— generate a strong random stringPYTHON_BRIDGE_URL— your Python bridge Render URLANTHROPIC_API_KEY— your Claude API keyCORS_ALLOWED_ORIGIN— your Vercel frontend URL
- Deploy — Render builds and runs
./mvnw spring-boot:run
- Import repo at vercel.com
- Set Framework Preset to Angular
- Set Output Directory to
dist/sionna-visualizer/browser - Deploy — Vercel auto-builds on every push
vercel.json is already configured for SPA routing.
- Create a new Web Service in Render
- Point to the
python-bridge/directory - Render auto-detects the
Dockerfile - Deploy
sionna-visualizer/
├── frontend/ # Angular 17 application
│ ├── src/
│ │ ├── app/
│ │ │ ├── components/ # Reusable UI components
│ │ │ ├── pages/ # Route-level page components
│ │ │ ├── services/ # HTTP services and state
│ │ │ ├── models/ # TypeScript interfaces
│ │ │ ├── guards/ # Route guards (auth)
│ │ │ └── interceptors/ # HTTP interceptors (JWT)
│ │ └── environments/ # Dev/prod API URLs
│ ├── angular.json
│ └── package.json
│
├── backend/ # Spring Boot 3 application
│ ├── src/main/java/com/sionnavisualizer/
│ │ ├── config/ # Security, CORS config
│ │ ├── controller/ # REST API controllers
│ │ ├── dto/ # Request/response DTOs
│ │ ├── model/ # JPA entity models
│ │ ├── repository/ # Spring Data JPA repos
│ │ ├── service/ # Business logic services
│ │ ├── filter/ # JWT, rate limiting, security
│ │ ├── exception/ # Global exception handlers
│ │ └── util/ # JWT utilities
│ └── src/main/resources/
│ ├── application.yml # Spring config (env vars)
│ └── db/migration/ # 19 Flyway SQL migrations
│
├── python-bridge/ # FastAPI simulation bridge
│ ├── main.py # FastAPI app + all routes
│ ├── models.py # Pydantic request/response models
│ ├── sionna_runner.py # Core Sionna simulation engine
│ ├── beam_pattern.py # ULA beam pattern calculations
│ ├── channel_capacity.py # Shannon capacity calculations
│ ├── channel_model_simulator.py # CDL/TDL 3GPP models
│ ├── thz_atmospheric_calculator.py # ITU-R P.676/P.838 physics
│ ├── sigmf_analyzer.py # SigMF signal analysis
│ ├── requirements.txt
│ └── Dockerfile
│
├── docker-compose.yml # Full-stack local development
├── .env.example # Environment variable template
└── README.md
We welcome contributions! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feat/amazing-feature - Make your changes
- Commit with conventional commits:
git commit -m "feat: add amazing feature" - Push to your branch:
git push origin feat/amazing-feature - Open a Pull Request
feat:— new featurefix:— bug fixdocs:— documentationchore:— maintenancerefactor:— code improvementperf:— performance improvement
Vinayak Gote — Java Backend Developer at Wipro, Pune, India
Computer Engineering, SPPU 2024 · CGPA 9.30 · 2nd Rank in B.E.
NVIDIA AI Aerial / 6G Developer Program Member · AWS Certified Cloud Practitioner
| 🐙 GitHub | github.com/Vinu2111 |
| linkedin.com/in/vinayakgote | |
| 🌐 Blog | vinayak6g.hashnode.dev |
| @gote_vinayak |
This project is licensed under the MIT License.
- NVIDIA Sionna Team — for building the world's best open-source 6G simulation library
- Merlin Nimier-David — Sionna core maintainer, for guidance and support
- NVIDIA AI Aerial Developer Program — for the 6G developer community
- Anthropic — for Claude AI powering natural language simulation
Built with NVIDIA Sionna · Deployed on Render + Supabase + Vercel · 61 features + F15 SDK · 2026