⚡ v0.1.0 out now · macOS · Windows & Linux in beta

Native apps have never been this easy.

A tiny desktop companion for tinyjs — create apps from templates or wrap any website into a real ~6 MB desktop app, all from one native window. No terminal. No Electron.

  • ~6 MBa wrapped app
  • 0Electron, bundled browsers
  • 3platforms targeted
TinyJS App Studio — the workspace with projects sidebar, live preview and the Wrap panel
menu bar app frameless UA : iPhone live logs ▍

apps, not tabs

What will you ship today?

Three kinds of tiny desktop apps, one window to make them.

my-app

The from-scratch app

tinyjs new, minus the terminal — zero-dependency vanilla templates, or a Vite setup with React, Vue, Svelte or Solid, TypeScript included.

vanillavitets
wrapped-site

The wrapped site

Paste a URL, hit Wrap site — any website becomes a real desktop app with its own icon, downloads and popup handling.

any URLown icon~6 MB
menubar.app

The menu-bar app

Lives in the system tray. Click the icon and your site drops down in a panel under it — or opens as an ordinary window. Always on top if you like.

traydropdown panelalways on top

the tour

Scroll. Watch it work.

Real windows, captured live — the same Studio you'll be using.

The Wrap tab — the preview mirrors every window option

01 · wrap

Wrap any site

Paste a URL and pick your window modes — frameless, buttons, menu bar — the preview mirrors every option live. Hit Wrap site and a ~6 MB desktop app comes out the other end.

live previewwindow modesown icon
A wrapped GitHub profile in a frameless native window

02 · real windows

Really wrapped, really native

The result is an ordinary desktop window — frameless or not — with whatever chrome you configured. Not a browser tab with delusions of grandeur.

native windowdownloadspopups handled
Menu-bar mode — the wrapped site opens under its tray icon

03 · menu bar

Menu-bar apps, live

Menu-bar mode puts a tray icon in the system menu bar. Click it and your site drops down in a panel anchored under the icon — or opens as a normal window, your call.

tray icondropdown paneltray click → window
A GitHub profile pinned above everything in an always-on-top dropdown panel

04 · one click away

Always one click away

Always-on-top plus dropdown panel means the site is just there — a GitHub profile, a dashboard, a docs page — pinned above everything else you're doing.

always on toppanel modeUA presets
The file offcanvas — index.html open in the CodeMirror editor

05 · the offcanvas

A real editor in there

Click a file in a project's tree: code opens in CodeMirror 6 — line numbers, folding, syntax highlighting — edit and save without ever leaving the Studio.

CodeMirror 6edit & saveimages preview
iPhone user-agent preset — the preview becomes a phone frame

06 · iphone mode

See mobile before you wrap

The iPhone user-agent preset also reshapes the preview into a phone frame — check the mobile layout before you commit it to a desktop app.

phone frameUA presets

under the hood

Everything in one place.

Sidebar, stage, inspector — with the CLI narrating every step.

Projects, files, previews

A projects sidebar with a file tree per project, a live preview stage, a config inspector. Click an image in the tree — it previews right there, generated icons included.

A generated icon previewed from the file tree

Live logs

Every line of tinyjs dev and tinyjs build streams into the window as it happens.

The per-origin gate

Wrapped pages get no access to your machine beyond their own window and dialogs — that line is drawn by tinyjs' per-origin API policy, and the Studio just stays honest about it.

▶ run⌘ build■ stop⧉ duplicate⌕ reveal

Drive the CLI

All the project actions — one click each, on the selected project.

Bring your own folder

Point the Studio at any tinyjs project anywhere on disk — it joins the sidebar with all its actions, and nothing gets moved.

📁 Open existing project…

get it

Two ways in.

Download the app

v0.1.0 ships a signed .app for macOS, plus Windows and Linux builds — beta platforms of tinyjs itself.

● macOS○ Windows — beta○ Linux — beta
Latest release →

Run it from source

$ git clone https://github.com/slabbdev/tinyjsapp-studio
  $ cd tinyjsapp-studio
  $ tinyjs dev

Zero setup: on first launch the Studio offers to install the tinyjs CLI itself — the official installer, one click, streamed in the console. wrap is brand new: until it lands in a tinyjs release the Wrap tab waits (Create / Run / Build work), and devs can point TINYJS_BIN at a checkout.