Repository navigation
Releases: mickey/tailhome
Release list
v0.7.1
A theme button and a new icon.
- Pick light or dark without changing your system. The button after "add" cycles auto, light and dark. Auto follows your system, as before. The choice stays in your browser, so everyone who opens a shared
home/keeps their own. - The house icon is gone. The new one, four tiles with one lit, says start page rather than smart home, and keeps its shape on a black home screen. If you added tailhome to a home screen, remove it and add it again to get the new icon.
No configuration changes.
To upgrade, pull ghcr.io/mickey/tailhome:0.7.1 or download a binary below.
Changelog
v0.7.0
tailhome now lists what your coding agents build. An agent publishes a preview with tailscale serve, and it shows up at the top of home/ with the title and description the agent chose.
- Ask your agent "can I see this on my phone?" and get a working link. The new tailnet-preview skill lets Claude Code, Codex, omp and other agents publish a preview, write its card, check the link and later remove only what they created. It works without tailhome too. See the README for installation.
- Agents usually publish previews on ports other than 443, which tailhome never looked at. Set
TAILHOME_PREVIEW_PORTS=8443-8452, the range the skill uses, and those previews appear inhome/on their own, next to your apps, so you can open them from any device without copying links. The setting is empty by default, so nothing changes until you set it. - Previews say what they are. An app can serve a small JSON card at
/.well-known/tailhome.jsonwith a title, description and icon, so its tile reads "Short hero" with "One call to action" under it, instead of "Devbox :8443". Versions in the same set share one heading with A, B and C badges, so you can compare them side by side. - Routine checks on previews are TLS handshakes rather than HTTP requests, so tailhome does not show up in your app's logs or reset a preview tool's idle timer on every refresh. A preview that stops answering is hidden, then comes back on its own.
- Short links reach previews too:
/go/devbox:8443opens one. A shortcut that matches nothing now shows a short page instead of a bare error.
Changes to watch for:
- Even with no preview ports, tailhome now requests
/.well-known/tailhome.jsonon port 443 when it first finds a device app, when the app comes back, and on manual refresh. Apps without a card answer 404 or their usual page, and tailhome ignores both. /api/services.jsongains apreviewslist. Entries in both JSON endpoints gaintemporary,set,version,checkandunverified, and previews come first inlist.json. The "Unverified HTTPS" note moved fromdescriptiontounverified.- If a device-list refresh fails, the page keeps the last list and shows the error, instead of dropping devices.
To upgrade, pull ghcr.io/mickey/tailhome:0.7.0 or download a binary below.
Changelog
v0.6.3
The add panel now starts with the simplest way to publish an app.
- One command for one app. For an app on another port, such as
nas:8080, the panel and docs now showtailscale serve --bg --https=443 8080. Run it on the device: Tailscale serves the app at the device's HTTPS address and tailhome lists it on the next refresh, with no tag, Service or approval needed. - Simplest path first. The panel goes from one app on a device, to several apps with one Service each, to DockTail, to apps that already have their own device.
- Shorter address for other devices. "Open on another device" shows
http://home/first, with the full address as a fallback. - Clearer docs. A new "App on another port" section in
docs/apps.mdcovers renaming the tile, several apps on one device, and which names become public through HTTPS certificates.
No configuration changes.
To upgrade, pull ghcr.io/mickey/tailhome:0.6.3 or download a binary below.
Changelog
- b3826f9 Lead the add panel with tailscale serve on one device
v0.6.2
Other websites can no longer trigger a refresh through your browser.
- Refresh by POST. Since v0.6.0, a refresh also probes every device of your tailnet. Any website could trigger one by loading
http://home/?refreshin a visitor's browser. The refresh button now sends a POST to/refresh, and tailhome rejects browser requests that come from another site, including other apps on your tailnet.
No configuration changes. If you scripted /?refresh, send POST /refresh instead.
To upgrade, pull ghcr.io/mickey/tailhome:0.6.2 or download a binary below.
Changelog
v0.6.1
Fixes and privacy improvements after the v0.6.0 launch review.
- Copying .env.example no longer turns on OAuth. Its placeholder client ID and secret were active, so a
.envcopied to set the new device options made tailhome exit. Both lines are now commented out. - tailhome names itself in app logs. Health checks, device probes and the icon list download send
User-Agent: tailhome/<version> (+https://github.com/mickey/tailhome)instead of Go's default. - Icon requests no longer reveal your tailnet name. The page sets
Referrer-Policy: same-origin, so jsDelivr sees icon names but nothome.<tailnet>.ts.net. It also setsX-Content-Type-Options: nosniff. - Clearer docs. The README states exactly what device discovery sends and how to limit it, troubleshooting covers invalid OAuth credentials, and the setup issue form asks about device apps.
No configuration changes. To upgrade, pull ghcr.io/mickey/tailhome:0.6.1 or download a binary below.
Changelog
- 8f4a805 Fix docs found in review
- 8178434 Tidy the User-Agent and header code after review
- 1ff4d88 Describe the optional svc: prefix the same way everywhere
- 6146dc1 Cover device apps in the setup issue form
- b43839a Say exactly what device discovery sends
- 73f1b96 Say tailhome keeps no separate app list
- 4bee5b9 Keep the tailnet name out of icon requests
- 1567317 Name tailhome in the User-Agent of its requests
- 9997796 Keep OAuth off when .env.example is copied
v0.6.0
tailhome now lists apps that run on their own tailnet device, next to your Tailscale Services.
- Device apps. A device of your tailnet that answers HTTPS on port 443 with a valid certificate gets a tile, such as an app published by TSDProxy v2, tsbridge, ScaleTail or
tailscale serveon the device. Tiles join your groups like Services; the tooltip says "device". - Own certificates. A NAS or router with its own certificate appears once you tag it and list the tag in
TAILHOME_DEVICE_INSECURE_TLS_TAGS. Its tile says "Unverified HTTPS". Until then, the log names it once. - Apps group. The default group is now "Apps" instead of "Services".
- Docs. A shorter README, and setup, discovery, customization and troubleshooting in
docs/.
New tiles may appear after you upgrade. To try only some devices, set TAILHOME_DEVICE_TAGS=tag:app; to turn discovery off, set TAILHOME_DEVICES=off; to hide one tile, set hidden: true in overrides. JSON entries gain a source field (service or device).
To upgrade, pull ghcr.io/mickey/tailhome:0.6.0 or download a binary below.
Changelog
v0.5.0
Add apps from the page, get better icons, and open tiles from the address bar.
- Add an app. Select add at the top right to see the DockTail labels and the
tailscale servecommand that publish an app as a Service, and this page's address for your other devices. An empty page shows the same steps. - Icons. Names such as
immich-serverandhomeassistantnow get their app's icon. A name with no icon shows its first letter. - Shortcuts. Type
home/go/jellyfinin the address bar to open the Jellyfin tile. - Docs. The README explains how tailhome pairs with DockTail and how to recover from an expired node key.
To upgrade, pull ghcr.io/mickey/tailhome:0.5.0 or download a binary below. No configuration changes.