If pixi install stalls while pulling the PyTorch wheel, add mirror entries to the existing [pypi-options] block in pixi.toml. Keep index-strategy and the [pypi-options.dependency-overrides] block, and point the indexes at a mirror:
To contribute, install the pre-commit hooks after cloning:
pixi run pre-commit install
Every git commit then runs ruff, codespell, and the YAML, TOML, and large-file checks locally, before CI sees the change. Run the full tree manually with pixi run pre-commit run --all-files.
Don’t pip install packages into the pixi environment. Pip dependencies aren’t tracked by pixi.toml or pixi.lock and disappear on the next resolve. Add dependencies by editing pixi.toml, then run pixi install.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Wuji Docs","colors":{"primary":"#207FFF","light":"#4D9BFF","dark":"#1A66CC"},"logo":{"light":"https://mintcdn.com/wuji-0bbde051/L5L7y_1GoeOydbgy/shared/assets/brand/logo-light.svg?fit=max\u0026auto=format\u0026n=L5L7y_1GoeOydbgy\u0026q=85\u0026s=1e43e384fc1295b14de2c02f102e820c","dark":"https://mintcdn.com/wuji-0bbde051/L5L7y_1GoeOydbgy/shared/assets/brand/logo-dark.svg?fit=max\u0026auto=format\u0026n=L5L7y_1GoeOydbgy\u0026q=85\u0026s=a12bbb202cabfeefe746637a8bddd666"},"favicon":"https://mintcdn.com/wuji-0bbde051/kLBbV0Hk1sanGeHp/favicon.svg?fit=max\u0026auto=format\u0026n=kLBbV0Hk1sanGeHp\u0026q=85\u0026s=1611c36a923485b6cfc9b39710953a0c","fonts":{"family":"Geist"},"icons":{"library":"lucide"},"styling":{"latex":true},"contextual":{"options":["copy","view","claude","chatgpt","mcp"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"languages":[{"language":"cn","banner":{"content":"**新** · 2026.10.26 · 设备故障日志、ROS 2 集成、macOS 支持,以及 C SDK 录制与离线处理。[查看详情](/docs/zh/release-notes#2026-10-26)","dismissible":true},"footer":{"socials":{"github":"https://github.com/wuji-technology"},"links":[{"header":"探索","items":[{"label":"发布记录","href":"/docs/zh/release-notes"},{"label":"视频","href":"/docs/zh/videos"},{"label":"归档","href":"/docs/zh/archived"}]},{"header":"公司","items":[{"label":"产品官网","href":"https://wuji.tech"},{"label":"GitHub","href":"https://github.com/wuji-technology"},{"label":"[email protected]","href":"mailto:[email protected]"}]}]},"navbar":{"links":[{"href":"/docs/zh/release-notes","label":"发布记录"},{"href":"/docs/zh/videos","label":"视频"},{"href":"/docs/zh/archived","label":"归档"}]},"href":"docs/zh"},{"language":"en","banner":{"content":"**New** · 2026.10.26 · Device fault logs, ROS 2 integration, macOS support, and C SDK recording and offline processing. [Read more](/docs/en/release-notes#2026-10-26)","dismissible":true},"footer":{"socials":{"github":"https://github.com/wuji-technology"},"links":[{"header":"Explore","items":[{"label":"Release notes","href":"/docs/en/release-notes"},{"label":"Videos","href":"/docs/en/videos"},{"label":"Archived","href":"/docs/en/archived"}]},{"header":"Company","items":[{"label":"Product site","href":"https://wuji.tech"},{"label":"GitHub","href":"https://github.com/wuji-technology"},{"label":"[email protected]","href":"mailto:[email protected]"}]}]},"navbar":{"links":[{"href":"/docs/en/release-notes","label":"Release notes"},{"href":"/docs/en/videos","label":"Videos"},{"href":"/docs/en/archived","label":"Archived"}]},"href":"docs/en"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"wuji-0bbde051","hasAudioNarration":false,"actualSubdomain":"wuji-0bbde051","customDomains":["docs.wuji.tech"],"gitSource":{"type":"github","owner":"wuji-technology","repo":"wuji-developer-docs","deployBranch":"main","contentDirectory":"site","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae315c99757c0f6dff3836a","collectionId":"845ca03c-6f86-40c7-a01c-4d05b760f85a","liveDeploymentHistoryId":"6ae315c99757c0f6dff3836a","schemaVersion":"v3"},"feedback":{"issues":false,"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae315c99757c0f6dff3836a","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"en","tag":"Hardware","count":71},{"language":"cn","tag":"硬件","count":71},{"language":"en","tag":"More","count":62},{"language":"cn","tag":"更多","count":62},{"language":"en","tag":"Archived","count":60},{"language":"cn","tag":"归档","count":60},{"language":"en","tag":"Integration and Development","count":46},{"language":"cn","tag":"集成与开发","count":46},{"language":"en","tag":"Wuji Hand 2","count":35},{"language":"cn","tag":"Wuji Hand 2","count":35},{"language":"en","tag":"Software","count":34},{"language":"cn","tag":"软件","count":34},{"language":"en","tag":"Wuji Glove","count":32},{"language":"cn","tag":"Wuji Glove","count":32},{"language":"en","tag":"2.2 Beta","count":29},{"language":"cn","tag":"2.2 Beta","count":29},{"language":"en","tag":"Getting Started","count":28},{"language":"cn","tag":"入门","count":28},{"language":"en","tag":"SDK Practice","count":24},{"language":"cn","tag":"SDK 使用实践","count":24}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"styles/content.css","href":"/_mintlify/custom/wuji-0bbde051/6d843fe5433b2259/styles/content.css"},{"filePath":"styles/footer.css","content":"#footer a[href*=\"utm_campaign=poweredBy\"],#footer div:has(>button[data-testid^=mode-switch-]){display:none}#footer [data-wj-subscribe-links]>wuji-subscribe{grid-column:1/-1;min-width:0}@media (min-width:1280px){#footer [data-wj-subscribe-links]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(15rem,2fr)!important}#footer [data-wj-subscribe-links]>wuji-subscribe{grid-column:auto}}"},{"filePath":"styles/navbar.css","content":"#navbar{--nav-control-bg:#f5f5f7;--nav-control-hover-bg:#eeeef0;--nav-control-focus:#1a66cc}.dark #navbar{--nav-control-bg:#1d1d1f;--nav-control-hover-bg:#2c2c2e;--nav-control-focus:#4d9bff}#navbar #assistant-entry,#navbar #assistant-entry-mobile,#navbar #search-bar-entry,#navbar #search-bar-entry-mobile{border:0;box-shadow:none;background:var(--nav-control-bg);filter:none}#navbar #assistant-entry,#navbar #search-bar-entry{border-radius:12px}#navbar #assistant-entry-mobile,#navbar #search-bar-entry-mobile{border-radius:10px}#navbar #assistant-entry-mobile:hover,#navbar #assistant-entry:hover,#navbar #search-bar-entry-mobile:hover,#navbar #search-bar-entry:hover{background:var(--nav-control-hover-bg)}#navbar #assistant-entry-mobile:focus-visible,#navbar #assistant-entry:focus-visible,#navbar #search-bar-entry-mobile:focus-visible,#navbar #search-bar-entry:focus-visible{outline:2px solid var(--nav-control-focus);outline-offset:2px}@media (min-width:1024px){#navbar div:has(>div>div>#search-bar-entry){container:wuji-navbar/inline-size}#navbar div:has(>div>#localization-select-trigger){display:contents}#navbar div:has(>#localization-select-trigger){order:1;flex:0 0 auto}#navbar div:has(>#search-bar-entry){flex:1 1 0%;min-width:16rem;max-width:32rem;margin-inline:auto}#navbar #search-bar-entry,#navbar #search-bar-entry>div{min-width:0}#navbar div:has(>nav[aria-label=Main]){flex:0 1 auto;min-width:0}#navbar nav[aria-label=Main]{min-width:0;overflow-x:auto}#navbar nav[aria-label=Main]>ul{width:max-content}#navbar div:has(>#theme-preference-menu-trigger){flex-shrink:0}@container wuji-navbar (max-width: 68rem){#navbar div:has(>div>#search-bar-entry){column-gap:.5rem}#navbar .nav-logo{width:13.5rem;height:auto}#navbar div:has(>#search-bar-entry){flex:0 0 auto;min-width:0;max-width:none;margin-inline:0;gap:.5rem}#navbar #assistant-entry,#navbar #search-bar-entry{flex:0 0 2.25rem;width:2.25rem;min-width:2.25rem;padding-inline:0;justify-content:center;gap:0}#navbar #assistant-entry>span,#navbar #search-bar-entry>div>div,#navbar #search-bar-entry>span{display:none}#navbar nav[aria-label=Main]>ul{column-gap:.75rem}#navbar nav[aria-label=Main]>ul>li{margin-inline:0}#navbar div:has(>nav[aria-label=Main]){column-gap:.5rem}#navbar div:has(>#theme-preference-menu-trigger){margin-inline-start:0}}}"},{"filePath":"styles/sidebar.css","content":""},{"filePath":"styles/toc.css","content":":is(#table-of-contents, #table-of-contents-content) li[data-release-filter-hidden]{display:none!important}:is(#table-of-contents, #table-of-contents-content) li[data-release-level=month]>a{padding-inline-start:0;padding-top:8px;font-weight:600}:is(#table-of-contents, #table-of-contents-content) li[data-release-level=entry]>a{padding-inline-start:14px;font-size:.8125rem}:is(#table-of-contents, #table-of-contents-content) li[data-release-level=detail]>a{padding-inline-start:28px;font-size:.8125rem}"}],"page":{"pagePath":"docs/en/wuji-mjlab/latest/installation","slug":"/docs/en/wuji-mjlab/latest/installation","pageMetadata":{"title":"Installation","description":"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.","href":"/docs/en/wuji-mjlab/latest/installation"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`wuji-mjlab installs through `,_jsx(_components.a,{href:`https://pixi.sh`,children:`pixi`}),`, which resolves the full CUDA and PyTorch stack from a lockfile.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`This project is pixi-only. `,_jsx(_components.code,{children:`conda + pip install -e .`}),` is not tested and not supported.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`requirements`,children:`Requirements`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Linux x86_64`}),`\n`,_jsx(_components.li,{children:`NVIDIA GPU with CUDA 12.8 (Blackwell sm_120 / RTX 50-series supported)`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://pixi.sh`,children:`pixi`}),` ≥ 0.66 (the version CI uses)`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For sim-to-real deployment, you also need Wuji Hand hardware and a camera rig. See `,_jsx(_components.a,{href:`/docs/en/wuji-mjlab/latest/hardware`,children:`Hardware Setup`}),` for the full bill of materials.`]}),`\n`,_jsx(Heading,{level:`2`,id:`install`,children:`Install`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# 1. install pixi (one-time)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -fsSL`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://pixi.sh/install.sh`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` bash`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# 2. clone and resolve the environment`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/wuji-technology/wuji-mjlab`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` wuji-mjlab`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pixi`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`This produces a `,_jsx(_components.code,{children:`default`}),` environment for training and evaluation. For the sim-to-real bridge, add the optional `,_jsx(_components.code,{children:`deploy`}),` environment:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pixi`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -e`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deploy`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`verify`,children:`Verify`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pixi`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list-envs`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This lists the registered tasks and confirms the mjlab and tyro stack imports cleanly.`}),`\n`,_jsx(Heading,{level:`2`,id:`slow-dependency-downloads`,children:`Slow Dependency Downloads`}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`pixi install`}),` stalls while pulling the PyTorch wheel, add mirror entries to the existing `,_jsx(_components.code,{children:`[pypi-options]`}),` block in `,_jsx(_components.code,{children:`pixi.toml`}),`. Keep `,_jsx(_components.code,{children:`index-strategy`}),` and the `,_jsx(_components.code,{children:`[pypi-options.dependency-overrides]`}),` block, and point the indexes at a mirror:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`toml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`toml`,children:_jsxs(_components.code,{language:`toml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`pypi-options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`index-strategy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"unsafe-best-match\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`index-url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://mirrors.aliyun.com/pypi/simple/\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`extra-index-urls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://mirrors.aliyun.com/pytorch-wheels/cu128\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`This is a local edit. Don’t commit it — the CI lockfile check fails if `,_jsx(_components.code,{children:`pixi.toml`}),` and `,_jsx(_components.code,{children:`pixi.lock`}),` drift.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`development-setup`,children:`Development Setup`}),`\n`,_jsx(_components.p,{children:`To contribute, install the pre-commit hooks after cloning:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pixi`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pre-commit`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Every `,_jsx(_components.code,{children:`git commit`}),` then runs ruff, codespell, and the YAML, TOML, and large-file checks locally, before CI sees the change. Run the full tree manually with `,_jsx(_components.code,{children:`pixi run pre-commit run --all-files`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Don’t `,_jsx(_components.code,{children:`pip install`}),` packages into the pixi environment. Pip dependencies aren’t tracked by `,_jsx(_components.code,{children:`pixi.toml`}),` or `,_jsx(_components.code,{children:`pixi.lock`}),` and disappear on the next resolve. Add dependencies by editing `,_jsx(_components.code,{children:`pixi.toml`}),`, then run `,_jsx(_components.code,{children:`pixi install`}),`.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Installation","description":"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.","href":"/docs/en/wuji-mjlab/latest/installation"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Requirements","slug":"requirements","depth":2,"children":[]},{"title":"Install","slug":"install","depth":2,"children":[]},{"title":"Verify","slug":"verify","depth":2,"children":[]},{"title":"Slow Dependency Downloads","slug":"slow-dependency-downloads","depth":2,"children":[]},{"title":"Development Setup","slug":"development-setup","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/wuji-0bbde051/b2c44d33b6c24023/scripts/copy-page-label.js","/_mintlify/custom/wuji-0bbde051/55dfb02ab44abb4e/scripts/subscribe.js"],"subdomain":"wuji-0bbde051","siteName":"Wuji Docs","title":"Installation - Wuji Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"cn":{"href":"/docs/zh/wuji-mjlab/latest/installation","matchLevel":1},"en":{"href":"/docs/en/wuji-mjlab/latest/installation","matchLevel":0}}},"lastModified":"2026-10-19T11:10:28.247Z","originalFileLocation":"docs/en/wuji-mjlab/latest/installation.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Wuji Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Installation - Wuji Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Wuji Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://wuji-0bbde051.mintlify.app/_mintlify/api/og/v2?division=Getting+Started\u0026amp;title=Installation\u0026amp;description=Set+up+the+pixi+environment+for+wuji-mjlab+training+and+evaluation%2C+plus+the+optional+deploy+environment+for+the+sim-to-real+bridge.\u0026amp;theme=d3c89db0dda8c0a089307a0d\u0026amp;signature=3bcc387a0b36a6c79130dd891b7b63826be8b587972b40cbf5c293b1c92afa84\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Installation - Wuji Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://wuji-0bbde051.mintlify.app/_mintlify/api/og/v2?division=Getting+Started\u0026amp;title=Installation\u0026amp;description=Set+up+the+pixi+environment+for+wuji-mjlab+training+and+evaluation%2C+plus+the+optional+deploy+environment+for+the+sim-to-real+bridge.\u0026amp;theme=d3c89db0dda8c0a089307a0d\u0026amp;signature=3bcc387a0b36a6c79130dd891b7b63826be8b587972b40cbf5c293b1c92afa84\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/wuji-0bbde051/YiVCFEFt9Io2b5rD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Wuji Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#207FFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/wuji-mjlab/latest/installation.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.wuji.tech/docs/zh/wuji-mjlab/latest/installation\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.wuji.tech/docs/zh/wuji-mjlab/latest/installation\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.wuji.tech/#organization\",\"name\":\"Wuji Docs\",\"url\":\"https://docs.wuji.tech\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/wuji-0bbde051/L5L7y_1GoeOydbgy/shared/assets/brand/logo-light.svg?fit=max\u0026auto=format\u0026n=L5L7y_1GoeOydbgy\u0026q=85\u0026s=1e43e384fc1295b14de2c02f102e820c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.wuji.tech#website\",\"name\":\"Wuji Docs\",\"url\":\"https://docs.wuji.tech\",\"publisher\":{\"@id\":\"https://docs.wuji.tech/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation#webpage\",\"url\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation\",\"name\":\"Installation\",\"description\":\"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.\",\"dateModified\":\"2026-10-19T11:10:28.247Z\",\"isPartOf\":{\"@id\":\"https://docs.wuji.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"More\",\"item\":\"https://docs.wuji.tech/docs/en/release-notes\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Archived\",\"item\":\"https://docs.wuji.tech/docs/en/archived\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wuji MJLab\",\"item\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/release-notes\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Getting Started\",\"item\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/introduction\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Installation\",\"item\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation#article\",\"headline\":\"Installation\",\"name\":\"Installation\",\"description\":\"Set up the pixi environment for wuji-mjlab training and evaluation, plus the optional deploy environment for the sim-to-real bridge.\",\"url\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.wuji.tech/docs/en/wuji-mjlab/latest/installation#webpage\"},\"dateModified\":\"2026-10-19T11:10:28.247Z\",\"publisher\":{\"@id\":\"https://docs.wuji.tech/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.wuji.tech#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Wuji Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Wuji Docs","nav":{"global":null,"languages":[{"language":"cn","banner":{"content":"**新** · 2026.10.26 · 设备故障日志、ROS 2 集成、macOS 支持,以及 C SDK 录制与离线处理。[查看详情](/docs/zh/release-notes#2026-10-26)","dismissible":true},"footer":{"socials":{"github":"https://github.com/wuji-technology"},"links":[{"header":"探索","items":[{"label":"发布记录","href":"/docs/zh/release-notes"},{"label":"视频","href":"/docs/zh/videos"},{"label":"归档","href":"/docs/zh/archived"}]},{"header":"公司","items":[{"label":"产品官网","href":"https://wuji.tech"},{"label":"GitHub","href":"https://github.com/wuji-technology"},{"label":"[email protected]","href":"mailto:[email protected]"}]}]},"navbar":{"links":[{"href":"/docs/zh/release-notes","label":"发布记录"},{"href":"/docs/zh/videos","label":"视频"},{"href":"/docs/zh/archived","label":"归档"}]},"pages":[{"title":"cn","href":"/docs/zh/wuji-mjlab/latest/installation"}]},{"language":"en","banner":{"content":"**New** · 2026.10.26 · Device fault logs, ROS 2 integration, macOS support, and C SDK recording and offline processing. [Read more](/docs/en/release-notes#2026-10-26)","dismissible":true},"footer":{"socials":{"github":"https://github.com/wuji-technology"},"links":[{"header":"Explore","items":[{"label":"Release notes","href":"/docs/en/release-notes"},{"label":"Videos","href":"/docs/en/videos"},{"label":"Archived","href":"/docs/en/archived"}]},{"header":"Company","items":[{"label":"Product site","href":"https://wuji.tech"},{"label":"GitHub","href":"https://github.com/wuji-technology"},{"label":"[email protected]","href":"mailto:[email protected]"}]}]},"navbar":{"links":[{"href":"/docs/en/release-notes","label":"Release notes"},{"href":"/docs/en/videos","label":"Videos"},{"href":"/docs/en/archived","label":"Archived"}]},"groups":[{"group":"Overview","pages":[{"title":"Welcome to the Wuji Developer Docs","mode":"wide","sidebarTitle":"Home","href":"/docs/en"}]},{"group":"Hardware","pages":[{"group":"Wuji Hand 2","pages":[{"group":"2.2 Beta","tag":"LATEST","pages":[{"sidebarTitle":"Reading guide","title":"Reading guide","href":"/docs/en/wuji-hand/latest/index"},{"group":"Getting Started","pages":[{"title":"Version Identification and Compatibility","href":"/docs/en/wuji-hand/latest/version-compatibility"},{"title":"Product Introduction","href":"/docs/en/wuji-hand/latest/overview"},{"title":"User Notice","href":"/docs/en/wuji-hand/latest/user-notice"},{"title":"Quick Start","href":"/docs/en/wuji-hand/latest/quick-start"}]},{"group":"Integration and Development","pages":[{"group":"Hardware and Software Integration","pages":[{"title":"Mechanical Integration","href":"/docs/en/wuji-hand/latest/hardware-integration"},{"title":"Electrical and Network Integration","href":"/docs/en/wuji-hand/latest/electrical-network-integration"},{"title":"ROS 2 Integration","href":"/docs/en/wuji-hand/latest/ros2-integration"},{"title":"Model Assets and Loading","href":"/docs/en/wuji-hand/latest/model-integration"}]},{"title":"Control Guide","href":"/docs/en/wuji-hand/latest/control-guide"},{"title":"Calibration and Configuration","href":"/docs/en/wuji-hand/latest/calibration"},{"group":"SDK Reference","pages":[{"title":"Data Streams Overview","href":"/docs/en/wuji-hand/latest/sdk-reference"},{"title":"Joint States and Control","href":"/docs/en/wuji-hand/latest/sdk-reference/joint-control"},{"title":"Effort and MIT Parameters","href":"/docs/en/wuji-hand/latest/sdk-reference/effort-and-mit"},{"title":"IMU","href":"/docs/en/wuji-hand/latest/sdk-reference/imu"},{"title":"Device Parameters and Operations","href":"/docs/en/wuji-hand/latest/sdk-reference/device-operations"},{"title":"Diagnostics and Logs","href":"/docs/en/wuji-hand/latest/sdk-reference/diagnostics"}]},{"group":"SDK Practice","pages":[{"sidebarTitle":"Overview","title":"Overview","href":"/docs/en/wuji-hand/latest/sdk-practice/index"},{"title":"Subscribing With Callbacks","href":"/docs/en/wuji-hand/latest/sdk-practice/subscribe-callback"},{"title":"Subscribing Asynchronously","href":"/docs/en/wuji-hand/latest/sdk-practice/subscribe-async"},{"title":"Publishing Control Commands","href":"/docs/en/wuji-hand/latest/sdk-practice/publish-command"},{"title":"Replaying a Thumb Opposition","href":"/docs/en/wuji-hand/latest/sdk-practice/opposition-replay"},{"title":"Running an MIT Joint Sweep","href":"/docs/en/wuji-hand/latest/sdk-practice/mit-sweep"},{"title":"Adjusting Stream Rate","href":"/docs/en/wuji-hand/latest/sdk-practice/stream-rate"},{"title":"Reading Device Info","href":"/docs/en/wuji-hand/latest/sdk-practice/device-info"},{"title":"Exporting Device Logs","href":"/docs/en/wuji-hand/latest/sdk-practice/export-flash-logs"}]}]},{"group":"Operations and Appendix","pages":[{"title":"Maintenance","href":"/docs/en/wuji-hand/latest/maintenance"},{"title":"Troubleshooting","href":"/docs/en/wuji-hand/latest/troubleshooting"},{"title":"Appendix","href":"/docs/en/wuji-hand/latest/reference"}]}]},{"group":"2.1 Beta","pages":[{"sidebarTitle":"Reading guide","title":"Reading guide","href":"/docs/en/wuji-hand/beta1/index"},{"group":"Getting Started","pages":[{"title":"Product Introduction","href":"/docs/en/wuji-hand/beta1/overview"},{"title":"User Notice","href":"/docs/en/wuji-hand/beta1/user-notice"},{"title":"Usage Constraints","href":"/docs/en/wuji-hand/beta1/usage-constraints"}]},{"group":"Developer Guide","pages":[{"title":"ROS 2 Integration","href":"/docs/en/wuji-hand/beta1/ros2-integration"},{"title":"SDK Reference","href":"/docs/en/wuji-hand/beta1/sdk-reference"}]}]}]},{"group":"Wuji Glove","pages":[{"sidebarTitle":"Reading guide","title":"Reading guide","href":"/docs/en/wuji-glove/latest/index"},{"group":"Getting Started","pages":[{"title":"Product Introduction","href":"/docs/en/wuji-glove/latest/introduction"},{"title":"User Notice","href":"/docs/en/wuji-glove/latest/user-notice"},{"title":"Quick Start","href":"/docs/en/wuji-glove/latest/getting-started"}]},{"group":"Integration and Development","pages":[{"title":"Calibration and Configuration","href":"/docs/en/wuji-glove/latest/calibration"},{"group":"Hardware and Software Integration","pages":[{"title":"Mechanical Integration","href":"/docs/en/wuji-glove/latest/hardware-integration"},{"title":"Electrical and Network Integration","href":"/docs/en/wuji-glove/latest/electrical-network-integration"},{"title":"ROS 2 Integration","href":"/docs/en/wuji-glove/latest/ros2-integration"},{"title":"Model Assets and Loading","href":"/docs/en/wuji-glove/latest/model-integration"}]},{"title":"Coordinate Frames","href":"/docs/en/wuji-glove/latest/coordinate-frames"},{"title":"Offline Solving","href":"/docs/en/wuji-glove/latest/offline-pipeline"},{"group":"SDK 接口","pages":[{"title":"Data Streams Overview","href":"/docs/en/wuji-glove/latest/sdk-data-reference/index"},{"title":"Tactile","href":"/docs/en/wuji-glove/latest/sdk-data-reference/tactile"},{"title":"Hand Tracking","href":"/docs/en/wuji-glove/latest/sdk-data-reference/hand-tracking"},{"title":"IMU","href":"/docs/en/wuji-glove/latest/sdk-data-reference/imu"},{"title":"Coordinate Transforms","href":"/docs/en/wuji-glove/latest/sdk-data-reference/coordinate-transforms"},{"title":"Device Parameters and Operations","href":"/docs/en/wuji-glove/latest/sdk-data-reference/device-operations"},{"title":"Hand Model Calibration","href":"/docs/en/wuji-glove/latest/sdk-data-reference/calibration"}]},{"group":"SDK Practice","pages":[{"sidebarTitle":"Overview","title":"Overview","href":"/docs/en/wuji-glove/latest/sdk-practice/index"},{"title":"Subscribing With Callbacks","href":"/docs/en/wuji-glove/latest/sdk-practice/subscribe-callback"},{"title":"Subscribing Asynchronously","href":"/docs/en/wuji-glove/latest/sdk-practice/subscribe-async"},{"title":"Recording Data","href":"/docs/en/wuji-glove/latest/sdk-practice/data-recording"},{"title":"Replaying Data Offline","href":"/docs/en/wuji-glove/latest/sdk-practice/offline-replay"},{"title":"Hand Model Calibration","href":"/docs/en/wuji-glove/latest/sdk-practice/hand-model-calibration"},{"title":"Tactile Calibration","href":"/docs/en/wuji-glove/latest/sdk-practice/tactile-calibration"},{"title":"Setting a Custom Hand Model","href":"/docs/en/wuji-glove/latest/sdk-practice/custom-hand-model"},{"title":"Adjusting Stream Rate","href":"/docs/en/wuji-glove/latest/sdk-practice/stream-rate"},{"title":"Tactile Contact Grid View","href":"/docs/en/wuji-glove/latest/sdk-practice/tactile-contact-view"},{"title":"Tactile Residual Grid View","href":"/docs/en/wuji-glove/latest/sdk-practice/tactile-residual-view"}]}]},{"group":"Operations and Appendix","pages":[{"title":"Maintenance","href":"/docs/en/wuji-glove/latest/maintenance"},{"title":"Troubleshooting","href":"/docs/en/wuji-glove/latest/troubleshooting"},{"title":"Appendix","href":"/docs/en/wuji-glove/latest/appendix"}]}]},{"group":"Wuji Hand","tag":"ARCHIVED","pages":[{"sidebarTitle":"Reading guide","title":"Reading guide","href":"/docs/en/wuji-hand/v1/index"},{"title":"Changelog","href":"/docs/en/wuji-hand/v1/release-notes"},{"title":"Product Introduction","href":"/docs/en/wuji-hand/v1/overview"},{"title":"User Notice","href":"/docs/en/wuji-hand/v1/user-notice"}]}]},{"group":"Software","pages":[{"group":"Wuji SDK","pages":[{"sidebarTitle":"Reading guide","title":"Reading guide","href":"/docs/en/wuji-sdk/latest/index"},{"group":"Getting Started","pages":[{"title":"SDK Overview","href":"/docs/en/wuji-sdk/latest/introduction"},{"title":"Installation and Environment","href":"/docs/en/wuji-sdk/latest/quick-start"},{"title":"Docker Deployment","href":"/docs/en/wuji-sdk/latest/docker-deployment"}]},{"group":"Developer Guide","pages":[{"title":"Device Discovery \u0026 Connection","href":"/docs/en/wuji-sdk/latest/device-connection"},{"title":"Data Subscription Mechanism","href":"/docs/en/wuji-sdk/latest/data-subscription"},{"title":"Wuji Hand 2 Fingertip Tactile","href":"/docs/en/wuji-sdk/latest/wuji-hand-2-tactile"},{"title":"Data Recording","href":"/docs/en/wuji-sdk/latest/data-recording"},{"title":"Common Data Types","href":"/docs/en/wuji-sdk/latest/data-reference"},{"title":"SDK Users and Calibration Data","href":"/docs/en/wuji-sdk/latest/device-params"},{"title":"Time Synchronization and Coordinate Transforms","href":"/docs/en/wuji-sdk/latest/time-sync"},{"title":"Hand Retargeting","href":"/docs/en/wuji-sdk/latest/retargeting"}]},{"group":"SDK Practice","pages":[{"sidebarTitle":"Overview","title":"Overview","href":"/docs/en/wuji-sdk/latest/sdk-practice/index"},{"title":"Retargeting Sessions: Keypoints to Joint Angles","href":"/docs/en/wuji-sdk/latest/sdk-practice/retarget-session"},{"title":"Local SDK User Management","href":"/docs/en/wuji-sdk/latest/sdk-practice/user-management"},{"title":"Wuji Hand 2 Fingertip Tactile","href":"/docs/en/wuji-sdk/latest/sdk-practice/hand2-fingertip"}]},{"group":"Operations and Appendix","pages":[{"title":"Best Practices","href":"/docs/en/wuji-sdk/latest/advanced"},{"title":"Fault Logs and Error Codes","href":"/docs/en/wuji-sdk/latest/device-fault-logs"},{"title":"Troubleshooting","href":"/docs/en/wuji-sdk/latest/troubleshooting"},{"title":"C API Reference","href":"/docs/en/wuji-sdk/latest/c-sdk-reference"},{"title":"Appendix","href":"/docs/en/wuji-sdk/latest/appendix"}]}]},{"group":"Wuji CLI","pages":[{"sidebarTitle":"Reading guide","title":"Reading guide","href":"/docs/en/wuji-cli/latest/index"},{"group":"Getting Started","pages":[{"title":"CLI Overview","href":"/docs/en/wuji-cli/latest/introduction"},{"title":"Getting Started","href":"/docs/en/wuji-cli/latest/getting-started"}]},{"group":"User Guide","pages":[{"title":"Device Management","href":"/docs/en/wuji-cli/latest/device-management"},{"title":"Read and Write Parameters","href":"/docs/en/wuji-cli/latest/parameters"},{"title":"Users and Calibration Data","href":"/docs/en/wuji-cli/latest/user"},{"title":"Hand Model Calibration","href":"/docs/en/wuji-cli/latest/hand-model-calibration"},{"title":"Data Subscription","href":"/docs/en/wuji-cli/latest/subscription"},{"title":"Live Visualization","href":"/docs/en/wuji-cli/latest/visualization"},{"title":"Tactile Calibration","href":"/docs/en/wuji-cli/latest/tactile-calibration"},{"title":"Health Diagnostics","href":"/docs/en/wuji-cli/latest/doctor"},{"title":"Log Export","href":"/docs/en/wuji-cli/latest/logs"},{"title":"Firmware Upgrade","href":"/docs/en/wuji-cli/latest/firmware-upgrade"}]}]}]},{"group":"More","pages":[{"title":"Release notes","href":"/docs/en/release-notes"},{"title":"Videos","href":"/docs/en/videos"},{"group":"Archived","pages":[{"title":"Archived","href":"/docs/en/archived"},{"group":"Wuji Studio","tag":"ARCHIVED","pages":[{"title":"Changelog","href":"/docs/en/wuji-studio/latest/release-notes"},{"sidebarTitle":"All pages","title":"Reading guide","href":"/docs/en/wuji-studio/latest/index"},{"group":"Getting Started","pages":[{"title":"Overview","href":"/docs/en/wuji-studio/latest/introduction"},{"title":"Download and Installation","href":"/docs/en/wuji-studio/latest/installation"}]},{"group":"User Guide","pages":[{"title":"Basic Settings","href":"/docs/en/wuji-studio/latest/basic-settings"},{"title":"Device Management","href":"/docs/en/wuji-studio/latest/device-connection"},{"group":"Data visualization","pages":[{"title":"Overview","href":"/docs/en/wuji-studio/latest/visualization/index"},{"title":"Layout Presets","href":"/docs/en/wuji-studio/latest/visualization/layout-presets"},{"title":"Panel Types","href":"/docs/en/wuji-studio/latest/visualization/panel-types"},{"title":"3D Hand Visualization","href":"/docs/en/wuji-studio/latest/visualization/hand-3d"},{"title":"Data Recording","href":"/docs/en/wuji-studio/latest/visualization/recording"},{"title":"Device Logs","href":"/docs/en/wuji-studio/latest/visualization/device-logs"}]},{"title":"Firmware Upgrade","href":"/docs/en/wuji-studio/latest/firmware-upgrade"},{"title":"Device Calibration","href":"/docs/en/wuji-studio/latest/calibration"},{"title":"Tactile Contact Calibration","href":"/docs/en/wuji-studio/latest/tactile-calibration"}]},{"group":"Reference","pages":[{"title":"Troubleshooting","href":"/docs/en/wuji-studio/latest/troubleshooting"},{"title":"Studio Migration Guide","href":"/docs/en/wuji-studio/latest/migration-to-cli"}]}]},{"group":"Wuji Hand ROS2","tag":"ARCHIVED","pages":[{"title":"Changelog","href":"/docs/en/wujihandros2/latest/release-notes"},{"sidebarTitle":"All pages","title":"Reading guide","href":"/docs/en/wujihandros2/latest/index"},{"group":"Getting Started","pages":[{"title":"Installation","href":"/docs/en/wujihandros2/latest/installation"},{"title":"Quick Start","href":"/docs/en/wujihandros2/latest/quick-start"}]},{"group":"Configuration","pages":[{"title":"Configuration","href":"/docs/en/wujihandros2/latest/configuration"},{"title":"ROS2 Interface","href":"/docs/en/wujihandros2/latest/ros2-interface"}]},{"group":"Reference","pages":[{"title":"Appendix","href":"/docs/en/wujihandros2/latest/appendix"}]}]},{"group":"Wuji Hand HMI","tag":"ARCHIVED","pages":[{"title":"Changelog","href":"/docs/en/wuji-hand-hmi/latest/release-notes"},{"sidebarTitle":"All pages","title":"Reading guide","href":"/docs/en/wuji-hand-hmi/latest/index"},{"group":"Getting Started","pages":[{"title":"Getting Started","href":"/docs/en/wuji-hand-hmi/latest/getting-started"}]},{"group":"Usage","pages":[{"title":"Panels","href":"/docs/en/wuji-hand-hmi/latest/panels"},{"title":"Connection \u0026 Enable","href":"/docs/en/wuji-hand-hmi/latest/connection"}]},{"group":"Reference","pages":[{"title":"Troubleshooting","href":"/docs/en/wuji-hand-hmi/latest/troubleshooting"}]}]},{"group":"Wuji Hand Upgrader","tag":"ARCHIVED","pages":[{"title":"Changelog","href":"/docs/en/wuji-hand-upgrader/latest/release-notes"},{"sidebarTitle":"All pages","title":"Reading guide","href":"/docs/en/wuji-hand-upgrader/latest/index"},{"group":"Getting Started","pages":[{"title":"Installation","href":"/docs/en/wuji-hand-upgrader/latest/installation"},{"title":"Connect Device","href":"/docs/en/wuji-hand-upgrader/latest/connection"}]},{"group":"Operations","pages":[{"title":"Firmware Upgrade","href":"/docs/en/wuji-hand-upgrader/latest/upgrade"}]},{"group":"Reference","pages":[{"title":"Troubleshooting","href":"/docs/en/wuji-hand-upgrader/latest/troubleshooting"},{"title":"Uninstall","href":"/docs/en/wuji-hand-upgrader/latest/uninstallation"}]}]},{"group":"Wuji Hand SDK","tag":"ARCHIVED","pages":[{"title":"Changelog","href":"/docs/en/wujihandpy/latest/release-notes"},{"sidebarTitle":"All pages","title":"Reading guide","href":"/docs/en/wujihandpy/latest/index"},{"group":"Getting Started","pages":[{"title":"Getting Started","href":"/docs/en/wujihandpy/latest/introduction"},{"title":"Tutorial","href":"/docs/en/wujihandpy/latest/tutorial"}]},{"group":"Reference","pages":[{"title":"API Reference","href":"/docs/en/wujihandpy/latest/api-reference"}]}]},{"group":"Wuji Retargeting","tag":"ARCHIVED","pages":[{"title":"Changelog","href":"/docs/en/wuji-retargeting/latest/release-notes"},{"sidebarTitle":"All pages","title":"Reading guide","href":"/docs/en/wuji-retargeting/latest/index"},{"group":"Getting Started","pages":[{"title":"Installation","href":"/docs/en/wuji-retargeting/latest/installation"},{"title":"Quick Start","href":"/docs/en/wuji-retargeting/latest/quick-start"}]},{"group":"Advanced","pages":[{"title":"Tuning Guide","href":"/docs/en/wuji-retargeting/latest/tuning"},{"title":"API Reference","href":"/docs/en/wuji-retargeting/latest/api"}]},{"group":"Reference","pages":[{"title":"Appendix","href":"/docs/en/wuji-retargeting/latest/appendix"}]}]},{"group":"Wuji MJLab","tag":"ARCHIVED","pages":[{"title":"Changelog","href":"/docs/en/wuji-mjlab/latest/release-notes"},{"sidebarTitle":"All pages","title":"Reading guide","href":"/docs/en/wuji-mjlab/latest/index"},{"group":"Getting Started","pages":[{"title":"Introduction","description":"In-hand cube reorientation on the Wuji Hand — PPO policies trained in mjlab that cover the full SO(3) goal space, with a sim-to-real bridge for closed-loop deployment on the physical hand.","href":"/docs/en/wuji-mjlab/latest/introduction"},{"title":"Installation","href":"/docs/en/wuji-mjlab/latest/installation"}]},{"group":"Training","pages":[{"title":"Training and Evaluation","description":"Train the reorient PPO policy, replay checkpoints, evaluate success rate, and export a trained policy to ONNX for deployment.","href":"/docs/en/wuji-mjlab/latest/training"}]},{"group":"Deploy","pages":[{"title":"Hardware Setup","href":"/docs/en/wuji-mjlab/latest/hardware"},{"title":"Sim-to-real Deployment","href":"/docs/en/wuji-mjlab/latest/sim2real"}]},{"group":"Reference","pages":[{"title":"Architecture","href":"/docs/en/wuji-mjlab/latest/architecture"}]}]},{"group":"MuJoCo Sim","tag":"ARCHIVED","pages":[{"title":"MuJoCo Simulation Example","href":"/docs/en/mujoco-sim/latest/index"}]},{"group":"Isaac Lab Sim","tag":"ARCHIVED","pages":[{"title":"Isaac Lab Simulation Example","href":"/docs/en/isaaclab-sim/latest/index"}]}]}]}]}]},"basePath":"","title":"Installation - Wuji Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["10e4515597"],"chunks":["BannerMarkdown-CX_qQQOL.js","dist-BTZUMDnx.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-xpJZXxdP.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}