원문 캡처 · github.com
원문 캡처 · github.com

Native Shell(NSH)은 Rust와 TSX로 앱을 만들고, iOS·Android·데스크톱·웹에서 각 플랫폼의 UI로 렌더링하는 런타임이다. 기존 앱에 삽입하거나 독립 앱으로 패키징할 수 있으며, TSX 화면을 서명된 패키지로 실행 중에 전달하는 기능도 제공한다.

앱은 Rust, TSX 또는 두 언어를 함께 사용해 작성할 수 있다. TSX 화면은 Rust 컴포넌트와 모듈을 가져올 수 있고, 실행 중 업데이트를 적용할 때 상태를 유지한다. 호스트 앱은 전달된 TSX 모듈을 플러그인처럼 불러오며, 실행 권한을 호스트가 설정하는 샌드박스에서 실행한다. AI가 생성하는 화면을 위해 TSX와 Tailwind, 생성된 TypeScript 선언, 모델이 읽을 수 있는 문서도 지원한다.

플랫폼별 렌더링과 삽입 방식은 다음과 같다.

플랫폼렌더링삽입 방식요구 조건
iOSUIKit, CoreTextNshAppView (Swift, NativeShell.xcframework)iOS 15+
AndroidAndroid views, StaticLayoutNshView (Java / Kotlin, nsh.aar)Android 9 (API 28)+
macOSAppKit, Core Animation, CoreTextAppView (Rust, nsh-platform-macos)macOS 14+
WindowsWin32, Direct2D, DirectWriteAppView (Rust, nsh-platform-windows)Windows 10 1809+
LinuxGTK 4, PangoAppView (Rust, nsh-platform-linux)GTK 4.14+
GPUI (macOS, Windows, Linux)GPUI (GPUI Fast)AppView (Rust, a GPUI view, nsh-platform-gpui)macOS, Windows; Linux with Vulkan
WebHTML, CSScreatePlayer (JavaScript) 또는 iframe최신 브라우저

GPUI 백엔드는 세 데스크톱 플랫폼에서 GPUI로 앱을 그리며 GPUI 및 GPUI Kit 앱에 삽입할 수 있다. 웹 플랫폼은 앱을 정적 사이트로 배포하고 웹 데모를 실행한다.

설치와 실행

nsh 명령은 다음 방법으로 설치할 수 있다. 다른 설치 방법은 설치 문서에서 확인할 수 있다.

sh
curl -fsSL https://nsh.dev/install.sh | sh
sh
brew install longbridge/tap/nsh
powershell
irm https://nsh.dev/install.ps1 | iex

앱은 Rust 또는 TSX 템플릿으로 시작할 수 있다. Rust 템플릿에는 src/lib.rs를 루트 컴포넌트로 하는 Cargo 프로젝트가 포함된다. TSX 템플릿에는 App.tsx, nsh.json, tsconfig.json이 들어가며, 편집기용 TypeScript 선언은 .nsh/types에 생성된다. Rust 프로젝트에는 Rust 설치 도구 체인이 필요하고, TSX 프로젝트에는 nsh만 필요하다. 두 방식을 섞어 쓸 수도 있다.

sh
nsh init my-app --rust
sh
nsh init my-app

실행 대상은 --target으로 지정한다. iOS 시뮬레이터에는 Xcode가, Android 에뮬레이터나 기기에는 Android SDK가 필요하다. 플랫폼별 도구 요구 사항은 설치 안내에 나와 있다.

sh
nsh run my-app --target ios # iOS simulator; requires Xcode
nsh run my-app --target catalyst # Mac Catalyst window on macOS
sh
nsh run my-app --target android # emulator or device; requires the Android SDK
sh
nsh run my-app --target macos # AppKit window
sh
nsh run my-app --target windows # Win32 window
sh
nsh run my-app --target linux # GTK 4 window
sh
nsh run my-app --target gpui
sh
nsh run my-app --target web # open in the browser

문서와 가이드, 라이브 데모는 nsh.dev에서 볼 수 있다. 저장소에는 UI 요소를 둘러보는 갤러리, 최소 앱인 카운터, 대시보드, 데스크톱 앱, 기존 iOS·Android 앱에 삽입하는 예제 등이 있다. NSH는 Apache License 2.0으로 배포된다.