native-sdk
vercel-labs/native
Complete toolkit for building native desktop applications with TypeScript and declarative Native markup.
What is native-sdk?
The Native SDK is a framework for authoring native desktop apps in TypeScript with declarative .native markup files, compiled to native code with no JS runtime in the binary. Use it when building desktop applications, configuring app manifests, authoring native UI, adding bridge commands, or testing running apps.
- Compile TypeScript app logic and declarative Native markup to native binaries without a JS runtime
- Author native UI with .native files and TypeScript core logic in src/core.ts
- Support Zig as an explicit first-class alternative app-core template
- Embed WebViews as an optional path for web content or existing web frontends
- Include a deterministic automation server in every app for snapshot, drive, and screenshot capabilities
- Package and test running applications with built-in tooling
How to install native-sdk
npx skills add https://github.com/vercel-labs/native --skill native-sdk- Node.js and npm installed
- @native-sdk/cli installed globally (npm install -g @native-sdk/cli)
How to use native-sdk
- 1.Run `native init my_app` to scaffold a new Native SDK project
- 2.Navigate to the project directory and inspect app.json, src/app.native, and src/core.ts
- 3.Run `native dev` to start the development server and test the app locally
- 4.Edit .native files for UI markup and src/core.ts for application logic
- 5.Use `native skills list` and `native skills get <skill>` to load detailed documentation for specific features
- 6.Run `native build` to compile the app to a native binary for distribution
Use cases
- Building a cross-platform desktop application from scratch with native performance
- Converting an existing web frontend to a native desktop app using WebView embedding
- Creating a Zig-based native app core for performance-critical desktop software
- Testing and automating a running Native SDK app via the built-in automation server
- Configuring app manifests (app.json or legacy app.zon) and managing app metadata
- Desktop application developers
- TypeScript developers building native apps
- Teams migrating web frontends to native desktop
- Developers requiring high-performance native binaries without runtime overhead
native-sdk FAQ
The primary path is TypeScript app logic in src/core.ts combined with declarative Native markup in .native files. The TypeScript is checked and compiled ahead of time to native code.
No. The shipped binary contains no browser, WebView, JS runtime, or interpreter by default—only compiled native code.
Yes. Zig is a first-class, explicitly chosen alternative via the --template zig-core flag when initializing an app.
WebView surfaces are the optional path for embedding web content or hosting an existing web frontend alongside native UI.
Every app embeds a deterministic automation server that allows agents to snapshot, drive, and screenshot the running window for testing and automation.
Full instructions (SKILL.md)
Source of truth, from vercel-labs/native.
name: native-sdk description: Discovery skill for the Native SDK, the complete toolkit for building native desktop applications. Apps are authored in TypeScript + declarative Native markup (.native) by default and compiled to native code with no JS runtime in the binary; Zig cores are an explicit alternative, and WebViews are the optional web-content path. Use when the user asks what the Native SDK is, how to build a Native SDK app, author native UI, scaffold an app, configure app.json or legacy app.zon, add bridge commands, embed web content, package an app, test a running app, or automate a Native SDK app. allowed-tools: Bash(native:), Bash(npx @native-sdk/cli:) hidden: true
Native SDK
The Native SDK is the complete toolkit for building native desktop applications. The primary authoring path is TypeScript app logic in src/core.ts plus declarative Native markup in .native files. The TypeScript core is checked and compiled ahead of time to native code, so the shipped binary contains no browser, WebView, JS runtime, or interpreter. Zig is how the toolkit itself works and is a first-class, explicitly chosen app-core alternative (--template zig-core); it is not the default inferred from the SDK's implementation. Every app embeds a deterministic automation server, so agents can snapshot, drive, and screenshot the running window. Desktop is the mature surface (macOS deepest, Linux and Windows exercised in CI); mobile embedding is experimental. WebView surfaces coexist as the optional path for embedding web content or hosting an existing web frontend.
Start here
This file is a discovery stub for agents that installed the Native SDK once with a skills installer such as npx skills add native-sdk. Before implementing or explaining Native SDK app work, use the installed CLI to discover and load the current skill content:
native skills list
native skills get core
native skills get native-ui
native skills get ts-core
Use native skills get core for initial orientation. For the default app-authoring path, load both native-ui (views, bindings, the app loop) and ts-core (the TypeScript subset, effects, subscriptions, and modules) before implementing. Load ts-services too when the tree has src/services/ or ordinary TypeScript needs filesystem/process/JSON/regex/Map/Date/class work behind Cmd.request. Use native skills get core --full when work reaches lower-level runtime wiring, WebViews, bridge/security, native capabilities, packaging, or debugging. Use native skills get automation when testing a running app, taking snapshots, requesting reloads, or using the built-in automation server. Use native skills get zig only for an existing Zig core, a toolkit extension, SDK implementation work, or a Zig 0.16 compile error.
Quick orientation
npm install -g @native-sdk/cli
native init my_app
cd my_app
native dev
native init my_app generates the primary three-file app: app.json, src/app.native (the markup view), and src/core.ts (Model, Msg, update). Existing app.zon manifests remain supported. Inspect the tree before editing an existing app and preserve the core language it already uses. src/main.zig means the app explicitly uses the Zig-core template; web-frontend shells additionally carry frontend/ and usually owned build/runtime wiring.
Related skills
More from vercel-labs/native and the wider catalog.

next-browser
CLI that exposes Next.js component trees, props, hooks, PPR shells, and network data as shell commands for agents.

next-best-practices
Next.js best practices reference for file conventions, RSC boundaries, data patterns, and optimization.

next-cache-components
Enable Partial Prerendering in Next.js 16 with static, cached, and dynamic content mixing.

opensrc
Fetch dependency source code to give AI agents deeper implementation context.

oauth
Configure OAuth providers to work with portless local dev URLs, fixing redirect URI mismatches.

portless
Replace port numbers with stable, named .localhost URLs for local development.