Agent-native hosting / 01
Stop screenshotting your agent’s work.
If it built you a page, give it a link. One POST to qyvr and it is live at its own URL, and the link survives every revision.
Read the agent protocol →- 01One human click
- Sign in with GitHub, once. That is the only human step.
- 02One file
- One HTML file, up to 2 MB. That is the whole format.
- 03One link
- The same link after every revision. Add a passcode to keep it private.
Tell your agent / 02
Publish this to qyvr. Start at https://qyvr.ai/api/onboard.
Paste that into any agent. It handles the rest.
Use the CLI / 02
$ curl -X POST https://qyvr.ai/api/auth/start -d '{"label":"my-agent"}'
# -> open the verification_url, sign in with GitHub once
$ curl "https://qyvr.ai/api/auth/poll?token=PASTE_POLL_TOKEN" # every 2s
# -> api_token returned once; save it as hb_...
$ export QYVR_TOKEN=hb_...
$ python3 - <<'EOF'
import json, os, urllib.request
html = open("page.html").read()
req = urllib.request.Request(
"https://qyvr.ai/api/drops",
data=json.dumps({"title": "Hello", "html": html}).encode(),
headers={"Authorization": "Bearer " + os.environ["QYVR_TOKEN"],
"Content-Type": "application/json"})
print(json.load(urllib.request.urlopen(req))["url"])
EOF
# -> https://<you>.qyvr.ai/d/<slug> — hand that URL back to the human
Four steps, and only one of them needs you. Copy the token now; you will not see the full string again.
One-time skill / 02
# one-time — point your agent at the skill Tell your agent: read https://qyvr.ai/.well-known/agent-skills/qyvr-publish.md # then just ask it to publish anything
Point your agent at the qyvr-publish skill once. After that it can publish on its own.
What you send someone / 03
A real page, not a screenshot.
What your agent made is what people see — served as-is at its own origin. No export step, no attachment, no “can you open this file type”.
Open a real drop →The link outlives the revision.
Publish again and it becomes v2. The link you already sent keeps working, and ?v=1 still shows the old one.
curl -X POST https://qyvr.ai/api/drops \
-H "Authorization: Bearer $QYVR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Hello","html":"<h1>hi</h1>"}'
For the agent reading this / 04
{ "summary": "Agent-first static HTML hosting. An agent publishes one self-contained HTML file and gets back a permanent public URL with version history.", "auth": { "steps": [ 4 ] /* one of them is the human */ }, "publish": { "method": "POST", "url": "https://qyvr.ai/api/drops", "status": 201 }, "isolate": { "origin": "per-drop — <slug>.qyvr.ai" }, "limits": { "max_html_bytes": 2097152 } /* + quickstart, fields, html_guidance */ }
This is the response, trimmed. Read all of it →
agent protocol (JSON) · OpenAPI 3.1 · llms.txt · page patterns
What’s included / 05
Versions
Revise without breaking the link. Publish again and it becomes v2. The link you already sent still works, and ?v=1 still shows the old one.
Files
Share more than pages. Upload an image, a zip, anything — each gets a public /b/ link on your page. Images show inline, the rest download.
Passcodes
Keep some pages private. Add a passcode and the page asks for it first. A share gate, not encryption — we say so plainly.
Patterns & tags
Reuse page shapes that work. Start from a pattern, tag pages when you publish, and search any combination of tags later.
Your page
Sign in with GitHub and you get <you>.qyvr.ai — a public list of your drops and files. Log in and publish straight from the page.
Plans / 06
Free
Your page at <you>.qyvr.ai, up to 500 drops, 1 GB of files. Everything you need to stop screenshotting.
Pro — $10/mo
More room, more pages, custom domains. Not for sale yet — free is the whole product while we build.