Skip to content

On a phone or in a browser ​

On a phone: Home ​

Home shows what needs you right now, with every project under it.

At the top is a card for each pane that wants you, most urgent first: waiting, then failed, then finished. To answer one:

  1. Read the question in large type. Under it is the foot of the pane's real screen, live, so you can see the choices the agent drew. Tap it to open the pane.
  2. Press a key under the card, or write an answer in the line.
  3. The card says what was sent. When the agent goes back to work the card goes.
Under the cardWhat it does
Enter, y, n, 1, 2, 3, EscEach sends that key and nothing else. They're the same on every card, so read the pane's foot to see which key means what.
The lineType or dictate, then press the arrow. It's sent as typed, then Enter.
Password fieldHides what you type, with Enter and Esc.
Open the pane, SeenFor a pane that only failed or finished.

With nothing waiting, the top says All quiet.

Under the cards, each machine has a section with a card per project, lit if it needs you. Tap a card to open the place most worth looking at: the pane that needs you, else the one at work, else the pane you used last.

Everything, at the bottom, lists every project, tab and pane as the window's sidebar does. Every project starts folded, one you add later too; unfold the ones you work in and your browser keeps them unfolded. The switch over its foot narrows it to Activity: only panes at work or with something for you, kept quiet by the rules in "Showing only activity" under The sidebar. Your browser remembers the choice.

The number on the title, on Home and on the switch is how many panes need you: waiting and failed. Finished panes are counted beside it, never in it. The page's tab and the home-screen icon's badge show the same number.

A pane in the browser ​

Tap a pane to open it at your screen's width. Tap it again for the keyboard.

  • Scroll back by sliding down at the top. More history arrives each time you reach the top.
  • Resize the letters by pinching.
  • Copy by holding a finger on a word, dragging to select more, and pressing Copy. Copy everything, under …, copies all the pane holds.
  • Search with Find, under ….
  • Open a web address by tapping it. A sheet shows where it really leads, with Open and Copy, since a pane's words can say one thing and lead to another. Only http and https open. With a mouse, hold Ctrl (⌘ on a Mac) and click.
  • With a keyboard, Ctrl+Shift+C copies what you've selected with the mouse and Ctrl+Shift+V pastes (⌘C and ⌘V on a Mac).

The bar of keys has what a phone's keyboard lacks: Esc, Tab, Ctrl, Alt, the arrows, Ctrl+C, Shift+Tab, ~, /, |, -, paste, and a pencil. Ctrl and Alt hold for the next key. The pencil opens a line you can type or dictate into, sent whole.

Add photos and files:

  1. Tap the paperclip in the pane's bar and choose what to add. On an iPhone you can also take a photo there.
  2. Wait for the ring to fill. Cancel on the card drops a file.
  3. Type your question and press Enter yourself.

Each file is kept on the pane's machine, in the pane's directory, in .insensical-uploads, and its path is typed at the cursor, as isc upload does, so an agent there can read it. A file can be 50 MB at most.

Fit panes to your screen. The button beside … (also Give the size back under …) switches whether the pane has your screen's size. Leaving the pane gives the size back. Fit panes as they open, in the page's menu, is the same choice, and the browser remembers it.

When the machine is far, what you type is drawn at once, a little fainter, until the program shows it: see "Typing on a far machine" under Other machines, over ssh.

A device that only looks has no paperclip and no fit button.

On a wide screen ​

From 900 pixels wide, the list sits at the side as the window's sidebar, and beside it is a tab with its panes where its layout puts them, each one live.

  • Click a pane to type in it. The button at the end of its header makes it fill the tab, and puts it back. The paperclip and … work as on a phone.
  • Click a row to go to that pane's tab. Which tab you look at is your browser's own and doesn't change what's in front at your desk.
  • Home, Everything and Activity work as on a phone.
  • Fit to this screen takes the size of every pane in the tab, and Give the sizes back returns them.

A device that may arrange can also drag the border between two panes (Escape while you hold it puts it back), or drag a pane by its header onto another: in the middle the two swap, near a side the pane takes that half, and a word says which. On a touch screen, hold the header first. Nothing is split, closed or renamed from a browser.

