artidrop
v0.2.14
Published
CLI to publish and share HTML, Markdown, and multi-file sites with a single command
Maintainers
Readme
artidrop
CLI to publish and share HTML, Markdown, and multi-file sites with a single command.
Install
npm install -g artidropQuick start
# Just publish — no signup needed. Your artifacts are yours and you can
# update/delete them, signed by a key this CLI creates for you.
artidrop publish ./report.html
artidrop publish ./notes.md --title "Meeting Notes"
artidrop publish ./my-site/ # a multi-file site (directory or ZIP)
# List and manage what you've published
artidrop list
artidrop delete <id>
# Want a dashboard, recovery, or access from other machines? Attach an account:
artidrop loginIdentity — guest by default
The CLI signs in as a guest automatically: it creates a did:key identity
in ~/.afauth/ (shared with other AFAuth-aware tools) and signs each request
with it. A guest can publish and manage its own artifacts — no email, no
password, no browser.
artidrop login connects this machine to a real artidrop account (web dashboard,
recovery, access from other machines). By default it's a browser sign-in that
saves an account key — which takes precedence over the guest identity, so it's
also how you switch accounts.
To keep your guest identity and turn it into your account instead, claim it
by email — artidrop afauth claim <email> (scriptable), or artidrop login
--afauth, which offers to claim interactively. Your artifacts come with you.
artidrop logout signs out of everything — the CLI goes anonymous until you log
back in. Your did:key in ~/.afauth/ is kept (it's shared with other tools
and owns your guest artifacts); artidrop login --afauth reactivates it.
Three tiers; you climb only when you want more:
| | How | What you get |
|---|---|---|
| Throwaway | artidrop publish --anonymous | one-shot, unlinkable; can't be managed |
| Guest (default) | nothing | publish + manage your own artifacts, no signup |
| Account | artidrop login | dashboard, recovery, cross-device |
Sign in on a remote machine
On a remote / headless box (SSH session, container, dev VM), the default
artidrop login flow can't complete because the browser on your laptop has no
way to reach the loopback callback on the remote host. Use --no-browser:
artidrop login --no-browserOpen the printed URL on your laptop, then paste the one-time code back into the remote terminal.
AI agents & CI
An AI agent (Claude Code, Codex, …) that runs artidrop needs no setup — it
publishes as a guest on the first call. To let a human take ownership later, ask
the agent to run artidrop login (or claim it yourself from the dashboard).
For CI or scripts, a static bearer key still works and takes precedence over the guest identity:
export ARTIDROP_API_KEY="sk-your-api-key"
echo "<h1>Hello</h1>" | artidrop publish - --format html --title "Report" --jsonCommands
| Command | Description |
|---------|-------------|
| artidrop publish <path> | Publish a file, directory, or ZIP (- for stdin) |
| artidrop list | List your artifacts |
| artidrop get <id> | Show artifact details |
| artidrop delete <id> | Delete an artifact |
| artidrop versions <id> | Show version history |
| artidrop login | Sign in to a web account (bearer). --afauth uses/claims this device's did:key instead |
| artidrop logout | Sign out of all accounts (go anonymous). Keeps the did:key — reactivate with login --afauth |
| artidrop whoami | Show your identity (account, guest did:key, or signed out) |
| artidrop afauth claim <email> | Attach an account to this device's did:key (recovery + dashboard) |
Publish options
-t, --title <title> Artifact title (default: filename)
-f, --format <format> html or markdown (auto-detected from extension; ignored for directories/ZIPs)
-v, --visibility <vis> public, unlisted, or private (default: unlisted)
-u, --update <id> Update existing artifact (new version)
-s, --slug <slug> Idempotent publish: create or update by slug
-o, --open Open URL in browser after publishing
-c, --copy Copy URL to clipboard
--anonymous Publish without your identity (a throwaway; can't be updated)
--json Output full JSON responseConfiguration
- Your guest identity lives in
~/.afauth/key.json(honours$AFAUTH_HOME), shared with other AFAuth-aware tools so a human links it at most once. - After
artidrop login, an account credential is stored in~/.config/artidrop/config.json.artidrop logoutreplaces it with asigned_outmarker so the CLI stays anonymous until you log back in (the~/.afauthkey is kept, not deleted).
Environment variables take precedence:
ARTIDROP_API_KEY— bearer API key (CI / scripts)ARTIDROP_API_URL— custom API endpoint (default:https://api.artidrop.ai)
License
MIT
