An interactive app that simulates the OSI model and shows how messages travel through all seven layers—from application to physical
Features • Installation • Usage • Contributing • Support
- About
- Features
- Technology Stack
- Prerequisites
- Installation
- Running the Application
- Building for Production
- Usage Guide
- Project Structure
- Configuration
- Contributing
- Code of Conduct
- Support
- Roadmap
- License
- Acknowledgments
- About Roboticela
OSI Model Simulator is a modern, cross-platform application that helps you understand how data travels through the seven layers of the OSI (Open Systems Interconnection) model. Built with Tauri, React, and TypeScript, it provides an interactive, step-by-step simulation of message encapsulation and de-encapsulation across Application, Presentation, Session, Transport, Network, Data Link, and Physical layers.
Whether you're learning networking, teaching the OSI model, or exploring how TCP/IP and data encapsulation work, this simulator offers a clear visual and educational experience.
- ✅ Free and Open Source - Licensed under AGPL-3.0
- ✅ Cross-Platform - Works on Linux, Windows, macOS, and runs in the browser
- ✅ Fast & Lightweight - Built with Tauri and Rust for desktop; Vite for web
- ✅ Interactive Simulation - Step through each layer with detailed data and protocols
- ✅ Modern & Legacy UI - New app layout plus optional legacy version
- ✅ Educational - Learn protocols, headers, and processes at each layer
- ✅ Theme Support - Multiple themes including light, dark, navy, ocean, and more
- ✅ Actively Maintained - Regular updates and community support
- All Seven Layers - Application, Presentation, Session, Transport, Network, Data Link, Physical
- Encapsulation & De-encapsulation - Watch data move down (sending) and up (receiving)
- Protocols & Processes - See which protocols and processes apply at each layer
- TCP Three-Way Handshake - Connection setup visualization at the Transport layer
- Transmission Media - Choose copper cable, optical fiber, or wireless and see timing differences
- Simulation Settings - Message input, animation speed, transmission medium
- Live Visualization - Step-by-step view with layer-by-layer data transformation
- Theme Picker - Multiple themes (Navy, Dark, Light, Sunset, Ocean, Forest, Purple, Midnight)
- Story / How it works - Built-in guidance and about/license modals
- Banner to Legacy - One-click access to the legacy version (dismissible)
- Classic Layout - Full-page layout with animated title and gradient background
- Standalone Simulator - In-depth OSI simulation with manual or auto-step mode
- Banner to Main App - Easy return to the main application
- Dedicated Favicon - LegacyFavicon.svg for the legacy experience
- Responsive Design - Works on different screen sizes
- Smooth Animations - Powered by Framer Motion
- Desktop or Web - Run as Tauri desktop app or in the browser
- React 19 - UI library
- TypeScript 5.9 - Type-safe JavaScript
- TailwindCSS 4 - Utility-first CSS
- Framer Motion 12 - Animations
- React Router 7 - Client-side routing (main app + legacy)
- Lucide React - Icons
- Vite 7 - Build tool
- npm - Package manager
- ESLint - Linting
- TypeScript ESLint - TypeScript linting
Before installing, ensure you have the following:
💡 For detailed installation instructions and complete dependency lists, see INSTALL_DEPENDENCIES.md
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-devsudo dnf check-update
sudo dnf install webkit2gtk4.1-devel \
openssl-devel \
curl \
wget \
file \
libappindicator-gtk3-devel \
librsvg2-develsudo pacman -Syu
sudo pacman -S webkit2gtk \
base-devel \
curl \
wget \
file \
openssl \
appmenu-gtk-module \
gtk3 \
libappindicator-gtk3 \
librsvgxcode-select --install- Install Microsoft Visual Studio C++ Build Tools
- Install WebView2 (usually pre-installed on Windows 10/11)
git clone https://github.com/Roboticela/OSI-Model-Simulator.git
cd OSI-Model-SimulatorUsing npm:
npm installcd src-tauri
cargo build
cd ..Run the Tauri app with hot-reload:
npm run tauri devThis will start the Vite dev server and run the desktop application.
To run the frontend in the browser without Tauri:
npm run devThen open http://localhost:5173 in your browser.
Before building for production, ensure you have:
- All dependencies installed - See INSTALL_DEPENDENCIES.md for detailed platform-specific setup
- Node.js 20+ and npm installed
- Rust and Cargo installed
- Platform-specific build tools (WebKit2GTK for Linux, MSVC for Windows, Xcode for macOS)
To verify your setup:
node --version
npm --version
rustc --version
cargo --versionBuild for your current platform:
npm run build
npm run tauri buildOr use the combined script:
npm run build:desktopThis will build the frontend, compile the Rust backend, bundle with Tauri, and generate platform-specific installers.
Desktop builds:
src-tauri/target/release/ # Executables
src-tauri/target/release/bundle/ # Installers
npm run tauri build -- --debugnpm run tauri buildBuilds can generate SHA256 checksums for integrity verification:
npm run build:desktop # Build and generate checksums
npm run checksums # Generate checksums only
npm run verify # Verify checksumsFor detailed code signing and notarization, see SIGNING.md.
Frontend build fails:
rm -rf node_modules dist
npm install
npm run buildRust compilation errors:
rustup update
cd src-tauri && cargo clean && cd ..Missing dependencies: See INSTALL_DEPENDENCIES.md.
Before releasing:
- Update version in
package.jsonandsrc-tauri/tauri.conf.json - Test in development mode
- Run
npm run tauri buildfor target platforms - Verify checksums if applicable
- Test installers on target platforms
- Run
npm auditandcargo audit
- Launch the App - Run
npm run tauri devornpm run devand open the app. - Main App - Use the simulation settings (left) to enter a message and choose options.
- Run Simulation - Start sending to see data move through the seven OSI layers step by step.
- Navigate - Use the visualization (right) to step forward/back and see encapsulation and de-encapsulation.
- Legacy Version - Use the top banner link or header menu to open the legacy simulator, then use its banner to return to the main app.
- Message - Enter the text you want to “send” through the OSI layers.
- Transmission medium - Affects how the physical layer is visualized and timing.
- Animation speed - Control how fast steps advance.
- Steps - Move through each layer on the sender side, then across the medium, then back up on the receiver side.
- Manual or auto-step - Advance with buttons/arrow keys or let it auto-step.
- Step delay - In auto mode, set the delay between steps.
- Detailed view - Toggle between simplified and detailed layer information.
- Transmission media - Copper cable, optical fiber, or wireless with different speeds and visuals.
- / - Main application (simulation settings + visualization).
- /legacy - Legacy full-page OSI simulator.
OSI-Model-Simulator/
│
├── src/ # React frontend source
│ ├── components/ # React components
│ │ ├── AppHeader.tsx # Header with theme and menu
│ │ ├── OSIInputForm.tsx # Simulation settings form
│ │ ├── OSIVisualization.tsx # Main OSI layer visualization
│ │ ├── ThemeScript.tsx # Theme initialization
│ │ ├── AboutModal.tsx # About modal
│ │ ├── LicenseModal.tsx # License modal
│ │ ├── StoryModal.tsx # How it works / story
│ │ ├── SignalVisualization.tsx
│ │ ├── ui/ # UI primitives (button, dropdown)
│ │ └── lagacy/ # Legacy version components
│ │ ├── OSISimulator.tsx # Legacy simulator
│ │ ├── AnimatedTitle.tsx
│ │ ├── ThemeToggle.tsx
│ │ ├── OSILayer.tsx
│ │ ├── TransmissionMedia.tsx
│ │ └── ...
│ │
│ ├── contexts/
│ │ ├── OSISimulatorContext.tsx # Simulation state
│ │ ├── ThemeContext.tsx # Theme state
│ │ └── HeaderVisibilityContext.tsx
│ │
│ ├── pages/
│ │ └── LegacyPage.tsx # Legacy route page
│ │
│ ├── lib/ # Utilities
│ │ ├── osiSimulation.ts # OSI simulation logic
│ │ ├── tauri.ts # Tauri helpers
│ │ └── utils.ts
│ │
│ ├── utils/lagacy/ # Legacy utilities
│ │ ├── osiUtils.ts
│ │ └── themeUtils.ts
│ │
│ ├── types/
│ │ └── osi.ts # OSI-related types
│ │
│ ├── App.tsx # Main app component
│ ├── App.css # Global styles
│ └── main.tsx # Entry point + router
│
├── src-tauri/ # Tauri/Rust backend
│ ├── src/
│ │ ├── main.rs
│ │ └── lib.rs
│ ├── icons/ # App icons
│ ├── capabilities/
│ ├── Cargo.toml
│ ├── build.rs
│ └── tauri.conf.json
│
├── public/ # Public static assets
│ ├── Favicon.svg
│ └── LagacyFavicon.svg
│
├── index.html
├── package.json
├── tsconfig.json
├── vite.config.ts
├── LICENSE # AGPL-3.0
├── INSTALL_DEPENDENCIES.md
├── SIGNING.md
└── README.md
The src-tauri/tauri.conf.json file contains Tauri settings: app identifier, version, window size and title, capabilities, and bundle options. Modify it to change desktop app behavior.
No environment variables are required for normal use. Configuration is done through the UI.
We welcome contributions! Whether it's bug fixes, features, docs, or feedback, every bit helps.
- Report Bugs - Open an issue with steps to reproduce and environment details.
- Suggest Features - Share ideas for new features or improvements.
- Write Code - Submit pull requests for bugs or features.
- Improve Documentation - Help keep the README and docs clear and up to date.
- Share the Project - Star the repo and tell others.
-
Fork the Repository
git clone https://github.com/YOUR-USERNAME/OSI-Model-Simulator.git cd OSI-Model-Simulator -
Create a Branch
git checkout -b feature/your-feature # or git checkout -b fix/bug-description -
Make Changes - Follow existing style, add tests where relevant, and test locally.
-
Commit
git add . git commit -m "Add: brief description"
Prefixes:
Add:Fix:Update:Docs:Style:Refactor:Test:Chore: -
Push and Open a PR
git push origin feature/your-feature
Then open a Pull Request on GitHub with a clear description and any related issues.
- Frontend - Functional components, TypeScript, TailwindCSS, React best practices.
- Rust -
cargo fmt,cargo clippy, clear error handling, doc comments for public APIs.
We are committed to providing a welcoming and inclusive environment for all contributors, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
Positive behavior: Respectful and inclusive communication, patience with newcomers, accepting constructive criticism, focusing on the community’s best interest, empathy.
Unacceptable behavior: Harassment, trolling, derogatory comments, personal or political attacks, publishing others’ private information, or any conduct inappropriate in a professional setting.
Reports of unacceptable behavior will be reviewed and addressed by the maintainers. Maintainers may remove, edit, or reject comments, commits, code, and other contributions that violate this Code of Conduct.
For bugs, feature requests, or technical questions:
When reporting a bug, please include:
- OS and version
- App version (or commit)
- Steps to reproduce
- Expected vs actual behavior
- Screenshots or error messages if helpful
- 🐙 GitHub: Roboticela/OSI-Model-Simulator
- ⭐ Star the repo to show your support.
Q: Is this free to use?
A: Yes. It’s open-source under the AGPL-3.0 license.
Q: Can I use it commercially?
A: Yes, subject to AGPL-3.0. If you distribute or run a modified version over a network, you must make the source available under AGPL-3.0.
Q: Web only or desktop too?
A: Both. Use npm run dev for web or npm run tauri dev / built installer for desktop.
Q: What’s the difference between main app and legacy?
A: Main app is the new layout (settings + visualization). Legacy is the classic full-page simulator with its own UI and flow.
Q: How do I report a security issue?
A: Open a GitHub issue or contact the maintainers directly.
- Export / Share - Export simulation state or shareable links
- More Protocols - Deeper protocol examples at each layer
- Quizzes / Exercises - Simple quizzes to reinforce OSI concepts
- i18n - Multiple languages for the UI
- Accessibility - Enhanced keyboard and screen reader support
v0.1.0 (Current)
- Main app: simulation settings + OSI visualization
- Legacy route with full-page simulator
- Multiple themes
- Tauri desktop support
- React Router for main and legacy
See Releases for the full changelog.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
✅ You CAN:
- Use the software for any purpose
- Study, modify, and distribute it
- Use it commercially (under the license terms)
- Disclose source when distributing
- Include the license and copyright notice
- State changes made
- License modifications under AGPL-3.0
- If you run a modified version over a network, provide source access to users
❌ You CANNOT:
- Hold the authors liable for damages
- Use the authors’ names for endorsement without permission
Full License Text: See the LICENSE file.
Thanks to the open-source projects and communities that make this possible:
- TailwindCSS - Styling
- Framer Motion - Animations
- React Router - Routing
- Lucide React - Icons
- TypeScript - Type safety
Roboticela builds high-quality, open-source software for developers and learners.
To create accessible, privacy-conscious software that supports learning and open collaboration.
OSI Model Simulator is developed and maintained by Roboticela. We focus on:
- 🔓 Open Source - Transparent, community-friendly development
- 🔒 Privacy - No tracking of users beyond optional analytics you can control
- 🚀 Modern Stack - Tauri, React, TypeScript
- 🌍 Education - Clear explanation of the OSI model and networking concepts
- 🐙 GitHub: github.com/Roboticela
- 📧 Email: contact@roboticela.com
- 🔗 Repository: github.com/Roboticela/OSI-Model-Simulator
- ⭐ Star our repositories
- 🐛 Report bugs and suggest features
- 🤝 Contribute code or documentation
- 📣 Share the project with others
Thanks for using OSI Model Simulator. We hope it helps you understand the OSI model and how data moves through the internet.
Built with ❤️ by Roboticela
© 2025 Roboticela. Licensed under AGPL-3.0.
⭐ If you find this project useful, please consider giving it a star on GitHub! ⭐