Install on your phone
Open the node's Tailscale HTTPS URL in Safari, tap Share, then Add to Home Screen. The installed app opens standalone and its shell stays available offline. History and language directories are stored in the browser's IndexedDB, so later starts work without contacting the server. Directories refresh at most once a day and keep their cached values when the server cannot be reached. A first visit needs a connection to download the app and directories, and starts with empty history. PWA updates retain the same database.
Words submitted with no connection
A word submitted while the server is unreachable stays in a local FIFO queue and
is retried on the next app open or on the browser's online event.
Each submission carries a UUID that is stored with the queue item. If the server accepted a POST but its response was lost, retrying that UUID returns the original entry instead of repeating the LLM and audio work. This receipt map is in-memory: it holds at most 4096 accepted IDs for seven days and resets when the backend restarts. A retry outside that window is a new request, and since there is no duplicate check it makes a second note — undo, or Anki's own browser, removes it.
Share-sheet Shortcut
An iOS Shortcut lets you send a word, an expression or a whole passage straight from any app that can share text.
- Create a Shortcut that accepts text from the Share Sheet.
- Build a Dictionary with
wordset to the Shortcut input,langset to a configured code such asen, andlookup_onlyset to false. - Use Get Contents of URL to POST that dictionary as JSON to
https://<node>.<tailnet>.ts.net/api/words. - Add the shortcut to the Share Sheet.
Tailscale must be connected. The backend decides what the shared text is: a word or an expression is analysed whole and becomes a card, while shared prose comes back translated and explained, with the units worth looking up on their own — without exposing the service publicly.