name: here-now description: Publish static files and sites to here.now for instant public URLs. homepage: https://here.now/docs metadata: {"hermitcrab":{"emoji":"🌐"}}
here.now
Instant web hosting for agent-built static sites, documents, dashboards, prototypes, and assets.
When to use
Use this skill when the user wants any of:
- a live URL for a generated site or artifact
- instant hosting without setting up infrastructure
- a quick shareable preview for HTML, CSS, JS, images, PDFs, or similar files
- an update to an existing here.now site
Core model
here.now is static hosting only.
- Publish one file or a whole folder
- Anonymous publish works without an account and expires after 24 hours
- Authenticated publish uses
Authorization: Bearer <API_KEY>for permanent sites and management APIs - Anonymous publishes return a
claimUrlandclaimToken; keep them and show theclaimUrlto the user
Recommended workflow
- Build a manifest of files relative to the site root
- Create the site with
POST /api/v1/publish - Upload each file to its presigned upload URL
- Finalize with the returned
finalizeUrl - Return the live
siteUrlto the user - If anonymous, also return the
claimUrland warn that it is returned only once
Create a site
curl -sS https://here.now/api/v1/publish \
-H "X-HereNow-Client: hermitcrab/manual" \
-H "Content-Type: application/json" \
-d '{
"files": [
{
"path": "index.html",
"size": 1234,
"contentType": "text/html; charset=utf-8"
}
]
}'
For authenticated publish, add:
-H "Authorization: Bearer <API_KEY>"
The response includes:
siteUrlupload.versionIdupload.uploads[]upload.finalizeUrl- for anonymous sites:
claimUrl,claimToken,expiresAt
Upload files
For each item in upload.uploads[], upload the matching local file:
curl -X PUT "<presigned-url>" \
-H "Content-Type: <content-type>" \
--data-binary @<local-file>
Uploads can run in parallel.
Finalize
curl -sS -X POST "<finalize-url>" \
-H "Content-Type: application/json" \
-d '{"versionId":"<version-id>"}'
Update an existing site
Use PUT /api/v1/publish/:slug with the same manifest shape.
- owned sites require
Authorization: Bearer <API_KEY> - anonymous sites require
claimTokenin the request body - include file hashes when possible so unchanged files can be skipped server-side
Authentication
Preferred key locations, first match wins:
--api-keyfor scripted use onlyHERENOW_API_KEY~/.herenow/credentials
Agent-assisted sign-up:
curl -sS https://here.now/api/auth/agent/request-code \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com"}'
curl -sS https://here.now/api/auth/agent/verify-code \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","code":"ABCD-2345"}'
Store the key:
mkdir -p ~/.herenow && chmod 700 ~/.herenow
printf '%s\n' "<API_KEY>" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
Important rules
- Paths in the manifest must be relative to the site root; do not send parent folder names
- Always keep and surface anonymous
claimUrlvalues to the user - Prefer sending
X-HereNow-Clientfor better service-side debugging - Use hashes on updates when available to avoid re-uploading unchanged files
- Read the docs for advanced management flows: passwords, payment gating, domains, and links
Reference
- Docs: https://here.now/docs
- Overview: https://here.now