Skip to content

Releases

Tether 0.10.5

Choose a tag to compare

@WhileEndless WhileEndless released this 08 Nov 13:49

Tether 0.10.5

Released 2026-11-08

Highlights

  • Coding-agent tabs now make Codex's live output visibly distinct from an open but quiet terminal, without reading terminal text or making extra server requests.

New

  • Tether recognises Cursor Agent, Gemini CLI and Aider alongside Claude Code, Codex and opencode in tmux sessions.
  • Settings has a search field that opens the matching settings category.

Improved

  • Codex has a clearer original tab mark and a lightweight activity ring while it works.
  • Coding-agent notification and refresh controls now live in Settings ▸ Monitoring.
  • The remote-command reference documents exactly which coding-agent session information may be read and confirms that no terminal transcript is collected.

Fixed

  • Codex work is detected directly from new terminal output even when optional command CPU and I/O sampling is disabled.
  • Agent state no longer presents an unreported state as idle.
  • Downloaded release archives no longer include macOS metadata sidecars that invalidate the app signature after extraction.

Notes

  • Claude Code can provide structured waiting and working states. Other interactive CLIs show working while they produce terminal output, then remain active while their state is unknown.

Tether 0.10.4

Choose a tag to compare

@WhileEndless WhileEndless released this 07 Nov 11:56

Tether 0.10.4

Released 2026-11-07

Highlights

  • Codex copies now reach the Mac clipboard reliably from tmux-backed remote tabs.

Improved

  • Codex tabs use a distinct mark and report active work from foreground activity when the agent does not provide a more specific state.

Fixed

  • A software-update window could rarely draw parts of its text upside down on older macOS 26 releases. It now redraws after the window's layer tree has settled.
  • Codex clipboard copies now work through both tmux clipboard delivery paths: its native control-client path and OSC 52 passthrough. Large supported OSC 52 payloads are retained across transport chunks.
  • A tab with no explicit agent wait reason no longer claims that it is waiting.

Tether 0.10.3

Choose a tag to compare

@WhileEndless WhileEndless released this 07 Nov 06:14

Tether 0.10.3

Released 2026-11-06

Highlights

  • Tether no longer crashes after it has been running for a long time and the network changes (for example when a VPN connects): finished background commands now give back the files they had open.

