I build AI tools that do their work in the browser — free to use, private by default, and cheap enough to keep running whether or not there is funding this month. Founder of SalluLabs.
Selected work04 — 2025 / 2026
Pasted text
The results demonstrate a significant improvement across all evaluated metrics. Furthermore, it is important to note that these findings align with prior work in the field…
92%likely AI-generated
sallu-detector · quantised ONNX · runs in your browser
SALLULABSFIVE TOOLS — ONE ACCOUNT
the free tools run inside your browser — your files are never uploaded anywhere
Engineering — platform
The platform first.
02 flagship · 02 backend 04 tools · 07 archive
SALLULABS.COM — LIVE
01
SalluLabs
Background removal, object and watermark removal, upscaling, colourisation and restoration — five tools on one account, built on one rule: if a model is small enough to run inside your browser, it runs there. Your files stay on your machine, the free tools cost nothing to run, and nothing goes dark if a bill goes unpaid.
the free tools run in your browser · nothing is uploaded heavy jobs reach a GPU only when you ask for one
A full video editor that never sees your video. Whisper transcribes in a worker thread, you trim and style on a real timeline, and the animated captions are muxed straight to MP4 in the browser. Competitors charge every month and upload your footage; this is one payment and nothing leaves the device.
transcribe, trim, style and export to MP4 at 4K without uploading a single frame
Small services and models where the interesting part is a measurement, so each one publishes the numbers — including the unflattering ones.
Vosk · livespeaker die rise asian
Whisper · committedspeaker diarization
final RTF 0.47 · A10G tier · 7.8 s fixture
Streaming transcription
Live speech over a WebSocket. Vosk streams the words as they are said; Whisper commits the accurate line afterwards, and an arbiter decides which to trust — Whisper alone kept replacing a correct word with a worse one on accented speech. The GPU tier is a per-session toggle so an idle page never burns credits, and every remote failure falls back to the laptop.
first word ~0.6 s on a 2-core laptop CPU · committed line 4.5 s → 1.6 s on the GPU tier · the only configuration that keeps up with real time · speaker labels are not built yet
A 2.3 MB model that reads six-character text captchas on a laptop CPU, punctuation included — the one thing commercial OCR and every public dataset skip. Trained on public data plus a domain-randomised generator, because real captures could not be collected at scale.
97.1 % on 104 real captchas never used for model selection · CapSolver reads 26.6 % of the same family and 0 of 101 containing a special character · one captcha family, so no general claim · ~36 ms median, one thread
Connects two strangers peer to peer for a conversation. No accounts, no history.
WebRTC · WebSocket
Music for the Deaf
Android app translating audio into haptic patterns.
Kotlin · Android
Design — brand sites
Eight brand sites I designed and built end to end — the art direction, the AI-generated imagery and film, and the code that makes it move as you scroll. Open any one to explore it, or press Watch the tour for the short version.
Kashida · The Needle
Balochi hand embroidery from Makran, as a site where the thread is the interface. An unbroken zoom from the whole garment down into a single stitch, then a thread that runs under the photographs and ends by embroidering the name, right to left, and tying a knot.
the video model could not connect the stills, so the macro end is a true digital zoom the stills are aligned back onto · nine cloth-and-thread colourways · self-hosted Nastaliq
A headphone you take apart with your scroll. The whole object is a cloud of 110,000 points: noise condenses into the wordmark, flows into the headphone, explodes into its anatomy, collapses into the driver, then becomes a sound field that answers a generated ambient piece.
real-time three.js with no model file — the points are sampled from a depth-projected still · no licensed audio · a slow laptop gets a cheaper renderer that keeps the same brightness · 4 MB
A house cut four terraces into a quarry, sold the way architects actually sell — the page is a drafting table. A plan inks itself, lifts into an axonometric you can drag, extrudes into the building, then dissolves into the photograph it was traced from and walks you in.
four volumes in metres, projected live — the axonometric is data, not a picture · 248-frame walk-in · the photo came first, so the drawing registers on it
A Kyoto townhouse as one unbroken walk from the lane outside to the bath at the back. Seven thresholds, no cuts, no sections — how far into the house you are is the navigation.
672-frame scrub · seven clips pinned at both ends, so each seam is the same picture twice · 28 metres in one shot
A watch house in six acts: the movement comes apart, goes back together, and is taken down to the water. The page inverts with the film — bone ground for the disassembly, black for everything after — so the chrome belongs to the act you are in rather than to the site.
five scrubbed sequences · self-hosted type, because the CDN cut measured 4.8s on this connection · frames cached immutable, code never
A car showroom where scrolling drives the car. Configure the paint and wheels, filter the chassis that are actually available, run the finance numbers and book a viewing. The film is how you move through it — not what it is.
A hundred-bottle perfume edition. Two scrubbed sequences — the bottle you turn, and the halo it sits inside — six notes you open one at a time, and a case that numbers the flacon you would be sent.
218 scrub frames across two sequences · four clips · 13 MB, no frameworks
Three Android apps I designed and built in Kotlin and Jetpack Compose. Each demo is a screen recording from a real phone, not a mockup.
SalluLabs · AI photo studio
The flagship app: nine AI photo tools in one black-and-gold studio. Cut out a background, erase objects and watermarks, restore and colorize old photos, replace the sky, then finish with one of 58 film grades and share. Every result has a before-and-after slider.
Kotlin · Jetpack Compose · fast tools run on the phone, pro tools on our own GPU services
A prayer-time app where the sky is the interface. The background is the real sun at your location, the day is one orbit you can scrub with a finger, and the Qibla compass guides you with haptic pulses. A month table, per-prayer adhan and alerts, Hanafi or standard Asr.
Kotlin · Jetpack Compose · the sky is drawn live from the sun’s position · your location never leaves the phone
Offcut · Clothing store
A clothing store that styles every piece with what you already own. Photograph your own clothes and they are cut out on the phone; the new drop hangs on a rail you swing, add to bag is a drop into a tote, and a delivered order joins your closet with the white edge that marks it yours.
an on-device cutout model, nothing uploaded · the rail tilts with the phone’s gravity sensor · 16 product shots generated for 7 cents
Games — real-time 3D
A complete open-world 3D game that runs in a browser tab. No engine, no install, no build step. Play it, or read the source.
Sallu Theft Auto · Web Edition
An open-world driving game where the police hunt the car they were told about, not the car you are in. Pedestrians remember what they saw: commit a crime alone and nothing happens; do it in a crowd and a witness reports your car, sometimes in the wrong colour. Change cars and the manhunt chases a description that no longer fits. Walk up to anyone and ask what they saw.
three.js · hand-written slip-angle vehicle physics, no physics library · skinned characters with procedural gait · 26 pedestrians in 10 draw calls · synthesized engine, tyres and music · textures by FLUX.2, meshes by Hunyuan3D · ~8 MB
Every tool asks the same question first: can this run on the machine the user is already holding?
If it can, it runs there. That makes the tool free to use, keeps the user’s files on their own disk, and — the part that matters most to me — means it costs nothing to serve. A tool that costs nothing to serve does not switch off in a month when there is no money to pay for idle hardware.
Most AI products upload your file to someone else’s GPU and bill by the second. That is two problems wearing one coat: your files leave your machine, and the product only exists while somebody keeps paying. So the free tiers here use models small enough to ship to the browser — a 5 MB upscaler, a 4 MB cutout model, Whisper, my own text detector. Only the heavy jobs reach a GPU, and only when you ask for one.
I work end to end: the model choice, the queueing and the deployment as much as the interface on top. Available for freelance and contract work.
On-device ML
Picking, quantising and shipping models small enough to run in a browser tab without a server behind them.
ONNX Runtime · onnxruntime-web
transformers.js · Whisper
BiRefNet · U2Net · RealESRGAN
Model training and quantisation
Product engineering
The unglamorous half: auth, credits, payments, webhooks, rate limits and the queue that stops it falling over.
Next.js · React · TypeScript
Flask · Node · Express
Firebase · Firestore · Postgres
Stripe · Gumroad · Payhip
Interface
Front ends built without frameworks when a framework would only add weight — and with one when it earns its place.
Canvas, WebGL and scroll-driven UI
Design systems and tokens
Accessibility and Core Web Vitals
Kotlin · Android
Contact
Tell me what you’re building.
Whether it is an AI tool you want running without a server bill, a product that needs finishing, or a site that has to feel like something — send me the shape of it and I will tell you honestly whether I am the right person.