Meshless logomeshless
DocsPricingChangelogContactWaitlist
Sign inGet Early Access
Join Beta
Meshless logomeshless

Theft-proof 360° viewers for e-commerce. Built for engineers who care about LCP.

All systems normal · v0.0.1

Product

  • Overview
  • Pricing
  • Changelog
  • Roadmap

Developers

  • Docs
  • API reference
  • Status

Company

  • About
  • Waitlist
  • Contact

Legal

  • Terms
  • Privacy
  • Security
  • DPA
© 2026 Meshless, Inc.v0.0.1
v0.0.1
.glb·.gltf·.stl

Your 3D mesh
is exposed.
Not with Meshless.

Upload any .glb, .gltf, or .stl — Meshless encodes it into WebP image sequences server-side. Shoppers see a 360° spin. Competitors get 404.

Join the Beta See how it works
0.82sMedian LCP
97 KBMedian payload
360max frame per model
aurorawatches.com/watches/aurora-mark-iii
Visitor's browser
aurora-watch.glb
3.24 MB · 142k tris · BinaryDataMesh
stays here
decode + render · 240ms
meshless.encoder()
frame 26 / 36 · 1024² · WebP q=85
in-page
ship · WebP frames only
36 × .webp
412 KB total · 11 KB / frame avg
public-safe
← Network edge →
The .glb never crosses this line. Only WebP bytes leave your origin.
WHAT VISITORS GET ↓
36 × WebP
0.glb leaks ever|97 KBMedian payload|0.82sMedian LCP|max frame per model360|120msTime to first spin|8 KBJS runtime|36WebP frames / model|99.98%Uptime|0IP incidents reported|47CDN regions|0.glb leaks ever|97 KBMedian payload|0.82sMedian LCP|max frame per model360|120msTime to first spin|8 KBJS runtime|36WebP frames / model|99.98%Uptime|0IP incidents reported|47CDN regions|0.glb leaks ever|97 KBMedian payload|0.82sMedian LCP|max frame per model360|120msTime to first spin|8 KBJS runtime|36WebP frames / model|99.98%Uptime|0IP incidents reported|47CDN regions|
ANATOMY · ZERO-TRUST 3D

Three steps. The mesh stays put for all of them.

No build server. No WebGL on the page. Just a tight encoder that runs inside Meshless cloud infrastructure.

STEP 01 · Upload

Drop a .glb, .gltf, or .stl in the dashboard. We encrypt it at rest.

Your file is AES-256 encrypted before it touches our storage. The unwrap key is split: half stays with you, half with the embed token. Either side alone is useless.

POST /v1/models
Content-Type: application/octet-stream

# returns:
{ "id": "9KQa3p", "wrap_key": "..." }
STEP 02 · Server-side encode

Our cloud renders 36 WebP frames — no WebGL context in the visitor's browser.

The encoder runs entirely in Meshless infrastructure. No client-side JavaScript processes the mesh. The visitor's tab never sees the geometry — only the output frames.

// embed.meshless.io runtime
const enc = new Meshless.Encoder({
  frames: 36,
  size:   1024,
  format: 'webp',
});
await enc.run(); // ~240ms
STEP 03 · Cache + serve

Frames hit CDN. Every spin after the first costs zero compute.

Each frame is content-addressable. After the first viewer, your CDN serves plain images — no encoder runs. PageSpeed sees an image carousel; competitors see no geometry at all.

# what the CDN serves
GET /v/9KQa3p/01.webp   · 11.4 KB200
GET /v/9KQa3p/02.webp   · 11.2 KB200
GET /v/9KQa3p/03.webp   · 11.6 KB200
# ...
FEATURES · WHY MESHLESS

Built for teams that can't afford leaks.

Security without the WebGL tax. Ship 360° product viewers that load faster than a JPEG while keeping your geometry completely off the wire.

Geometry never leaves the vault

Your .glb is AES-256 encrypted at rest with per-account wrap keys. The file is server-side rendered to WebP — it never transits the network. Competitors get pixels, not geometry.

AES-256 encrypted at rest
Zero-trust pipeline
curl /source.glb → 404
Performance
0.82s
Median LCP — vs 2.1s with WebGL
97 KB
Payload
120ms
First spin

Works without WebGL

The output is a plain image sequence. Any browser, any device — even SEO crawlers see real image content.

ChromeSafariFirefoxEdgeMobile

CDN-cached forever

Frames are content-addressed. After the first encode, your CDN serves pure images — zero encoder overhead on every subsequent load.

One endpoint to rule them all

