Tau-Sim — an LLM-assisted IDE for MuJoCo robotic simulation
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tau_sim-0.1.6.tar.gz.
File metadata
- Download URL: tau_sim-0.1.6.tar.gz
- Upload date:
- Size: 125.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a749bdd6ec0e869ce802e826ee6009263978470fabdb6e53c9a4a99f9af7ea3c
|
|
| MD5 |
73b1f31db440ad508a17c31354097196
|
|
| BLAKE2b-256 |
338b5121d3e7c0fa3e4eabfc136f594cd3dc199dae903211958d85f8174e812c
|
File details
Details for the file tau_sim-0.1.6-py3-none-any.whl.
File metadata
- Download URL: tau_sim-0.1.6-py3-none-any.whl
- Upload date:
- Size: 136.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe0b5da6d232867129c08d6534459897901babaa932545e044ab206e6b589c7e
|
|
| MD5 |
a32ff8c4ee8811cc761d6efa9005bfd1
|
|
| BLAKE2b-256 |
6a81ae1e47967f08067d87810446ba2f9256b531787ba2a09ac5695bf7baa3bf
|