Run eSim anywhere using Docker - No installation required!
Download Launcher • Quick Start • Troubleshooting
This project provides a Docker-based solution to run eSim (Electronic Circuit Simulation) on any operating system. eSim is developed by FOSSEE, IIT Bombay and integrates KiCad, Ngspice, and Python for circuit design and simulation.
What's included:
- KiCad for schematic design
- Ngspice for SPICE simulation
- GAW3 analog waveform viewer
- All eSim libraries pre-configured
Download Docker Desktop and make sure it's running.
Go to Releases and download:
- Windows:
eSim-Launcher-Windows.exe - Linux:
eSim-Launcher-Linux - macOS:
eSim-Launcher-macOS
Windows: Double-click the .exe file.
Linux: Open terminal and run:
chmod +x eSim-Launcher-Linux
./eSim-Launcher-LinuxmacOS: Open terminal and run:
chmod +x eSim-Launcher-macOS
./eSim-Launcher-macOSDownload Docker Desktop and make sure it's running.
Download and installPython3.
- Download
Dockerfile. Note that theDockerfileshould be without extension. If theDockerfiledownloads with extension rename the file and remove the extension. - Download
run_esim_docker.py.
Make sure docker is already running in the background. Windows: Open terminal and run:
python3 run_esim_docker.py
Linux: Open terminal and run:
chmod +x run_esim_docker.py
python3 run_esim_docker.pymacOS: Open terminal and run:
chmod +x run_esim_docker.py
python3 run_esim_docker.pyThe launcher offers two display modes:
| Mode | Best For | How it Works |
|---|---|---|
| VNC | Windows, macOS | Opens eSim in your browser. Works everywhere, no setup needed. |
| X11 | Linux | Opens eSim in a native window. Best performance on Linux. |
- Linux → Use X11 mode (recommended, no lag)
- Windows → Use VNC mode (X11 works but KiCad may lag)
- macOS → Use VNC mode (X11 requires XQuartz)
Both modes work on all platforms - the launcher will guide you through any required setup.
Note for MAC to be run in X11 mode:
- Install XQuartz on the Mac if you haven't already. You can download it from the XQuartz website.
- Enable network connections in XQuartz: Go to XQuartz > Preferences > Security tab, and check "Allow connections from network clients".
- Restart XQuartz and then restart your Docker application after making changes to the security settings.
- Run xhost +localhost in your Mac's terminal before running the Docker container. This allows local connections to your X server.
Run the following command in a terminal:
xhost +localhost
docker run --platform linux/amd64 -it --env="DISPLAY=host.docker.internal:0" -v /tmp/.X11-unix/:/tmp/.X11-unix/:rw esim:latest
# Interactive menu
python run_esim_docker.py
# Direct VNC mode
python run_esim_docker.py --vnc
# Direct X11 mode
python run_esim_docker.py --x11
# Update image
python run_esim_docker.py --pullYour projects are saved to:
| OS | Location |
|---|---|
| Windows | C:\Users\<you>\eSim_Workspace |
| Linux/macOS | ~/eSim_Workspace |
This folder is mounted into the container, so your files persist.
To copy a file or folder from your local machine into a Docker container, use the docker cp command.
Please follow these commands on a terminal as an example to copy a folder named counter:
$ docker cp counter4bit/counter4bit.v esim-container:/home/esim-user
$ docker exec -it -u root esim-container bash
$ chown -R esim-user:esim-user /home/esim-user/counter
$ chmod -R 777 /home/esim-user/counter
Open Docker Desktop and wait for it to fully start.
Wait a few seconds and refresh. The container needs time to start.
Refresh the browser page. If still blank, restart the launcher.
Make sure VcXsrv is running. The launcher auto-installs it if needed.
Install XQuartz from xquartz.org, then run xhost +localhost in terminal.
docker build -t esim:latest .
python run_esim_docker.py --buildThis section explains how to set up the automated build pipeline.
-
Copy the workflow file to the repository root:
docker-launcher/github-workflow/docker-launcher-build.yml → .github/workflows/docker-launcher-build.yml -
Update the Docker image URL in
run_esim_docker.py(line 21):DOCKER_IMAGE = "ghcr.io/fossee/esim-docker-launcher:latest"
Option 1: Manual trigger
- Go to Actions tab on GitHub
- Select "Build and Release" workflow
- Click "Run workflow"
Option 2: Using tags
git tag docker-launcher-v1.0.0
git push origin docker-launcher-v1.0.0Both methods will build executables for Windows, Linux, and macOS, then create a GitHub Release with download links.
| Event | Builds Docker | Builds Executables |
|---|---|---|
Tag docker-launcher-v* |
Yes | Yes |
| Manual workflow dispatch | Yes | Yes |
PR modifying docker-launcher/ |
Yes | No |
- eSim - FOSSEE Team, IIT Bombay
- KiCad - KiCad Developers
- Ngspice - Ngspice Team
- GAW3 - Hervé Quillévéré, Stefan Schippers
- Verilator - Verilator Team
- GHDL - GHDL Team
Created as part of the FOSSEE Internship program.
GPL-3.0