Text Size, in the menu under your device's tile, changes the letters of every pane in this browser: − and + move it a pixel, between 9 and 28, and Reset goes back to the window's size (a phone's own 14). Pinching on a phone changes the same size. The window and other browsers keep their own.

Fonts. Nerd Font signs come from an icon font the page brings. At a desk, letters use your font-family and font-size settings. A browser on another machine without that font uses the first of JetBrains Mono, Cascadia Mono, SF Mono, Menlo, Roboto Mono, Consolas, Liberation Mono and DejaVu Sans Mono that it has.

Adding the page to your home screen ​

From the home screen the page opens full screen, like an app.

  1. On an iPhone or iPad, in Safari, press Add where the page offers the home screen. The page loads again with a code in its address. Then tap the share button and Add to Home Screen. On Android, in Chrome, tap ⋮, then Add to Home screen or Install app.
  2. Open the page from the new icon. On an iPhone it pairs itself by that code, once.

On an iPhone the app has storage of its own, so it's a device of its own: see "A home-screen app is a browser of its own" under In a browser. Safari never uses the code, and keeps it in the address while you look around first. A code nobody used ends after 10 minutes, with its device, and Safari offers the home screen again.

After you update insensical, the page updates itself the next time you open it, and nothing needs clearing. If you're typing when a newer page is ready, Reload takes you to it.

isc hub, which serves the page, follows your daemon to a new version once you've restarted the server: the next time a browser connects, or as soon as the server is back if the hub was listening to it for notifications. A joined machine always is while it's connected to its hub, so it follows with nobody opening a page there. It keeps its port, so paired devices and the Tailscale mapping carry on, and a joined machine dials its hub again. Until it has, the page says Not connected; isc hub restart does it by hand.

The phone keeps no copy of the page, so it doesn't open while the server can't be reached.

Notifications on your phone ​

The page can tell your phone when a pane waits, fails or finishes while the page isn't in front of you.

  1. On an iPhone, add the page to your home screen first and open it from there.
  2. Make sure the page is on https: tailscale serve gives you that, and so does a certificate of your own. Over ssh -L the address is http://127.0.0.1, which a browser also allows.
  3. Press the bell, or say yes when the page offers after your first answer.

You're told what the daemon would tell a window: the machine's name, the state, and the program's words. What you've muted stays quiet. Press one and the page opens at that pane's card, on the machine it belongs to. You aren't told while the page is open in front of you.

Turn notifications off under your device's tile. Forget This Browser and isc hub device rm turn them off too.

Who hears what:

  • This computer's panes reach any device with notifications on.
  • Machines of isc host ls reach a device made with --far, with the machine's name first in the title.
  • Machines joined to your hub reach every device paired with the hub that has notifications on. No --far needed, and you can't turn off one joined machine and keep the rest.
  • A guest hears of nothing.

NOTE

While a device with --far has notifications on, isc hub keeps one ssh open to each machine of isc host ls, about 20 MB a day each. On a laptop on battery or a metered connection, that's the cost. It ends when the last such device turns notifications off or loses --far.

Privacy. Notifications go through your browser maker's push service (Apple's, Google's or Mozilla's), encrypted for your browser before they leave your machine. The service sees that something was sent, when, and how urgent it was. The server posts only to an https address on port 443 whose name resolves to public addresses, and follows no redirect.

CommandWhat it does
isc hub push lsLists the browsers that get notifications, and marks the ones that hear your other machines. With --json, each names its device as device.
isc hub push testSends a test to each and prints what each service answered.
isc hub push test --at NAMESends one as from that machine, to the browsers that hear of it.

Your device's tile, at the top right, opens This browser, laid out like a phone's own settings. It has:

  • Icon: five icons and ten colours.
  • Theme: the eight that come with insensical. Left alone, the page follows your system: fjord when it's dark and paper when it's light.
  • Notifications and Fit Panes as They Open, as switches.
  • Text Size, and the machines this browser reaches.
  • Settings, for a device that may manage.
  • Forget This Browser.

If your connection fails, the page keeps what it last showed, dimmed, says Link to desk lost · trying again (with your computer's name in place of desk), reconnects by itself, then says Connected. You can still scroll back, select and copy meanwhile.

Nothing you type blind reaches an agent. What you type arrives within a couple of seconds or never, and nothing is kept to send later. An answer you press on a card while the link is lost isn't sent: the card says Not sent and stays unanswered, so read the question again and answer then. A line you wrote stays in its field. If you pressed a key just before the link dropped, the card stops saying Sent; when the link is back it's gone if your answer arrived and still there if not.

A change from a page known by its key (removing a device, a setting) that arrives late isn't made, and the page tells you to try again.

If the page says the link is lost on a link that works:

  • A link slower than about a second and a half there and back is too slow to type over.
  • A proxy in front has to pass WebSocket messages on as they come.
  • Not connected · this page is older than its server: load it again means your browser kept an older page. It reloads by itself; reload it yourself if it doesn't.

The page's addresses ​

Add to the addressOpens
?pane=3Pane 3 straight away
?card=3Pane 3's card

A finished or failed pane is marked as seen when you press or type something in it, not when the address opens. A device that only looks never marks a pane as seen.

Limits in a browser ​

  • Machines. A device made without --far shows only the machine isc hub runs on. Make it with --far to see machines named with isc host add, or run isc hub on each.
  • Changes. You can't open, close, split, minimize or rename anything, and only a device with arrange moves panes. Settings changes only what Managing isc hub from the page lists.
  • Cards. The keys under a card are always the same seven. The page never works out an agent's choices for you.
  • Keys. The browser keeps Ctrl+W, Ctrl+T, Ctrl+N and the like for itself.
  • Selecting. A phone's own selection handles don't appear over a pane. Hold a finger still to select.
  • Drawing. Kitty graphics aren't shown. No sound is played.
  • Paths. A press on a path in a pane does nothing, since it's a path on another machine.
  • Devices. Everyone who pairs by one device's code is the same device to the server. To give someone less, share one project or one terminal instead.
  • Encryption. isc hub's own encryption, with --tls-cert, needs an x86-64 processor from about 2014 or later, or on arm64 one with the AES and SHA-2 extensions, which a Raspberry Pi 4 lacks. Notifications need the same. On those, put a proxy in front.