Fixed

  • Each restart of a host's monitoring (after a reconnect, sleep, a network change or a changed refresh interval) left its connection's pipes open for good. After many of them Tether ran out of open files, and the next command crashed the app. Monitoring streams are now freed when they end, background commands close their pipes as soon as they finish, and running out of open files makes a command fail with a clear message instead of crashing.
  • Programs started in terminals (shells, tmux, ssh, scp) no longer inherit Tether's own open files.
  • A background command whose output was held open by a process it left behind (such as ssh's shared connection) could crash Tether when it was answered; it is now answered safely after a short wait.
  • Password and host-key questions could stop appearing for the rest of the run after a passing error (such as too many open files); Tether now keeps listening for them.
  • If the SSH config file could not be read for a moment, its hosts disappeared from the sidebar, and the next host edit could replace the file with an almost empty one. The hosts now stay, and Tether refuses to write a file it could not read (also in the config editor).
  • A tab whose connection could not be started (too many files or processes open) no longer stays on "Connecting" for ever; it tries again in the usual rounds.
  • A sign-in that Tether restarted because the network changed no longer counts as a failed sign-in, so a new tab is no longer closed after a flapping network.
  • A file transfer that could not start its programs no longer leaves pipes open, and no longer risks crashing Tether.

Tether 0.10.2

Choose a tag to compare

@WhileEndless WhileEndless released this 03 Nov 09:57

Tether 0.10.2

Released 2026-11-03

Highlights

  • Port forwarding is much simpler: say what you want in plain words, and Tether picks a free port, says what will happen and starts it at once.

New

  • Forward a Port… offers four plain choices: open a port of the server on this Mac, reach another machine through the server, let the server reach this Mac (or a machine on its network), or browse through the server with a SOCKS proxy.

Improved

  • The port on this Mac follows the port you want to reach (the same number when it is free, the next free one otherwise; ports below 1024 open as 8000 and up), and the editor says in one sentence what the forward will do, with the server's name and the real ports. A port already in use offers a free one.
  • Adding a forward starts it right away (Add and Start); saving a running forward makes it again with the new values.
  • Each forward says whether it is on, off, waiting for its server or failed, and what that means ("Off — nothing listens on port 8090 of this Mac"). A failed one offers Try Again, and a free port when its own is taken.
  • Updates are never installed without asking: a downloaded update waits until you choose Restart to Update and confirm. Quitting Tether no longer installs it, and the setting is now called Download updates in the background.
  • "Other devices on my network can use it" replaces typing a bind address (custom addresses stay under Advanced).
  • Ports the server listens on show the forward already made for them, with its address and a browser button, or Turn On when it is off. With monitoring off, the panel says how to forward a port by number.

Fixed

  • The scroller no longer shrinks with every key while a program such as Claude Code draws on the normal screen, and scrolling up there no longer shows the same screen with Back to Live.
  • A tab reopened after a relaunch no longer takes such redraws for older output: scrolling to the top stays in the terminal when it already holds everything.
  • The Ports tab no longer appears for this Mac, where forwarding does not apply.
  • ⇧⌘G back through matches in a session's recording reads the part that holds the match once, from where the search found it: in a long coding-agent session a step took about ten seconds and now takes about two.
  • The tab bar's arrows show only when there are more tabs that way: at the first or last tab its arrow is hidden (its place kept, so the tabs do not move), also after scrolling with the arrows.
  • Re-attaching to a tmux session fetches only what was printed while away: Tether keeps track of how far the server's history had grown and asks for about that much first (further back only when the place is not in it). Rows a program redrew in place (Claude Code's prompt box and status line, with the conversation above them unchanged) no longer count as lost: the output above them is enough to find the place, and new messages that took the old box's place are added. Before, Tether then looked back through 1,000, then 10,000 rows, then the whole history (up to 100,000), and printed the last 1,000 again marked "earlier lines may repeat".
  • Ctrl+L (or clear and Return) while scrolled up, even a little, now goes to the bottom and shows the cleared screen with the prompt at the top; a program clearing by itself still leaves the view where you are reading.
  • Starting Claude Code (or another program that asks the terminal about itself) in a tmux tab no longer prints text such as ^[[?65;4;1;2;6;21;22;17;28c or ^[P>|SwiftTerm: tmux answers those questions itself, and Tether no longer types a second, late answer into the pane.

Tether 0.10.1

Choose a tag to compare

@WhileEndless WhileEndless released this 02 Nov 13:46

Tether 0.10.1

Released 2026-11-02

Highlights

  • Updates no longer ask for your Mac's password to use saved passwords each time, build much faster, and no longer fail with "unable to spawn process 'metal'".

Improved

  • Updates build faster: the build folder is kept between updates (in ~/Library/Caches, which macOS may clear), so only what changed is compiled again and the packages Tether uses are not downloaded again. A build folder that no longer builds is built once more from scratch by itself.
  • Builds are signed with a local certificate made once on your Mac ("Tether Local Signing" in your login keychain), so macOS recognises each update as the same app: the keychain no longer asks for your Mac's password after every update, and folder permissions stay granted.
  • make install says that Tether may still be running in the menu bar when it refuses to replace it, and how to install what was just built without building again.

Fixed

  • Building no longer fails with "unable to spawn process 'metal'" when the Swift toolchain uses its newer build system: Tether asks for the build system that needs no Metal compiler (the terminal's shaders are compiled when Tether runs).

Notes

  • The first build signed with the local certificate (the update to 0.10.1, unless you ran make signing-identity before) is a new app to macOS once more: it asks for the Mac's password to let Tether use its saved passwords — choose Always Allow — and folder permissions are asked for again. Later updates no longer ask.
  • The faster builds start with the update after 0.10.1 (the version you update from runs the update).

Tether 0.10.0

Choose a tag to compare

@WhileEndless WhileEndless released this 02 Nov 06:45

Tether 0.10.0

Released 2026-11-02

Highlights

  • Signing in once is enough again: reconnecting after the Mac slept, and new tabs to the same server, no longer ask for the password or Touch ID while it is remembered.
  • Changing networks no longer leaves tabs on "Connecting": a connection made over the old network is checked before it is used, every step of connecting has a limit, and the tab says what did not answer.
  • Sessions you leave running on a server are listed under the host by their tab's name and open again with a click; paused tabs whose session ended there close by themselves, and nothing is ended on a server without you.

New

  • Quitting asks first when plain shells, transfers or port forwards would end (with Quit When Transfers Finish); Restart to Update says the same.
  • Port forwards come back after a relaunch (those listening only on this Mac by themselves, others when you say so), and also for hosts without an open tab when the network returns.
  • A server without tmux says so once (ever), with how to install it.
  • Recordings never fill the disk: with less than 5 GB free (Settings ▸ Recordings ▸ Keep free space on the disk, adjustable or off), they are compressed and the oldest closed ones removed, also below the storage limit and while Tether is locked.

Improved

  • One question per server: a password you type also answers that server's other sign-ins for a minute — further connections for many tabs, a file window, a retry — also with Remember sign-in passwords turned off. Cancelling (or a refused password) stops the server's other waiting connections from asking in turn.
  • Take your time answering: an open sign-in question never times out on Tether's side, the server gets 2 minutes to check the answer, and an answer given after the server's own login time signs in again without asking.
  • Passwords are remembered and filled in for more servers: host names from wildcard or Match blocks, %h and HostKeyAlias, directory accounts with "@" in the user name, and PAM's other wordings of the password question.
  • App Lock no longer forgets remembered passwords; nothing signs in while Tether is locked, and tabs sign in once it is unlocked. Unlocking counts as the Touch ID check for saved passwords.
  • A password typed in Quick Connect goes to that connection without Touch ID, also when you saved it.
  • Patient keep-alives are on by default: every 60 s, so firewalls and routers do not forget an idle connection, but a connection ends only after 10 minutes without any answer. A keep-alive interval set in your ssh_config is kept, with its count raised to last as long.
  • Checking a connection after waking or a network change runs nothing on the server any more (it asks the server to refuse a forward instead): a slow or busy server is no longer taken for a dead one, and a connection that is still receiving data is never closed. After a long sleep or on another network the check decides quickly, and tabs come back without an extra wait.
  • Retry no longer closes a connection that is merely slow; only one found dead is replaced.
  • A change of network on the same interface (another Wi-Fi network, a VPN with a new address) is now noticed.
  • A plain-shell tab on a server whose other tabs use tmux gets a connection of its own, so it cannot take the others' connection down while the Mac sleeps.
  • Turning off connection sharing no longer cuts off running plain shells, transfers and forwards.
  • Your ssh_config is respected: its ConnectTimeout is used, its forwards are set up once (and never fail a sign-in), and a RemoteCommand no longer stops every tab from connecting (the tab says it is not run).
  • The key-login check behind the "Set Up SSH Key" offer runs once per host instead of at every launch, and never through jump hosts.
  • A plain shell (no tmux or screen) that lost its connection starts again in the same tab, as its notice says, instead of ending after a needless sign-in.
  • GNU screen tabs share the session with other displays instead of pushing them out (two Macs no longer take it from each other), and screen's detach key or tmux detach leave the tab waiting for Reconnect instead of ending it.
  • Transfers keep the Mac awake while they run, survive a sleep, are tried again after a lost connection, and previews or drags to Finder no longer wait behind them.
  • What you type while a tab's connection is away is shown in the question about it, which comes only when another program is in front by then.
  • A quick reconnect shows the small banner instead of covering the terminal, which stays scrollable.
  • Private tabs end their own tmux or screen session on the server when closed.
  • The Connection Log says much more about sign-ins and drops: the kind of each question and how it was answered, why nothing remembered answered, every forgotten password and why, the keep-alive each connection uses, ssh's own last words when a connection ends, why a tab tries again, how long the Mac slept, and the settings that matter (at launch and when they change). Tabs have numbers; copied and saved logs carry a header, local times, and no tab titles (which can hold command lines). Filtering by server keeps the sleep and network events.
  • While Tether is locked, or recordings are encrypted, notifications no longer show what programs printed; locking removes those already shown.
  • Two names for the same server (aliases, Quick Connect) share its connections and its tab limit.
  • File tabs and host panels follow changes to the ssh settings, a failed folder listing loads again when the network returns, and host status that stopped updating is shown faded and restarted.
  • A saved password asks for Touch ID when it is read from the keychain; after that it is remembered like a typed one, also through sleep and a locked screen (Settings ▸ Passwords ▸ Also forget them when the screen locks or the Mac sleeps still forgets everything).
  • A remembered password belongs to the server ssh goes to (host name, port, user, jump host), no longer to the connection's socket name, which also depends on the Mac's own name and could change with the network.
  • When ssh asks for a password although passwords are remembered, the Connection Log says why; it also notes when a password was remembered and when a saved one was used.
  • A tab's recording says Paused while the Mac slept for a sleep, not Connection lost.
  • On a server that asks a one-time code (or a push to approve) after the password, all tabs, file windows and transfers share one connection, so the code is asked once.
  • Transfers stopped by a lost connection, the server's session limit or a sign-in nobody could answer are sent again by themselves as soon as the server can be reached (the network back, the server signed in, Tether unlocked), instead of once after five seconds.
  • Folders whose listing failed load again as soon as their server signs in, also in the inspector and in Files windows, and also a first listing.
  • With connection sharing off, a password typed for a transfer or a file listing is remembered and answers the others, and a time limit no longer ends an open password question.
  • A port forward whose connection ended is noticed at once (it waits to be made again on the next connection) instead of up to 30 seconds later.
  • No step of connecting waits for ever: getting the connection, starting the session and restoring it each have a limit while nothing happens (time spent answering a question does not count). The tab then says what did not answer ("No answer from example.com while restoring the session") and tries again; Retry, and the network coming back, also replace an attempt that went silent.
  • Only a question you can see holds other connections back: one waiting unseen (for a tab in the background, or while Tether is locked) no longer keeps every tab, file window and transfer to that server on "Connecting".
  • A server behind a jump host that the jump host cannot reach says so — "The jump host answered, but could not reach the server (No route to host)" — in tabs, file windows and transfers, instead of "refused" or "closed during the handshake"; it is tried again in the server's rounds.
  • File windows: a folder that no longer exists (remembered from the last run, or deleted while shown) shows the nearest folder that does, and says so; one you typed says it does not exist, with Open Nearest Folder. A listing or a folder's size stops on the server when you go elsewhere or close the tab, and failed listings in tabs you are not looking at load when you show them, not all at once.
  • File listings and other commands have one limit that includes connecting, and their errors name the cause ("did not answer", "cannot be reached from this network", "the jump host could not reach …").
  • Host panels (processes, connections, GPUs) ask a server that does not answer less and less often, and at once again when it answers.
  • A transfer whose connection is lost several times is sent again each time the server can be reached (up to six tries, waiting longer each time), and says how far it had come; nothing is ever written over.
  • Sessions a closed tab left running on a server are listed under the host one by one, under the tab's name and color, and open again with a click as that tab, instead of being summed up as "leftover sessions" with a Clean Up button. Opening or ending them all at once is in the host's menu (Open or End Detached Sessions…); like Terminate All Sessions, it now acts only on sessions tabs of this Mac left there, never on another Mac's or another person's on a shared account, and leaves one alone that somebody attached to meanwhile.
  • Paused tabs (suspended, or waiting for a sign-in or Reconnect) close by themselves once their server answers and their session is found gone there; their output stays in the archive. Only tmux or screen saying so counts, asked twice.
  • Names, titles and command lines from servers are shown without control, bidirectional...
Read more

Tether 0.9.0

Choose a tag to compare

@WhileEndless WhileEndless released this 30 Oct 05:12

Tether 0.9.0

Released 2026-10-30

Highlights

  • Connections stay up like plain ssh: a short outage, a Wi-Fi hand-over, locking the screen or the Mac sleeping no longer ends them, so nobody has to sign in again.
  • One sign-in per server, however many tabs, file windows, transfers and port forwards want it at once — and a typed password can answer the same server's later sign-ins while Tether runs (Settings ▸ Passwords ▸ Signing In Again).
  • A terminal scrolls back, finds (⌘F) and jumps between commands (⌘↑ / ⌘↓) through its whole session, however long, from its recording — without the memory growing.
  • The file manager copies, pastes and drags files between servers, terminals and Finder, and searches a folder and everything below it on the server.
  • Tether updates itself: Help ▸ Check for Updates… builds the new release in the background and installs it when you quit.

New

  • Scrolling back past what is in memory shows the session's earlier output from its recording, however long — hundreds of thousands of lines. It is read in the background (decrypting and decompressing included) a chunk at a time as you scroll, keeping the line you look at in place, in a view over the terminal: the terminal itself is never rebuilt, so what runs in it goes on untouched (its screen, the modes a program set, prompts), and nothing in the earlier output acts as new (terminal queries are not answered, old titles, folders or OSC 52 copies do not replace the current ones). The scroller stands for the whole session: drag it anywhere and that part is shown. Lines wrap exactly as the terminal does, also after a resize or a move to another screen; selected text is kept and copied with ⌘C, Copy or the terminal's new right-click menu (Copy, Paste, Select All); ⌘K shows the cleared terminal. Typing, scrolling down or Back to Live returns to the terminal at once. This also works in tabs brought back after Tether reopened.
  • Find in the terminal (⌘F) also looks through the earlier output in the recording, from its end back: the matches nearest to what you see come first, shown and counted while older ones are still looked for ("12+ found · 40 %", how far in its tooltip), marked beside the scroller for the whole session, and ↩ / ⌘G / ⇧⌘G step through them as they arrive — to each next match in the text, in both directions, also where a program redrew its output in place (docker compose, build progress, coding agents). A match in the recording is shown selected and flashes, as one in memory does; ⌘F while scrolled back selects the match on screen at once. Regular expressions and the other options work there too, and a long recording is searched many times faster than it is laid out. Output that cannot be read (encrypted while Tether is locked, or with another key) is left out, shown by a lock in the find bar. The Search window looks through ended sessions' recordings the same way.
  • ⌘↑ / ⌘↓ go to the previous or next command however much output lies between (from the recording when it left memory), and ⇧⌘↑ / ⇧⌘↓ select whole commands of any length ("3 commands selected · 52,340 lines"), copied in full with ⌘C or Copy. Commands are noted in the recording (invisibly, with the time), so this works far back and across relaunches; quick repeated presses each count.
  • File manager copy and paste across servers: files copied (⌘C, Edit ▸ Copy) in one file manager paste (⌘V) into another server's file manager, a terminal or Finder. On their own server they are copied there (into a terminal: their paths typed); from another server they come through this Mac, the temporary copy removed afterwards; pasted into another server's terminal they go where files pasted from Finder go (Settings ▸ Transfers: the terminal's folder, /tmp, or asked). The work under way shows with a spinner ("Getting 3 items from web-1…"), then how it went ("Pasted 3 items from web-1 into data", with what was renamed or could not be downloaded), and the pasted items are selected; a macOS notification tells how it ended when Tether is in the background. Folders and files can be mixed, many files travel as one packed stream, and nothing is replaced. File manager windows have Transfers (⌥⌘L) in their toolbar too. Dragging files onto another file manager or a terminal does the same; dropped back into their own folder, nothing happens.
  • File manager search: the search field (⌘F in a file manager) filters the folder as you type, and ↩ searches it and every folder below on the server — names containing the text, a name pattern (*.log, report-202?.pdf), or files containing the text. Results show which folder they are in, every action works on them (copy, download, drag, delete…), and Show in Enclosing Folder opens their folder. Hidden folders are searched only with hidden files shown; it stops after 1,000 matches or when you press Stop. Uses only find, grep and stat on the server (PowerShell on Windows).
  • Tether updates itself: a newer release is downloaded and built in the background (from its source, at low priority; needs Apple's command line tools) and installed with make install when you quit — or now with Restart to Update. Help ▸ Check for Updates… opens the Software Update window: what the new version brings, the download's and the build's progress (with Cancel), and Restart to Update once it is ready; the first time the updated Tether opens, it shows what changed. Settings ▸ General ▸ Updates turns the daily check and the automatic install on or off (both on by default). Without the build tools you get the release page.
  • Settings ▸ Passwords ▸ Signing In Again: a password you type (or a saved one unlocked with Touch ID) also answers the same server's later sign-ins while Tether runs — a reconnect after the connection really ended, a further connection for many tabs. It is kept only after the server accepted it, only for that connection (host, port, user and jump host), encrypted by a Secure Enclave key that exists only until Tether quits, and never written anywhere; it never answers sudo, a one-time code or a server's own text, and a saved password remembered this way still asks for Touch ID as set. It is forgotten as soon as a sign-in it answered fails (also when the server hangs up instead of saying no), so a changed password is never retried on every reconnect, and a server's connections sign in one after another, so it is never sent by several at once. Each remembered entry is listed with Forget; choose to forget them 1 hour, 8 hours or a day (the default) after they were typed (using one does not extend it) or only when Tether quits, and optionally when the screen locks. A key's passphrase is remembered the same way, for the key: typed once, it opens that key for every server and tab that uses it while Tether runs, also a jump host and its target using the same key, and it stays when a server turns the key down. See docs/connections-and-passwords.md.
  • Help ▸ Connection Log: sign-ins (how long they took, how ssh signed in, and its steps: where it connected, the server's software, which ways of signing in the server offered), connection checks, connections closed and how long they lived, tabs connecting, connected, letting go, trying again and re-attaching (with how many lines were printed while away), sleep and network events with the network interfaces in use, App Lock, port forwards. Each event names its host and tab. Show everything, notices and problems, or problems only; filter by host or kind of event, or search. Copy and Save… take what is shown. In memory only (the last 3,000 events), never a password; also in macOS's log with host names private.
  • A shell or tmux session that ends on the server without being asked to says why when the server tells: "the server's kernel ended example-worker for lack of memory at 09:30", low memory, an idle limit (TMOUT), a restart, a signal. One short read-only look over the connection; also in the Connection Log.
  • Ending a tmux or screen session whose connection is down reaches the server first (one sign-in if needed); if it cannot be reached, choose End When Connected (done as soon as it can be, also after relaunching; the sidebar shows "Ends when connected", and opening the session or Don't End takes it back) or Disconnect.
  • A tab on a system without tmux or screen (its shell ends when the connection drops) offers Keep Shells Running… in its footer: the install command for that system's package manager (sudo apt-get install tmux, brew install tmux on the Mac, …), typed into the terminal for you to run — Tether installs nothing itself. It can be turned off per host.
  • Settings ▸ SSH ▸ Multiplexing ▸ Keep connections open after quitting (off by default): relaunching within the time set signs in nobody.
  • Docker, Docker Compose and Podman in a terminal show their own symbol on the tab and in the sidebar, moving while they work, with what they are doing in its tooltip (building an image, running services, following logs, inside a container, …), as coding agents do. Settings ▸ Terminal has the switch.
  • A failed transfer can be sent again with Retry in the Transfers list: from the start, with free names chosen again, never overwriting anything.
  • When Tether stops answering for a few seconds, or takes long to quit, it keeps a record of where it waited (macOS's sample, in ~/Library/Logs/Tether, on this Mac only; the last five) and notes it in Console; a slow tab switch is noted too.

Improved

  • Connections: Tether sends no keep-alives by default (your ssh_config still applies; forced ones ended connections after 30 s of silence, also right after waking). Each shared connection holds a silent channel, so it never closes merely because no tab used it for a while, also when every tab was moved to the background and across sleep. Before the Mac sleeps, tmux and screen tabs let go of their server sessions and monitoring pauses, so servers send nothing to a sleeping Mac; after wakin...
Read more

Tether 0.8.1

Choose a tag to compare

@WhileEndless WhileEndless released this 26 Oct 20:31

Tether 0.8.1

Released 2026-10-26

Highlights

  • Re-attaching over a slow connection is dependable: tmux sessions are no longer reported as ended or closed while they are still running on the server.

Fixed

  • A slow server or connection no longer makes a reconnecting tab look like a plain shell, which showed tmux's control text in the terminal and could end with "Shell exited" or "The remote session no longer exists" although the session was still there.
  • When tmux drops the connection for another reason than a detach (for example a client that fell too far behind on a slow link), Tether checks the server and re-attaches instead of reporting "Session ended".
  • Output printed while you were away is fetched in steps (1,000 lines, then 10,000, then everything the server kept) instead of the whole history at once, and the restore shows how much has arrived.

Tether 0.8.0

Choose a tag to compare

@WhileEndless WhileEndless released this 26 Oct 11:15

Tether 0.8.0

Released 2026-10-26

Highlights

  • Tether looks the way you want: light, dark or following your Mac; an accent color; the size of text and icons; five sidebar styles; and terminal themes chosen separately from the window, so a light window can keep a dark terminal.
  • On first launch, a short setup asks how Tether should look, with a preview of each choice.
  • Fewer password prompts: connections that survive sleep are kept, background work never asks, and only the tab you are looking at asks.
  • Files pasted or dropped into a terminal go to the folder it is in.

New

  • Settings ▸ Appearance: window appearance (Automatic, Light, Dark) shown as pictures, accent color, and text and icon size for the sidebar, tabs and host panel (View ▸ Text and Icon Size, ⌥⌘+ / ⌥⌘− / ⌥⌘0).

  • Sidebar styles: Detailed (as before), Compact (one line per row), Folders (a Finder-like tree: groups are folders, hosts open to their sessions), Minimal (names only, without "Local" and "Hosts" headers; status shows only when something needs you) and Flat (every host in one list without headers, favorites first with a star). Switch in Settings ▸ Appearance or View ▸ Sidebar Style; addresses, row buttons, counts and Favorites can each be hidden.

  • Terminal colors are separate from the window: Match the App (a light and a dark theme), Always Light, Always Dark, or a Terminal.app profile. Themes: Tether Light and Dark, Paper, Graphite, Rosé Pine Dawn, Solarized, Gruvbox, One Dark, Dracula, Nord, Tokyo Night and Terminal.app's Basic, each with a live sample.

  • First-launch setup (when no settings are saved yet): window, sidebar and terminal in a few steps, every choice applied at once. Settings ▸ Appearance ▸ Set Up Appearance Again, or View ▸ Set Up Appearance…, opens it later.

  • Files pasted (⌘V) or dropped into a server's terminal are uploaded into the terminal's current folder (asked fresh from tmux or the shell). Settings ▸ Transfers can make it /tmp or ask every time; Edit ▸ Paste Files To… (⌥⌘V), or ⌥ while dropping, always asks. When the folder cannot be told, cannot take the files, or a program in front connects elsewhere (ssh, docker exec), Tether asks before sending anything.

  • Download To… in the file manager picks a folder; Settings ▸ Transfers sets the default download folder or asks every time.

  • A tab whose login needs a password while you look at another tab waits with a key mark and asks when you show it.

  • Many tabs to one server sign in with one password: the others use its connection, and a password you just typed (not saved) also answers the server's other logins for two minutes — a second connection when a server limits sessions per connection, or several servers behind the same jump host. It stays in memory only, is never sent to another host, is dropped as soon as the server refuses it (so a wrong one is not tried again by every tab) and when Tether locks.

  • Cancelling a password prompt stops that tab and the server's other background tabs from asking again; they wait until you show them. A password typed into a prompt that waited longer than the server allows goes to a fresh login instead of a closed one.

  • The host panel says "Sign in to see this host's details" with an Open Terminal button when a server needs a password and no tab is signed in.

Improved

  • Tether's own terminal themes use soft backgrounds (no pure white or black) and keep every normal color readable on them.

  • Host rows no longer repeat the host's name under it when its address is the same as its name; the line then shows only the user, port and jump host, or nothing.

  • The archive button in the sidebar no longer shows a count; its tooltip still says how many ended sessions there are.

  • Background work (monitoring, latency, the platform check, port forward keep-alives) never asks for a password or a host key, also through jump hosts: it uses a tab's connection, keys or the agent. A server that needs a password gets no further attempts until a tab signs in, so no failed logins pile up in its log.

  • Uploaded paths are typed as one bracketed paste, quoted for PowerShell on Windows servers; while a full-screen program (vim, htop) is open they are copied to the clipboard instead.

  • Session marks in the sidebar sit in the middle of their row, also when a coding agent adds a second line, and line up with the marks of file tabs and server sessions.

  • Clicking into a terminal, or on the tab already in front, makes the sidebar and the host panel follow it again after a host was clicked in the sidebar.

Fixed

  • After a font size change (⌘+ / ⌘−, Settings), terminals tell the program their new size at once, also in tabs that are not in front; full-screen programs (vim, htop) no longer look broken until something else resizes them.

  • After sleep, Tether no longer closes every shared connection: each is checked over its own link (also on Windows servers and full connections) once the network is really back, and only dead ones are closed. Tabs that had stayed connected no longer log in again and ask for the password.

  • Typing a password into a prompt whose ssh had already ended could quit Tether without a crash report (SIGPIPE). Such prompts now disappear by themselves, and answering a prompt twice (Return and the button) is harmless.

  • After the server refused a sign-in (a wrong or changed password) or the password prompt was cancelled, a tab no longer retries — and asks — again and again: it waits with "Not connected" and the reason until you press Reconnect Now; its card can also close the tab.

  • A tab's prompt that waited in the background longer than the server allows is withdrawn; the tab signs in afresh when shown instead of sending the password to a closed login.

  • Download and Download All in the file manager's detail pane could overwrite a file in Downloads; every download now picks a free name, also when the name was taken while it waited in the queue, and Show in Finder points at the downloaded copy.

  • A packed upload of same-named files from different folders could lose one; names that differ only in case (README, readme) no longer land on each other on the Mac; a downloaded item whose name was taken meanwhile is kept under the next free name instead of being discarded.

  • Copy in the file manager no longer clears the clipboard when nothing could be downloaded; its temporary copies are removed after a day.

  • A server without tmux or screen: the "Not persistent" label explains that the shell ends with the connection, and the notice when the connection drops says a reconnect starts a new shell instead of promising the old one back.

  • Cancelling a password prompt ends that login instead of letting ssh send an empty password (a failed login on the server) and ask again; ending a login also ends the ssh it started for a jump host. A login Tether stopped is no longer taken for a successful one, a wrong password typed with "Remember" is not sent a second time from the keychain, and a reconnect never starts while another attempt of the same tab is still running.

  • A password typed once also answers the other logins already waiting for the same user and host; one-time codes and "New password" questions are never remembered or reused. A prompt of a tab that was closed is never shown, and a prompt for a tab in front is never timed out.

  • Pasting files into a network device or limited shell says at once that Tether sends such hosts no files; while the terminal's folder is looked up, "Finding the terminal's folder…" shows (5 seconds at most, then Tether asks).

  • A folder reported by the shell with unencoded spaces no longer shows up as a raw file:// address.

  • Less CPU while terminals print a lot (a coding agent at work): tmux output is read in one pass per chunk instead of line by line, status symbols in the sidebar stay still (the tab bar shows them moving), the window title and agent state redraw only when what they show changes, and tabs not on screen are asked about their activity half as often.

Notes

  • Saved terminal colors carry over: the Terminal.app profile, Light, Dark and Solarized stay what they were. New installs start with Match the App (Tether Light / Tether Dark).
  • The terminal's colors, font and cursor moved from Settings ▸ Terminal to Settings ▸ Appearance.

Tether 0.7.0

Choose a tag to compare

@WhileEndless WhileEndless released this 26 Oct 08:32

Tether 0.7.0

Released 2026-10-26

Highlights

  • Coding agents waiting for you are noticed: Claude Code asking for plan approval, a question or a permission marks its tab with a raised hand and notifies you, in any tab — nothing to set up in Claude Code.
  • Tabs show what is happening: coding agents get their own symbol, a command that is working gets a moving mark, and programs that are only open (vim, less) stay quiet.
  • Everything Tether runs for a host can be switched off, for all hosts or for one: monitoring as a whole, each host panel tab, and each background job.

New

  • Settings ▸ Monitoring lists everything Tether runs on hosts with a switch each; every host can choose for itself (System Setting / On / Off) in its editor, from the sidebar's Monitoring menu or the host panel's menu. "What Runs on Hosts" says which switch stops each script.
  • The Containers and Kubernetes tabs show only on hosts that have Docker/Podman or kubectl/k3s/microk8s/oc (a setting; a host can still show them).
  • Tether understands the Program Status Protocol (OSC 7501) and unwraps tmux passthrough, so programs' notifications reach Tether's tmux tabs too.
  • Settings ▸ Terminal ▸ Tabs: agent symbols, a faint dot for idle programs, when a quiet command counts as working. Settings ▸ Terminal ▸ Behavior: notify when an agent waits or is done, and how often agents are looked at.
  • Network devices, firewalls and limited shells (Cisco, Junos, FortiOS, RouterOS, PAN-OS, menus, git-shell) are recognised on first contact and get a plain login with their own command line; Tether then runs nothing else on them. Downloads (classic scp) and port forwards still work. Edit Host ▸ Shell, or the host's Monitoring menu, sets it by hand.
  • View ▸ Allow Mouse Reporting (⌘R while connected, as in Terminal.app) turns mouse reporting on or off for the terminal in front; while it is not connected, ⌘R still reconnects.
  • ⌘E opens the file manager in the current terminal's folder, as its Browse button does (it was ⇧⌘O). Use Selection for Find moves to ⇧⌘E.
  • The tab bar's "+" opens a new tab like the one in front (⌘T); hold it for a local terminal, a private tab or a new connection.

Improved

  • The toolbar's New Connection button has its own symbol, and the sidebar's add menu says "Add", so the three buttons are no longer mistaken for one another.
  • The Kubernetes tab keeps its header at the top in every state, and messages are aligned to the top and selectable; no host panel tab can move the panel's header to the middle any more.
  • Tab numbers (⌘1…⌘9) no longer stay on screen after ⌘ was released in another app or during ⌘Tab.

Fixed

  • The host-key question for a new host was asked twice (monitoring started its own login at the same time); background work now waits for the first login, and the same question from several ssh processes is shown once.
  • After clear, the prompt could move to the middle of the screen when the window grew (at launch, when a tab was shown, on resize); it stays at the top, and the cleared lines stay in the scrollback.
  • Text selected in the history no longer disappears when the command keeps printing: the selection stays unless the program in the terminal tracks the mouse itself.
  • Changed ssh settings now reach host monitoring without restarting Tether.
  • A host whose shell does not know exit (some device CLIs) no longer fails to connect with connection sharing on, and a session that never starts Tether's shell (a menu) no longer waits for ever behind "Connecting".

Notes

  • "Load system information automatically" (Settings ▸ Monitoring) is now the "Monitor the host" switch and really stops monitoring when off; check it if you had switched it off before.