tau-sim
LLM-assisted MuJoCo simulation IDE — runs in your browser, locally on your laptop, or as a hosted demo. Edit MJCF / Python on the left, watch episodes render live in the center, and ask any model (OpenRouter / OpenAI / Gemini) to propose changes that appear as reviewable diffs.
Built by Tau Intelligence.
Try it
One command, anywhere with Python ≥ 3.10
uvx tau-sim # or: pipx run tau-sim
That installs everything (FastAPI, MuJoCo, OSMesa-friendly bindings) in
an isolated environment and opens http://127.0.0.1:7860
in your browser. Project files are stored under ~/.tau/projects/.
If you've already got uv, you can also do:
uv tool install tau-sim
tau --help
From source
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -e .
cp .env.example .env # (optional) configure default LLM provider
tau
Frontend dev server
cd frontend
npm install
npm run dev # http://localhost:5173 (proxies /api and /ws to :8000)
When developing the frontend separately, run the backend via
uvicorn app.main:app --reload --port 8000 so the Vite proxy targets
the right port.
Architecture
┌──────────────────────────┐ ┌──────────────────────────────┐
│ React + Vite + Monaco │ HTTP │ FastAPI │
│ - Editor (MJCF / Py) │ ──────▶ │ /api/projects (CRUD) │
│ - Viewer (frames) │ │ /api/chat (LLM diff) │
│ - Chat + Diff review │ ◀────── │ /ws/sim/{id} (frames) │
│ - BYOK settings │ WS └──────────────┬───────────────┘
└──────────────────────────┘ │
┌─────────▼────────┐
│ subprocess sand- │
│ box (cloud only) │
└─────────┬────────┘
│
┌───────▼────────┐
│ MuJoCo runner │
│ (offscreen GL) │
└────────────────┘
Deploy as a single container
The repo ships a multi-stage Dockerfile that builds the
React app, installs MuJoCo + OSMesa, and serves the SPA + API + WS from
one FastAPI process on $PORT (default 7860).
docker build -t tau-sim .
docker run --rm -p 7860:7860 tau-sim
# open http://localhost:7860
The container defaults to multi-tenant mode: each visitor gets a cookie
session, projects are stored under /tmp/projects_data/<session>/, and
user env code runs inside a subprocess sandbox with CPU + wall-clock
limits. For local single-user runs (your laptop), the tau CLI sets
TAU_SINGLE_USER=1 automatically and disables the sandbox for speed.
Hugging Face Spaces (free)
- Create a new Space → SDK Docker.
- Push this repo. Rename
SPACE_README.mdtoREADME.mdat the Space root (or merge its YAML header into the existing README before pushing). - The Space builds the Docker image and exposes the app on its
*.hf.spaceURL.
No API keys are baked into the image — users add their own via the in-app Settings panel (stored only in their browser).
Configuration (env vars)
| Variable | Default | Effect |
|---|---|---|
PROJECTS_DIR |
~/.tau/projects (CLI) / /tmp/projects_data (Docker) |
Where project files live. |
MUJOCO_GL |
egl (CLI) / osmesa (Docker) |
MuJoCo offscreen renderer. |
TAU_SINGLE_USER |
0 (Docker) / 1 (CLI) |
Disable cookie-based isolation. |
TAU_SANDBOX |
0 (CLI) / 1 (Docker) |
Run user env in subprocess with rlimits. |
TAU_CPU_LIMIT |
60 |
CPU seconds per episode (sandbox only). |
TAU_WALL_LIMIT |
120 |
Wall-clock seconds per episode (sandbox only). |
TAU_MEM_LIMIT_MB |
unset | Optional RLIMIT_AS cap. Don't set unless you've tested with numpy/MuJoCo. |
OPENROUTER_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY |
unset | Optional server-side defaults; per-user BYOK overrides take precedence. |
GITHUB_TOKEN |
unset | Lifts menagerie-importer rate limit from 60/hr to 5000/hr. |
Security note
env.py is executed by the backend whenever you press Run. The
default Docker deployment runs it in a subprocess with rlimits — that
protects CPU / disk / wall-clock but not arbitrary syscalls or
network. For real public exposure also run the container with
--memory, --pids-limit, and a no-egress network policy.
LLM-proposed diffs are never auto-applied; the user must click Apply.
Metadata
Release files for tau-sim 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tau_sim-0.2.4.tar.gz | 1.7 MB | Without provenance | Details for tau_sim-0.2.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tau_sim-0.2.4-py3-none-any.whl | Python 3 | none | any | Details for tau_sim-0.2.4-py3-none-any.whl |
Total release size: 3.4 MB
Release files / tau_sim-0.2.4.tar.gz
| Download URL | tau_sim-0.2.4.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
82af5b412b84f6e2d6f3eeab7fd190b85fea07d86d3d6845c2bf90250937ef34
|
|
BLAKE2b-256 checksum How to use checksums |
efe79e284e6a647860a00bdd37e8c58aa7455612df148ae8d28dafa3293fc9ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / tau_sim-0.2.4-py3-none-any.whl
| Download URL | tau_sim-0.2.4-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97a5eebfa81905b64052e234311f9f7999f9ef6fc9297cf8a418fa4d492d710f
|
|
BLAKE2b-256 checksum How to use checksums |
43f7b56c2c43a84b0b97cb1771c4a2a3ace74652b7977c78643abc3ccdc8dba0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Security for tau-sim 0.2.4
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.