Astro
droplit

droplit

hostinghtmlmarkdown
Details
Visibility
public
Deploys
3
Build Number
1c783a51
Updated
Jun 24, 2026
Contributors
Repository
Integrations
AnthropicRedisMastra
Capabilities
Gates the /admin UI to an email allowlist matched against the platform OIDC identity
Accepts dropped HTML/markdown files or whole folders and publishes each at /<slug>/
Serves a dropped folder as a multi-file site, with binary assets and correct content types
Calls Claude on upload to derive a URL slug, title, and one-line description from the contents
More blueprints
AGENT.md

Overview

droplit is a tiny single-domain hosting agent. Drop an HTML or markdown file, or a whole folder, into the admin UI. On each upload Claude derives a short URL slug (for example trip-itinerary), a page title, and a one-line description from the contents. A single file becomes a page; a folder becomes a multi-file site served at /<slug>/, with its index.html as the entry point and every asset reachable beneath it. Markdown is converted to HTML at upload time and wrapped in a minimal styled template.

The chat agent's only job is to help visitors discover what is hosted. It calls the list_pages tool to fetch the current catalog and replies with the URL, title, and one-line description for each entry.

Usage

Publishing pages and sites

Access to /admin is granted by email. The platform signs you in through its OpenID Connect (OIDC) layer, and your verified email must appear in the ADMIN_EMAILS allowlist. In local development there is no sign-in, so the admin UI is open. Drag and drop files or a folder into the upload area:

  • A single file (.html, .htm, .md, or .markdown) becomes a page at /<slug>/.
  • A folder becomes a site. Its files are served at /<slug>/<path> with the right content type, binary assets included. If the folder has no index.html, a file listing is generated as the entry point.

For each upload Claude picks a kebab-case slug, a title, and a one-line description. If a slug collides with an existing entry, a numeric suffix is appended (my-page becomes my-page-2). Pages and sites are stored in Redis and reachable immediately; changes propagate to the agent's in-process cache via pub/sub with no restart. Existing entries can be deleted from the same view.

A bundled welcome page is seeded on first boot if Redis is empty.

Browsing

  • GET /<slug>/ serves a page, or a site's entry document.
  • GET /<slug>/<path> serves an asset inside a site; a trailing slash resolves to that directory's index.html.
  • GET /<slug> redirects to /<slug>/ so relative links resolve.
  • Unknown paths and missing assets return a styled 404 page.
  • Reserved prefixes (admin, api, healthz, static, assets, whoami) cannot be used as slugs.

Every route other than /admin is open to any visitor.

Asking the chat agent what is available

In any messaging adapter (web playground, Slack, and so on), ask the agent what is hosted. For example, ask it "what pages are available here?" It calls list_pages and replies with bulleted entries that include the path, title, and description. It reports only pages that exist and does not invent them.

Inputs

InputRequiredDescription
ADMIN_EMAILSyesComma-separated admin emails allowed at /admin, matched case-insensitively against the OIDC email

Limitations

  • Admin access needs the platform identity. In production the /admin gate reads the verified email from the platform's OIDC token, so ADMIN_EMAILS must be set or no one can manage pages. There is no password fallback.
  • Per-file uploads are capped at 1 MiB. A dropped folder is additionally capped at 200 files and 20 MiB total, and is rejected as a whole if it exceeds either limit.
  • Page and site content is served as-is. The admin uploads HTML and assets directly and the host does not sanitize them, so add only people you trust to ADMIN_EMAILS.
  • Multi-replica safe. Pages and site bundles live in Redis, so any replica can serve any entry, and the in-process metadata cache is refreshed via pub/sub.