tailshare
tailshare is a home-brewed CLI that serves directories over HTTPS on the Tailscale
node's hostname. Shares live under share/ and get a URL like
https://cachy.tail46c968.ts.net/share/<name>/.
Quick reference
tailshare list # what is published, sizes, URLs
tailshare publish --src <dir> --dist share/<path> # publish (prints the URL)
tailshare rm share/<path> # unpublish
tailshare where # config + data paths
tailshare funnel status # is it also on the public internet?
Publishing
--srcis a directory, never a file. To share a single page, put it in its own directory asindex.htmlfirst (a scratch dir is fine — tailshare copies the contents, it does not symlink).--distmust start withshare/. Anything else is rejected with "destination must be below share/". Use two levels —share/<project>/<page>— so related pages group intailshare list(existing convention:share/cake/cost-scaling-estimate,share/cachy/keys).- The command prints the final URL. Relay it to the user verbatim.
- Republishing to the same
--distreplaces the contents in place; the URL is stable.
mkdir -p /tmp/keys && cp cheatsheet.html /tmp/keys/index.html
tailshare publish --src /tmp/keys --dist share/cachy/keys
HTML that will be served raw
Unlike the Artifact tool, tailshare does no wrapping. A page needs its own
<!doctype html>, <html>, <head> (charset, viewport, <title>), and <body>.
When converting an Artifact-style fragment, wrap it before publishing. Keep assets
self-contained (inline CSS/JS, data-URI images) or place them in the same --src
directory with relative paths.
Removing
tailshare rm share/<path> is immediate and irreversible. Confirm with the user
before removing a share you did not create in the current session.
Visibility
Shares are reachable by anyone on the tailnet. If tailshare funnel status reports
the Funnel is running, they are reachable by anyone on the internet at the same
URL — say so before publishing anything sensitive, and never publish secrets, tokens,
or private customer data.
Service plumbing (rarely needed)
tailshare stack— control the container stack behind the servertailshare service— manage the user systemd unitstailshare api— loopback metadata endpoint used by the share widgettailshare init— first-time config; already done on cachy
If publish fails with a connection error, check tailshare service / stack
status before retrying.