HTML Drive
10 / 5 / 26
Tech breakdown · 10 tweets · 1 file

I was going to write a thread. Then I remembered — that's the whole point.

A breakdown of HTML Drive, the personal file system for HTML files Claude makes. Written as a tweet thread, then promoted into the format the project is about.

M
Minjune Song @minjunesh · building HTML Drive
1/10

Built a thing this weekend. HTML Drive — a personal file system for the HTML files Claude makes for you. Sign in with Google, organize in folders, share by email, find the URL later.

Like Google Docs, but for the format Claude actually does its best work in.

10 May 26 · 11:42 PM
M
Minjune Song @minjunesh
2/10

The why is Thariq's argument: markdown is restricting. ~100 lines of markdown is the max anyone reads. HTML can carry illustrations, color, layout, interaction — everything markdown reaches for ASCII to fake.

But HTML files have nowhere to live. Most browsers don't render markdown natively, but HTML files aren't on a URL until you put them somewhere.

Drive is the somewhere.

11:43 PM
M
Minjune Song @minjunesh
3/10

Six things that didn't exist 24 hours ago:

① Schema (users / folders / shares)
② Google sign-in
③ Finder-style file browser
④ Per-doc visibility (private / shared / public)
⑤ Google Docs-style viewer (top bar + history rail)
⑥ Favicon + "⚡ Make your own" ribbon

None of it is hand-rolled. All of it is one ~110KB worker.ts.

11:46 PM
M
Minjune Song @minjunesh
4/10

The agent flow is the one part I'm proudest of.

You sign in. Click Connect agent. You get a URL. That's it.

The URL is /agent/<token>/agents.md. It contains the credentials AND the instructions. Paste it into Claude Code and the agent reads it, learns the API, and starts saving HTML to your account as memory.

# In Claude Code
> Here's where you can save HTML files:
> https://html.app.teenyapp.com/agent/agt_…/agents.md
>
> When I ask for a spec or report, save it there.
11:48 PM
M
Minjune Song @minjunesh
5/10

The trick: /agent/:token/agents.md is a per-token markdown file generated on the fly. The agent fetches it once and gets:

• A description of the drive
• The save endpoint, with the bearer baked into curl examples
• Visibility / slug / size limits
• Permission to use it as memory

No separate setup step. The link is the configuration.

# Save a doc
curl -X POST https://html.app.teenyapp.com/api/save \
  -H 'Authorization: Bearer agt_…' \
  -d '{"slug":"my-doc","title":"My doc","html":"<!doctype html>..."}'
11:51 PM
M
Minjune Song @minjunesh
6/10

Visibility, in three flavors. Same model as Google Docs:

click any pill
11:54 PM
M
Minjune Song @minjunesh
7/10

Doc viewer is Google Docs-style: top bar with Share + history toggle + more menu, your HTML in an iframe, version history in a collapsible right rail.

The thing the iframe loads is /d/:slug/raw. Same ACL, no chrome — that's what curl/agents fetch and what other iframes embed.

↩ My drive Your document Public M
your HTML, in an iframe
the actual chrome
11:56 PM
M
Minjune Song @minjunesh
8/10

Stack: teenyapp (Cloudflare Workers + SQLite). Schema is six tables, one of them owned (users), the rest related.

users id email name picture last_login folders id user_id parent_id name documents id slug user_id folder_id visibility latest_version shares id document_id granted_email can_write versions id document_id version_number html byte_size
six tables; FKs cascade in the obvious directions

Auth is teenyapp's auth extension on the users table — it auto-mounts /api/v1/table/users/auth/oauth/google. I just added the redirect URI to my Google client.

12:02 AM
M
Minjune Song @minjunesh
9/10

The whole rewrite happened in one Claude Code session. ~6 hours of pair-programming, 9 commits, 5 bugs ironed out as I went.

The session itself is a doc in the drive — written by Claude, viewable by anyone, like every other doc in there. The artifact and the storage are the same thing.

Closing the loop is the whole point.

12:08 AM
M
Minjune Song @minjunesh
10/10

Try it. Sign in. Connect an agent. Paste the link into Claude. Then ask for HTML and watch it land in your folders.

This thread is itself an HTML file in my drive — promoted from a tweet, because that's what the project is for.

Start your own.

Sign in with Google. Build an HTML brain. Share by URL.

html.app.teenyapp.com
12:11 AM