vackOS 2 is running

The phone that lives in your browser

vPeng boots, asks your name, locks, unlocks and runs real apps. One HTML file. No install, no account, no internet needed. Your data stays on the device.

Works in Safari, Chrome and Edge · saves everything to localStorage · free
This is the real thing, live. Boot it, then tap through it.
⏻

An actual boot sequence

A real progress bar, then setup, then lock. It feels like unboxing a phone, not opening a page.

◆

Rearrange your home screen

Long press any icon and everything starts jiggling. Drag apps anywhere you like and your layout is remembered.

⤓

It remembers everything

Your name, notes, photos, account, wallpaper, bezel colour and app layout all persist. Close the tab, come back, still there.

▣

An app store inside the phone

The Downloader ships 12 working utilities. Install them onto your home screen, remove them whenever you like.

Apps

What is actually working

Every app below is real code, not screenshots. Notes save as you type, the calculator does the maths, the camera taps the real sensor, and Weather pulls live readings off the internet.

⚙️
Settings
account, bezel colour, wallpapers, home screen, battery
working
📞
Phone
full keypad, tap to dial, keeps your call log
working
🌐
Browser
Google search, plus Gmail, Images and Maps shortcuts
working
📷
Camera
real camera capture, flip lens, saves into Photos
working
🌄
Photos
grid, full view, delete one or delete all
working
📅
Calendar
real month grid, tap a day to add an event
working
⛅
Weather
live readings and a 4 day forecast, no key needed
working
📝
Notes & Clock
notes save as you type, world clock in 5 cities, stopwatch
working
💬
Messages
real threads, send a text and get a reply
working
🧮
Calculator
full arithmetic plus physical keyboard support
working
⬇️
Downloader
the app store. 12 utilities to install and remove
working
🎮
Gaming Center
4 games with scores, needs a vPeng ID first
working
Specs

vackOS 2 at a glance

Frame
390 × 844iPhone 14 Pro proportions
Storage
localStorageunder the vpeng_state_v1 key
Files
1 HTML fileno build, no dependencies
Modes
Desktop · Tablet · Mobileauto-detected, overridable
Island
120 × 35 pxexpands to full width on alerts
Tint
#0a84ffsystem blue throughout
Battery
Drains live1% every 90 seconds
Cost
Freeruns offline after first load
Build

How to add your own app

That is the whole point of vPeng. Adding an app is one entry in a list, plus one render function. Nothing else in the file needs to change.

Add it to the APPS list

Give it an id, a name, an icon, a colour gradient and whether it sits in the dock.

Write its render function

RENDER.yourid = (body, app) => { ... } gets the app body element. Put whatever HTML you want in it.

Save its data into state

Push into state.data and call save(). It persists automatically.

// 1. the app appears on the grid
{ id:'timer', name:'Timer', icon:'⏱', color:'linear-gradient(160deg,#ff9f0a,#c10f36)' }

// 2. the app does something
RENDER.timer = (body) => {
  body.innerHTML = `<button class="ios-btn" id="go">Start</button>`;
  body.querySelector('#go').onclick = () => {
    state.data.timers.push({ id: uid(), at: Date.now() });
    save(); // 3. it is now permanent
    toast('timer started');
  };
};
Ready

Boot it up

The demo opens on its own page so you can resize it, bookmark it, or drop it on your phone home screen.

Camera and microphone need a localhost origin. To run it locally:
cd vpeng-web
python3 -m http.server 8080
# then open http://localhost:8080