POST /v1/models
Authorization: Bearer sk_live_...
Content-Type: application/octet-stream

← 200 { "id": "9KQa3p" }
← frames ready in 240ms
PROOF · OPEN DEVTOOLS, FIND NOTHING

This is everything a thief gets when they View Source.

Real screenshot mock of the Network panel on a live Meshless embed. Every byte that leaves is a static image. The mesh is unrecoverable.

chrome-devtools://embed.meshless.io/v/9KQa3p
RECORDING · 36 REQUESTS
NameSizeTypeStatus
embed.htmldocument2.4 KBhtml200
player.jsscript8.1 KBjs200
01.webpimage11.4 KBwebp200
02.webpimage11.2 KBwebp200
03.webpimage11.6 KBwebp200
04.webpimage11.5 KBwebp200
05.webpimage11.3 KBwebp200
06.webpimage11.7 KBwebp200
…—
36.webpimage11.2 KBwebp200
aurora-watch.glbnever sent——blocked

What's in the bundle

37 requests · 412 KB total · 0 ms blocked by client.
Every successful response is a static image or a vendored player script.

What's NOT in the bundle

No .glb. No .gltf. No vertex buffers. No textures.
The encoder ran in a worker, dumped its canvas, and exited. Nothing it touched is reachable from window.

Try it yourself

$ curl -I https://embed.meshless.io/v/9KQa3p/source.glb
HTTP/1.1 404 Not Found
ARCHITECTURE · ZERO-TRUST PIPELINE

What leaves the vault. What doesn't.

Engineers ask how this actually works. Here's the full pipeline — where the mesh lives, where rendering happens, and what crosses the wire.

SECURE VAULTSTAYS HERE
model.glb
AES-256 · per-account wrap keys
  • 3.2 MB avg. geometry + textures
  • Encrypted at rest, key split in two
  • Never sent to any browser
server-side render · 240ms
server-side render · 240ms
RENDER ENGINEIN-CLOUD
Server-side encoder
36 frames · 1024² · WebP q=85
  • Runs entirely in Meshless cloud
  • No client-side WebGL context
  • Output content-addressed to CDN
NETWORK EDGE
NETWORK EDGE
VISITOR BROWSERPUBLIC SAFE
36 × .webp
412 KB total · signed CDN URLs
  • Zero recoverable geometry
  • No .glb in DevTools Network tab
  • curl /source.glb → 404 Not Found

The .glb file never crosses the network boundary. Visitors receive only WebP pixels. Your geometry is unrecoverable from DevTools, curl, or any client-side tool.

VS · THE ALTERNATIVES

Compared to every other way to ship 360°.

Honest matrix. We're great at four things and we're upfront about the fifth.

MeshlessWebGL viewer(model-viewer, three.js)Hosted 3D(Sketchfab embed)Server-side render(your own GPU farm)
Mesh exposed to clientNeverYes — full .glb downloadedYes — proprietary but rippableNever
Initial JS payload8 KB player~150 KB minified~400 KB iframe boot0 KB
Median LCP impact+0.1s+1.4s+0.6s (iframe)+0.1s
Works without WebGLYesNoNoYes
Server cost per spin$0 (CDN only)$0Bundled$0.003 — $0.02
Real-time lighting / ARNoYesYesYes
Time to first spin~120ms~800ms~1.6s~400ms
CUSTOMERS · IN THEIR OWN WORDS

Engineering teams are skeptical. Then they ship it.

We hear from PR teams about awards. We hear from engineering teams about LCP. Here's what the engineers said.

We've shipped Sketchfab embeds, model-viewer, and our own Three.js wrapper. Meshless is the first one our perf team didn't ask us to remove. LCP went from 2.1s to 0.8s.
2.1s → 0.8s LCP
MV
Mateo VidalHead of Engineering · Aurora Watches
Our designer's biggest fear was a competitor screenshotting the .glb out of DevTools. Six months in, we've had zero IP incidents. We sleep better.
0 IP incidents
HL
Hanna LindqvistCTO · Lumen Furniture
The dashboard is the rare 3D tool that respects keyboard shortcuts. I encoded 84 SKUs in an afternoon without ever leaving ⌘K.
84 SKUs · 1 afternoon
DR
Devan Reyes3D Lead · Northwind Audio
EARLY ACCESS

Get early access to Meshless. Reserve your place in the beta.

We are opening access gradually for teams that want secure 360-degree product viewers without exposing source models.

No credit card required
Free during beta
Cancel anytime
Get Early Access Read the docsBeta access is limited while we prepare the public launch.