{"id":45374947,"url":"https://github.com/ttktjmt/mjswan","last_synced_at":"2026-04-20T03:04:36.009Z","repository":{"id":312111328,"uuid":"1037367299","full_name":"ttktjmt/mjswan","owner":"ttktjmt","description":"MuJoco Simulation on Web Assembly with Neural netwroks","archived":false,"fork":false,"pushed_at":"2026-02-21T16:46:28.000Z","size":1508029,"stargazers_count":120,"open_issues_count":2,"forks_count":18,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-21T20:48:58.062Z","etag":null,"topics":["mjlab","mjswan","mujoco","mujoco-wasm","onnx","reinforcement-learning","robotics"],"latest_commit_sha":null,"homepage":"https://ttktjmt.github.io/mjswan/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ttktjmt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"ttktjmt"}},"created_at":"2025-08-13T13:17:39.000Z","updated_at":"2026-02-21T16:37:16.000Z","dependencies_parsed_at":"2025-10-24T19:22:54.158Z","dependency_job_id":"857643a0-299c-472f-88fb-783168236679","html_url":"https://github.com/ttktjmt/mjswan","commit_stats":null,"previous_names":["ttktjmt/muwanx","ttktjmt/mjswan"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ttktjmt/mjswan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttktjmt%2Fmjswan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttktjmt%2Fmjswan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttktjmt%2Fmjswan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttktjmt%2Fmjswan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ttktjmt","download_url":"https://codeload.github.com/ttktjmt/mjswan/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttktjmt%2Fmjswan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29771035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T03:15:54.600Z","status":"ssl_error","status_checked_at":"2026-02-24T03:15:54.143Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mjlab","mjswan","mujoco","mujoco-wasm","onnx","reinforcement-learning","robotics"],"created_at":"2026-02-21T16:06:32.161Z","updated_at":"2026-04-20T03:04:36.001Z","avatar_url":"https://github.com/ttktjmt.png","language":"Python","funding_links":["https://github.com/sponsors/ttktjmt"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/banner.svg\" alt=\"mjswan\" width=\"60%\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e\u003cem\u003eReal-time Interactive AI Robot Simulation in Your Browser\u003c/em\u003e\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ttktjmt/mjswan/actions/workflows/deploy.yml\"\u003e\u003cimg src=\"https://github.com/ttktjmt/mjswan/actions/workflows/deploy.yml/badge.svg\" alt=\"deploy\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ttktjmt/mjswan/actions/workflows/pytest.yml\"\u003e\u003cimg src=\"https://github.com/ttktjmt/mjswan/actions/workflows/pytest.yml/badge.svg\" alt=\"test\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://mjswan.readthedocs.io\"\u003e\u003cimg src=\"https://img.shields.io/readthedocs/mjswan?logo=readthedocs\" alt=\"docs\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/mjswan\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/mjswan.svg?logo=pypi\" alt=\"pypi version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/mjswan\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/mjswan.svg?logo=nodedotjs\" alt=\"npm version\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  mjswan is a powerful framework for creating interactive MuJoCo simulations with real-time policy control, running entirely in the browser. Built on top of \u003ca href=\"https://github.com/google-deepmind/mujoco/tree/main/wasm\"\u003emujoco wasm\u003c/a\u003e, \u003ca href=\"https://github.com/microsoft/onnxruntime\"\u003eonnxruntime\u003c/a\u003e, and \u003ca href=\"https://github.com/mrdoob/three.js/\"\u003ethree.js\u003c/a\u003e, it enables easy sharing of AI robot simulation demos as static sites, perfect for GitHub Pages hosting.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ttktjmt.github.io/mjswan/\"\u003e\u003cimg src=\"assets/demo.gif\" width=\"70%\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eCheck out the demo ― \u003ca href=\"https://ttktjmt.github.io/mjswan/\"\u003ettktjmt.github.io/mjswan\u003c/a\u003e\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://mjswan-mjlab.pages.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/mjlab-E0E0E0?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACgUlEQVR4nERSz08TaxQ937zhx2sptK+lEKAtfa/k8SBPFhhI2ADGhRIXgBETjQtduvVPMMaNCS7ZGYwxBIzRmJiIxkSEKChGUIOFCgFatD/SAg30x8x3r/mmGCez+Gbuuefcc7+jN/4/BjCDwCazxNHBAIipyGQQGcwm2ARMlkUdCs4QAIQQGpgJUN/MxL8fMEpI3WIFmC4MtwmNX82tb8d22apJk3p7/unuajJg3B59RlLx/OHwDjBTrbvi4fi5k73BKnvZ9MsIs2SWNQ599ObgyGB3+7/+lbXY+kYcII1Jjdvsq1a6wPCZtjpvpTIFCrU416PxeCJzcHAYOubTy3Uwa8olqNlfA0BKKi/Xr17pslzS5Yt9QX/9ndfhG2OPahtcdpvOzBqzJDKCAdXw9Hn4MFe8NNLp9diCHQ2nekNTb1b3M2mf1zW3EjvI5oFfpoN+J4BwJHmYK54f6rh1fWA2svMtmq7O5U/0dNrttu93pw1DyaqRmM2/Ay4AyVR2fOL9p/B2Jpdr8rin5sKb+9mZhaUXs8tnT3eqbYN1sBTgYOAvAInU/uLHzaVwyuaw9//n4sViWb6mye0siMq+rha3y5ZKFZQHr6eyyl5RUgDkVmSnPeB6Mrs6NTE/ef/tvQfzQ33tmibaWhuZTQ2QzT5naaeJ5B5Jmny8+Hkj3X889PXLVvJHenlhzeVQdK0tDQDpzKbb/efmdhpAPLEHYcaimWx8d2Y1mi8UAC4WjXcfIvV1To/bAbCoDV0DhKVw9DJJsEkkhfotuRRKMhkmk6GrDLJCCWhWo7pHFV4LXcoUWDIkFBHpJPNQWRVkiQiU8qpq1lGxMpuCiaE0fwYAAP//k7+eneLJBrkAAAAASUVORK5CYII=\" alt=\"mjlab Demo\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://ttktjmt.github.io/mjswan/robotdesc\"\u003e\u003cimg src=\"https://img.shields.io/badge/Robot_Descriptions-E0E0E0?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACYUlEQVR4nHyS208TQRjFv5nd7mW2205JQSExjVwfEEQxoon+q/4DRiKRlhTiLTGxNZK0gA8QLUZpbGtppLvd2es3ZlsfePI8/V7OzDknH5VS9vqXB6/fhGEkrylJkutcr9cnTAHgy/FRJpMJw7DdbjcajUqlAgB+ELx7/qxafpUkMSJqmlatVgEgNXysf7p3d900meM4p6enCwsL/X5/cHlJbyyurK6dn3+nlG5sbBiGAelLvl+r1cb/yv9EklK2Wi0pJRmJ4GroKJQwyyIA3W5XeN7t+XlE6fZ/6aal23lEiZj4QmRtmxJChkM3SSQZy/NGVKETbr7d+7C/O2HfF67rEEJUADANHUDCWLado5ROOF9a4sWZYa+dLc6ZJkviOC2dxqKgaZlJ3NxYE15cfwBaVuczUsogCBDHs2oqLdiMYmhqumXqo85F5A2ZoZm6Gvpi7uY0t5mpqzxn2VnGDI2qqkoV9c/VcBKjfVQ7OdjBJBFCdDqds7OzwWCQ9mkevdjeBoC0A6VUzWQISQ285lcJECCEMVYocM55oVBAxKXlFaKZAEDiOEGJvhCGaVECo5FLAJiVRYlhEKoZVVVUlBhFkfAE51wNovhH5/cMt2kcB0Ls7Lw0DOPh1pZFlff7VRPk8pOnucJU69vXi58Xd9bW0gWFH/hCAEAYRfc3N6WUum70et2DvUq5XK7slhVFOTz8nOd5xhjx/PDk+MRxnK3Hj0DKMAyDILAsq9vpzs7NNpuNUqnE+ZTnjVzXKRanU4PruoiYtW0CQAhBREopokySOIoixhiiBPh3Cn8DAAD//3KKiEEyOiLAAAAAAElFTkSuQmCC\" alt=\"Robot Descriptions Demo\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://ttktjmt.github.io/mjswan/playground\"\u003e\u003cimg src=\"https://img.shields.io/badge/MuJoCo_Playground-E0E0E0?logo=deepmind\" alt=\"MuJoCo Playground Demo\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://ttktjmt.github.io/mjswan/myosuite\"\u003e\u003cimg src=\"https://img.shields.io/badge/MyoSuite-E0E0E0?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMxNTUyNTc7fS5jbHMtMntmaWxsOiNlNmY1ZjA7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8xMCIgZGF0YS1uYW1lPSJMYXllciAxMCI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjEsMTNsLTQuMywzLjQ2TDEyLjE3LDkuMzksNy4yOCw2LDEwLjM5LDI2LjJsNi4zMSwxLDYuODctMTAuNDFaTTE1LjY2LDI1LjFsLTMuOS0uNTlMOS4zNCw5LjA2bC41OS40LDYuMjgsOS43NSw0LjkzLTMuOTIuNTQuNzhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjEuMTQsMTUuMjlsLTQuOTMsMy45Mkw5LjkzLDkuNDZsLS41OS0uNCwyLjQyLDE1LjQ1LDMuOS41OSw2LTlaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTQuNDQsMjQuMzFhMy40OCwzLjQ4LDAsMCwwLTEuMTYtLjE5LDMuNTcsMy41NywwLDAsMC0xLjE1LDYuOTQsMy40NywzLjQ3LDAsMCwwLDEuMTUuMTksMy41OCwzLjU4LDAsMCwwLDMuMzgtMi40MSwzLjU3LDMuNTcsMCwwLDAtMi4yMi00LjUzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzLjA2LDguMjNhMy41NSwzLjU1LDAsMCwwLTEtMi41NEEzLjQ5LDMuNDksMCwwLDAsOS41Niw0LjZIOS40OUEzLjU5LDMuNTksMCwwLDAsNS45Miw4LjFhMy41NywzLjU3LDAsMCwwLDMuNSwzLjYzaC4wN0EzLjU5LDMuNTksMCwwLDAsMTMuMDYsOC4yM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yNi4xOCwxNS4xOEEzLjU1LDMuNTUsMCwwLDAsMjYsMTIuNDVhMy42MiwzLjYyLDAsMCwwLTMuMi0yLDMuNTcsMy41NywwLDAsMC0xLjE2LDcsMy40OCwzLjQ4LDAsMCwwLDEuMTYuMTlBMy41NiwzLjU2LDAsMCwwLDI2LjE4LDE1LjE4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyLDUuNTJhMy42MSwzLjYxLDAsMCwwLS4xNy0yLjcyLDMuNTUsMy41NSwwLDAsMC0zLjIxLTJoMEEzLjU3LDMuNTcsMCwxLDAsMjIsNS41MloiLz48L2c+PC9zdmc+\" alt=\"MyoSuite Demo\"\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\n---\n\n\n## Features\n\n- **Real-time**: Run mujoco simulations and policy control in real time.\n- **Interactive**: Change the state of objects by applying forces.\n- **Cross-platform**: Works seamlessly on desktop and mobile devices.\n- **VR Support**: Native VR viewer support with WebXR.\n- **Client-only**: All computation runs in the browser. No server for simulation is required.\n- **Easy Sharing**: Host as a static site for effortless demo distribution (e.g., GitHub Pages).\n- **Portable**: Embed the simulation in a web page or Google Colab notebook.\n- **Customizable**: Visualize your mujoco models and onnx policies quickly.\n\n\n## Quick Start\n\nmjswan can be installed with `pip`:\n``` sh\npip install mjswan  # or 'mjswan[dev]', 'mjswan[examples]'\n```\n\nor with `npm`:\n``` sh\nnpm install mjswan\n```\n\nYou can run the demo using the `uv` command with the python package `mjswan[examples]`:\n``` sh\nuv run main\n```\n\nThe minimum python script for a sanity check:\n``` python\nimport os, mujoco, mjswan\n\nmodel_path = os.path.join(os.path.dirname(mujoco.__file__), \"testdata\", \"model.xml\")\nmjspec = mujoco.MjSpec.from_file(model_path)\n\nbuilder = mjswan.Builder()\nbuilder.add_project(name=\"Sanity Check\").add_scene(name=\"Humanoid\", spec=mjspec)\napp = builder.build()\napp.launch()\n```\n\nFor detailed instructions, visit the [documentation](https://mjswan.readthedocs.io).\n\n\n## Third-Party Assets\n\nmjswan incorporates mujoco models from the external sources in its demo. See the respective submodule for full details, including individual model licenses and copyrights. All models are used under their respective licenses. Please review and comply with those terms for any use or redistribution.\n\n[Robot Descriptions License](https://github.com/robot-descriptions/robot_descriptions.py/blob/main/LICENSE) ･ [MuJoCo Playground License](https://github.com/google-deepmind/mujoco_playground/blob/main/LICENSE) ･ [MyoSuite License](https://github.com/MyoHub/myosuite/blob/main/LICENSE)\n\n\n## Acknowledgments\n\nThis project was greatly inspired by the [Facet project demo](https://facet.pages.dev/) from the research group at Tsinghua University.\u003cbr\u003e\nIt is also built upon the excellent work of [zalo/mujoco_wasm](https://github.com/zalo/mujoco_wasm), one of the earliest efforts to run MuJoCo simulations in a browser.\n\n\n## License\n\nThis project is licensed under the [Apache-2.0 License](LICENSE). When using mjswan, please retain attribution notices in the app to help other users discover this project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fttktjmt%2Fmjswan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fttktjmt%2Fmjswan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fttktjmt%2Fmjswan/lists"}