OpenSim is a self-hosted World of Warcraft gear simulator. It uses SimulationCraft to run the simulations and displays the resulting HTML report.
git clone https://github.com/alexohneander/OpenSim.git
cd OpenSim
docker compose up --build --scale worker=2Open http://localhost:8000.
Use docker compose down to stop the services; Redis data remains in its
named volume.
The Helm chart creates a Deployment and ClusterIP Service. Ingress and Gateway API routes are optional; enable either or both as needed. Install the relevant Ingress controller or Gateway API CRDs/controller in your cluster first.
helm upgrade --install opensim ./helm/opensim \
--namespace opensim --create-namespace \
--values ./helm/opensim/examples/ingress-values.yamlFor Gateway API, use the Gateway values example. See the chart README for configuration details.
- Install the SimulationCraft WoW addon.
- Copy the complete profile generated by the addon into the profile field.
- Run a simulation for your currently equipped gear, or select items from
### Gear from Bagsand run Run Top Gear simulation.
Selected bag items are grouped by gear slot. SimC simulates every combination that chooses one selected item per selected slot, while retaining the original character as the baseline in the same HTML report. You can select up to 20 items, with a limit of 100 combinations per run.
Each submitted simulation gets a unique link in the browser address bar. Reopening or refreshing that link restores the report (or resumes showing the queue position while it is still waiting). Results are retained for 24 hours.
Simulation options included in a pasted profile, such as the # Simulation Options section exported by Raidbots, are passed through to SimulationCraft.
The defaults iterations=1000, target_error=0.05, and threads=4 are only
used when the profile does not set those options. Enable Use Raidbots
simulation options to apply the Raidbots-style preset (100,000 iterations,
one target, raid buffs, detailed reporting, and the other listed Raidbots
settings); these preset values take precedence over matching profile options.
The frontend is a Next.js static export; the FastAPI backend serves that export
and enqueues SimulationCraft jobs in Redis. Separate workers run simulations;
the frontend waits for job completion and then displays the report. The
Dockerfile builds the frontend and packages it with the SimC backend. At
startup, the backend reads the bundled SimulationCraft version and exposes it
in the site footer. GitHub Actions publishes images to
ghcr.io/alexohneander/opensim on pushes to main; pull requests only build
the image without publishing it. After a successful build on main, the
workflow updates helm/opensim/values-dev.yaml to the immutable full-SHA
image tag so Argo CD can deploy it. Make the GHCR package public if your
Kubernetes cluster should pull it without registry credentials. Run local
development with docker compose up --build --scale worker=2; Redis persists
its queue and result data in a named volume. See
backend/README.md and
frontend/README.md for component-specific details.
