miinideckmiinideck
PricingUse casesBlog
Sign in
Sharing AI-built apps

Sharing a multi-file AI app (Codex, Bolt) as one private link — the ZIP bundle path (2026)

AI builders often export an app as a folder — index.html plus separate CSS, JS, and assets — not a single file. How to share the whole thing as one private link without flattening it or deploying it.

By miinideck·August 20, 2026·4 min read
TL;DR
  • Some AI builders export a single self-contained .html; others — Codex, Bolt, and most "build me an app" tools — export a folder: an index.html plus separate CSS, JS, and asset files that reference each other by relative path.
  • You can't email a folder, and flattening it into one file by hand breaks the references. Deploying it to a host is more than a quick review needs.
  • The shape that fits: zip the folder, drop the .zip, get one private link that serves the whole app with its relative paths intact — index.html as the entry, everything else loading the way it did locally.
  • miinideck.com accepts ZIP bundles — 10 MB on Free, 25 MB on Solo, 50 MB on Studio — unpacks them, and serves the app at one unguessable, default-private link where you decide who opens it.
  • Live link in seconds, the multi-file structure preserved, nothing public unless you say so.

The single-file case is easy: a self-contained .html with everything inlined drops cleanly and shares as a link. But a lot of AI-built apps don't come out that way. Ask Codex or Bolt for "an app," and what comes back is a project — index.html, a styles.css, an app.js, maybe an /assets folder with images and fonts. The files reference each other by relative path: <link href="styles.css">, <script src="app.js">.

That structure runs fine on your machine. Sharing it is where it gets awkward.

Why the folder doesn't share like a file

Three things go wrong when a multi-file app meets the usual sharing channels:

  • Email and chat take one file, not a folder. Attach index.html alone and the CSS, JS, and images don't come with it — the recipient gets an unstyled, broken page.
  • Flattening by hand breaks references. You can inline everything into one file, but for a real app with many assets that's tedious and error-prone. (For simpler pages, inlining the CSS and JavaScript is a reasonable path; for a full multi-file app it usually isn't worth it.)
  • Deploying is more than a review needs. Pushing the project to a host with a build step works, but it's a lot of setup for "can you take a look at this before I keep going."

The ZIP bundle path

The cleaner move is to keep the structure and let the host handle it. Zip the project folder — index.html at the root, the CSS/JS/asset files alongside or in subfolders — drop the .zip, and the host unpacks it and serves the app at one link. The relative paths resolve because the file structure is preserved; index.html loads as the entry point; the page behaves the way it did locally.

This is the same delivery shape as sharing a vibe-coded app before you deploy — the difference is just that the export is a bundle rather than a single file.

Drop a .zip of the project folder, get one live link that serves the whole app. No build step, no account. The anonymous tier handles files up to 3 MB; signed-in and paid tiers raise the cap.

Try it free (no signup)

The walkthrough — folder to private link

  1. Check the entry point. The host serves the index.html at the root of the archive as the page. Make sure your entry file is named index.html and sits at the top level — not nested inside another folder.
  2. Zip the folder's contents. Select the files and subfolders and compress them so that index.html lands at the root of the archive, with css/, js/, assets/ (or whatever the export uses) alongside it.
  3. Drop the .zip. The bundle uploads and unpacks; the link comes back.
  4. Open it to check the asset paths resolved — styling applied, scripts running, images loading. If something's missing, it's almost always the entry point or a path that pointed outside the bundle.
  5. Decide who sees it. Unguessable URL, hidden from search by default; add a password or expiry if needed; send it.

When the app needs a real deploy instead

The ZIP path is for a front-end bundle — HTML, CSS, JS, and assets that run in the visitor's browser. If the Codex or Bolt app has a live backend — server routes, a database it reads and writes, authentication — that part doesn't travel in a zip, and the app needs an actual deploy (Vercel, Netlify, the builder's own publish flow) to keep its server side working. A finished, public AI-built landing belongs on a public host too.

The private ZIP link covers the in-between and the front-end-only cases: the app works, it isn't public yet, and the multi-file structure should stay intact for the person reviewing it.

What this isn't

The host serves the bundle as static files at a link — it isn't running a build, a server, or a database for you. ZIP bundles up to 50 MB, served the way the app renders in a browser; anything that needs server-side execution is a deploy-platform job. The private link's role is to take the project as it is and make it viewable, by exactly the people you choose.

More in Sharing AI-built apps

ChatGPT Sites usage limit reached: which Sites can move out, and which can't

Hit a ChatGPT Sites usage limit? Your Sites aren't gone. Here's how to tell the ones that are just pages, which travel, from the ones that need Sites underneath them.

September 26, 2026·8 min read

Claude's Publish button is greyed out: which of the four reasons is yours

A disabled Publish button isn't one bug — it's four different situations wearing the same grey. Two of them are permanent, two clear in a minute. Here's how to tell which one you're looking at, and how to get the page to the person waiting for it either way.

August 21, 2026·9 min read

Sharing what an AI tool builds, before you deploy: the complete guide (2026)

From a Claude artifact to a vibe-coded app to a multi-file Codex bundle — how to share what an AI tool builds, as a private link, without a deploy pipeline.

August 21, 2026·3 min read

Send your own private link.

miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.

Try it free →See pricing
miinideck

HTML files, finally as links — for AI builders, agencies, and consultants. Default-noindex, default-private, default-yours.

Product

  • Pricing
  • Use cases
  • Try it free

Resources

  • Blog
  • Free tools
  • Featured on
  • Report abuse

Legal

  • Privacy
  • Terms
Listed onmiinideck listed on Product Huntmiinideck listed on Faziermiinideck listed on TheSaaSDirmiinideck listed on AIToolHuntmiinideck listed on LaunchNest
© 2026 miinideckMade for people who don't want their work indexed.