TuyaOS
AI Coding Your Next Gen. Hardware — The all-in-one VS Code extension for building AIoT and Agentic AI devices on the TuyaOS platform.
English | 简体中文

Why TuyaOpen IDE?
Building connected hardware is hard. TuyaOpen IDE removes the friction — from first prototype to production firmware — all within your favorite editor.
- Zero setup — SDK, toolchain, and environment configured automatically
- AI-native workflow — Skills system integrates with Cursor and Claude Code for build, flash, and project workflows via natural language
- Full-stack IoT — Embedded firmware + Miniapp + Tuya Cloud in one project
- China-friendly — Gitee mirrors and jsDelivr CDN for fast downloads behind the GFW
Features
Project Management
Create, import, and manage TuyaOpen projects in seconds. Multi-surface architecture scaffolds both embedded firmware and miniapp code from a single template.
Hardware Catalogue
Browse 50+ supported boards and chips with pinouts, specs, and one-click project creation. Filter by brand, connectivity, or chip family.
One-click SDK install with automatic environment bootstrapping. Switch between SDK versions, manage git mirrors, and open pre-configured terminals — no manual PATH configuration needed.
AI Skills for Embedded Development
Install coding skills that teach your AI assistant (Cursor / Claude Code) how to:
- Build firmware for your target board
- Flash to connected devices
- Pair devices to the Tuya cloud
- Configure project settings and data points
Sign in to the Tuya IoT Platform directly from VS Code. View and manage:
- Product details and data points
- Panel configurations
- Device authorization codes (UUID + AuthKey)
Library Browser
Explore the TuyaOpen component library and TuyaOS ecosystem. View dependencies, versions, and documentation links before adding to your project.
Getting Started
- Install the extension from the VS Code Marketplace
- Open VS Code / Cursor and look for the TuyaOpen IDE panel in the sidebar
- Create a project — Click "New Project", pick a board, and start coding
- The SDK will be cloned and configured automatically in the background
That's it. No terminal commands, no manual environment setup.
Development & Common Commands
This section is for contributors building the extension from source. The
extension itself configures the SDK and its toolchain through the UI, so end
users normally do not need to run these commands.
Prerequisites
- Node.js 24 (the version used in CI) and npm
- Git, including Git submodule support
- VS Code or Cursor for running the Extension Development Host
First-time setup
Clone with submodules, then install the development dependencies. If the
repository was already cloned without submodules, run the second command
instead.
git clone --recurse-submodules <repository-url>
cd tuyaopen_ide
npm install
git clone --recurse-submodules <repository-url>
Set-Location tuyaopen_ide
npm install
git submodule update --init --recursive
git submodule update --init --recursive
Use npm ci rather than npm install when you need a clean, lockfile-exact
dependency install (for example in CI). It removes and recreates
node_modules.
Everyday commands
All commands in this table work in Bash, PowerShell, Command Prompt, and the
integrated terminal unless noted otherwise.
| Command |
What it does |
When to use it |
npm run compile |
Cleans out/, prepares the bundled Developer Platform CLI, and compiles TypeScript. |
Before F5, after pulling changes, or before packaging. |
npm run watch |
Compiles TypeScript incrementally as files change. |
During active extension development. Press Ctrl+C to stop. |
npm run clean |
Removes generated out/ files. |
When a build looks stale or before a fully clean compile. |
npm run lint |
Type-checks the extension without generating files. |
Fast feedback before committing. |
npm run test:unit |
Runs the Vitest unit-test suite once. |
Verify a change locally. |
npm run test:unit:watch |
Keeps the unit-test runner open and reruns related tests on changes. |
Test-driven development. |
npm run test:typecheck |
Type-checks test sources. |
When changing tests or test helpers. |
npm test |
Runs the repository test orchestrator (test type-check plus unit tests). |
The normal pre-push verification. |
npm run package |
Compiles and creates a .vsix extension package under release/. |
Test an installable extension artifact. |
npm run package:list |
Lists the files that would be included in the VSIX. |
Check packaging contents without creating a package. |
To run the extension locally, open this repository in VS Code or Cursor,
start npm run watch in one terminal, then press F5. This opens an
Extension Development Host where you can exercise the change.
Product-line builds
The default checkout is the TuyaOpen product line. These commands bake the
selected product configuration into the working tree before compiling. Run
the matching watch command if you want to develop that line continuously.
| Command |
What it does |
npm run bake |
Build the default TuyaOpen product line. |
npm run bake:tuyaos |
Build the TuyaOS product line. |
npm run watch:tuyaopen |
Bake TuyaOpen, then keep TypeScript compiling on changes. |
npm run watch:tuyaos |
Bake TuyaOS, then keep TypeScript compiling on changes. |
These commands modify generated product files and package.json. Before
committing a normal TuyaOpen change, restore the default line with
npm run bake.
PowerShell environment variables
Most npm run commands are identical across shells. The important difference
is temporary environment variables: Bash places the assignment before the
command, while PowerShell assigns through $env:.
For example, packaging one product line's assembled webview:
TUYAOPEN_ASSEMBLE_WEBVIEW_LINE=tuyaos npm run package
$env:TUYAOPEN_ASSEMBLE_WEBVIEW_LINE = 'tuyaos'
npm run package
Remove-Item Env:TUYAOPEN_ASSEMBLE_WEBVIEW_LINE
The environment variable is optional; a plain npm run package keeps the
default packaging behavior. Scripts named sync:miniapp-vendor and
sync:vendors call Bash directly, so run those from WSL, Git Bash, or another
Bash-compatible shell rather than Windows PowerShell.
| Platform |
Status |
| Windows 10/11 |
Fully supported |
| macOS (Intel & Apple Silicon) |
Fully supported |
| Linux (x64) |
Fully supported |
| WSL (from Windows host) |
Supported |
Settings
Access settings from the TuyaOpen IDE panel → Settings page, or via VS Code Settings (Ctrl+,).
| Setting |
Description |
| Workspace Root |
Where projects, SDK, and dependencies live |
| Language |
UI language (Auto / English / 简体中文) |
| Theme |
Follow editor, or force light/dark |
| Git Mirror |
GitHub or Gitee for SDK downloads |
| Manifest Source |
Where to fetch board/demo catalogs from |
| Auto Clone SDK |
Automatically set up the SDK on first launch |
Works with Cursor & Claude Code
TuyaOpen IDE's Skills system was designed for AI-assisted embedded development. When paired with Cursor or Claude Code, your AI assistant gains domain knowledge about:
- TuyaOpen SDK APIs and project structure
- Build system commands and target configurations
- Device authorization and cloud registration
- Hardware pin definitions and peripheral setup
Simply install Skills from the IDE panel and your AI assistant is ready to help you write firmware.
Requirements
- VS Code 1.85+ or Cursor (any recent build)
- Git (for SDK management)
- Python — managed automatically by
uv; the SDK's export script downloads uv and a pinned Python on first run, so no system Python install is required
Data & Privacy
TuyaOpen IDE is built to be transparent about what leaves your machine:
- No automatic data collection — no third-party analytics or telemetry SDKs,
no background phone-home.
- Consent first — on first run a welcome agreement gates all network
activity. Nothing (SDK clone, catalogue/skill download, MiniApp runtime) is
fetched until you accept. Decline and the extension stays fully local.
- Your code stays local — source file contents are never transmitted.
- Credentials stay local — Tuya sign-in is stored only on your machine
(
~/TuyaOpenIDE/.tuyaopen/credentials.json, mode 0600, plus the editor's
encrypted SecretStorage) and sent only to Tuya's own hosts.
- Feedback is opt-in — diagnostic reports upload to
tuyaopen.ai only when
you use Send Feedback and confirm what's included.
Endpoints contacted (only when you use the related feature, and SDK/catalogue/
runtime downloads only after consent): GitHub / Gitee (SDK + catalogues), the
npm and PlatformIO registries and nodejs.org (toolchain), and Tuya hosts
(auth.tuya.com, platform.tuya.com, wind-ide.tuyacn.com,
miniapp-ark-ide.tuyacn.com, images.tuyacn.com, tuyaopen.ai).
Full details: PRIVACY.md ·
Feedback Data Collection Notice ·
Tuya Privacy Policy ·
Tuya Service Agreement. These are also
viewable in-IDE at Settings → About → Terms & Privacy.
License
Apache License 2.0