Open source · self-hostable
Share a document with a link only its holder can guess.
Want to publish an HTML or Markdown file and get back a single link you could send to someone?
That's all docdrop does. There are no viewer accounts and no sign-in — the link is the only thing they need.
It comes in two parts — a command-line tool you install, and the server it publishes to.
How it fits together
A command-line tool, and a server it talks to.
docdrop is two parts. You install one of them; the other is where your documents actually live.
The docdrop CLI
A command-line tool you install from PyPI. You publish files with it, list what you've published, and manage your links. It's the only part that goes on your own computer.
The docdrop server
The Anvil app that stores your documents and serves each one at its link. The CLI publishes to it over HTTPS; you tell the CLI which server to use by its web address.
Why docdrop
What it actually does.
None of this is a plan or a roadmap. It all works now, through one small command-line tool.
No accounts to read
Anyone you send the link to can open the document. They don't sign up, log in, or install anything to read it.
Editing doesn't break the link
When you publish again, the content changes but the link stays the same. Anything you've already sent out keeps working.
Restyle everything at once
Markdown is stored as you wrote it and turned into a page when someone opens it. Change the stylesheet, deploy, and every document picks up the new look. You don't republish a thing.
Every version is kept
Each publish that changes the content is saved as a revision. You can list them, compare two with diff, and rollback to an earlier one.
Yours to keep
The documents live in your own database. Host it on Anvil, or run the whole thing yourself. Your links don't depend on anyone else staying in business.
Two planes
Publishing and admin never share a key.
The command-line tool publishes over HTTPS with a bearer key. Admin jobs run over a separate, privileged uplink. The two keys never meet in the code.
The docdrop CLI
Talks to /api/* over HTTPS, authenticating with Authorization: Bearer <api_key> against a row in the users table — no session, cookie, or OAuth.
Uplink-only operator tools
Key minting and operator tasks run over a privileged server uplink, gated so a browser or a publisher's api_key can never reach them. Accounts are minted, never self-service.
/docs/:token route, plus server callables
client: none — browser code reads none of them- Unlisted, not private. Anyone with the link can read; a 128-bit token is the gate.
- Separate credentials. A leaked publisher key only touches that account's own documents.
- noindex by default. Every served page carries
X-Robots-Tag: noindex, nofollow. - No signup form. There is no publicly reachable route that creates or rotates a key.
The CLI
Install it and point it at a server.
The CLI is on PyPI as docdrop. Install it, point it at a server, and publish.
# install the CLI (pick one) pip install docdrop pipx install docdrop uv tool install docdrop # then publish a file and get a link back docdrop publish notes.md docdrop list
Full documentation — CLI configuration and precedence, the complete command reference, hosting your own instance, and self-hosting — lives in the repository README.
The command set
publishlistopenaliasgrantrevokegrantshistorydiffrollbackservers
One optional --server prefix targets a named profile, so one CLI can publish to a production app and a local dev one.
The server
Getting a server up and running.
You publish to a docdrop server, so you need one to point the CLI at. There are three ways to get there.
Host it on Anvil
The quickest route. Clone the repo straight into a new Anvil app, turn on the server uplink, and mint yourself a publisher key. A few minutes' work.
Run it yourself
Self-host with anvil-app-server on your own machine. The repo includes a dev container to build on — it's a starting point to adapt, not a turnkey install yet.
Use someone else's
If someone already runs a docdrop server, you don't have to host anything. Point the CLI at their server with the key they give you.
Step-by-step for hosting on Anvil and for self-hosting is in the Installation section of the README.
Plainly
What docdrop is not.
Being clear about this keeps the tool small and keeps sharing simple.
- 1Not a private vault. Documents are unlisted, not locked. Anyone with a live link can read. Grant links expire and revoke, but they don't check who is holding them. If you need people to log in before they can read, this isn't the tool for that.
- 2Not a signup product. There's no self-service account. Keys are minted by hand, by whoever runs the server. No billing and no dashboard.
- 3Not a platform. It's a small app you run yourself, and that's deliberate. Nothing here depends on a company staying alive or a subscription staying paid.