Engineering preview Mac signed execution passed Windows / Linux not yet

Connect your machines.
Feel the speedup.

Your Mac borrows idle cores from your other machines, so your own Mac finishes jobs faster — and it tells you exactly what it gained. Your auth and your data stay on your Mac.

Measured on one thing: a CPU-bound Python script (xover_par.py) on one paired Mac. Everything else still runs locally. This is not a general speedup yet.

What the public release feed says today

Source: feed-snapshot.json

HTTP
not measured
Fetched
not measured
Envelope sha256
not measured
Mac
not measured
Linux
not measured
Windows
not measured

One line, verified before it installs.

Downloads the release archive for this machine, checks its SHA-256 against a signed manifest, then installs to ~/.local/opt/tether. No sudo, no shell profile edits.

Install command sh install.sh Needs python3 (3.9 or newer) on PATH. The installer never downloads Python. Nothing is installed until a signed release manifest is published: the script refuses a manifest it cannot verify against the publisher key. No release archive is published yet.

Then pair a second machine

The installer prints this as the next step. It creates a one-time invite for a machine you own; nothing is sent anywhere until you import it there.

tether pair <host>

Uninstall: the same script with --uninstall removes only a tree it installed.

One job, one donor: measured on the product path

Measured with tether --auto, not a bench tool: a python-cpu-parallel job run on this Mac alone, then split with one donor. The two runs produced cmp-identical output. This is one workload class; everything else still runs locally.

4.523 s 1.911 s
Wall time for the whole job: this Mac alone, then the same job split with one donor.
2.4× faster · 16 units · Mac load about 69 · outputs cmp-identical · Source: pull-split-product-path.json, 2026-10-20

Warm stage: one round trip. Since 362bedbc, a warm stage is one round trip — the apply's own answer is the preverify, so an unchanged tree is not hashed twice. No donor timing is claimed for this change.

  1. 01

    Pair a machine you own

    One ssh relationship. No install on the donor: Tether sends the runner over ssh and runs it with the donor's own python3.

  2. 02

    Tether splits the job

    The job is cut into units. Each unit runs once — some on your Mac, some on the donor — and the merged output is checked against a local re-run.

  3. 03

    Your Mac finishes sooner

    Your Mac is always a worker, never just a dispatcher. If the donor would be slower, the job stays local.

Recorded run, played back

One job, split across two machines

A recorded run of one job, replayed at the speed it was measured: units leave this Mac, run on a donor machine, and the whole job finishes sooner. The bars below are the static record; the replay only adds movement.

A recorded split run of one job, drawn as two bars: python-cpu-parallel-v1, 24 units, split across two machines. This Mac ran 16 units in 21.150 s, the donor machine hk ran 8 units in 18.277 s. The whole job finished in 21.152 s against 27.161 s with this Mac alone, 1.28 times faster. Every arm produced the same output digest 896dd1ca79aeb406.

python-cpu-parallel-v1 One job, 24 units across two machines
This Mac 16 units · 21.150 s
hk 8 units · 18.277 s
Units kept here
16
Units sent out
8
Donor compute, of its leg
16.791 s of 18.277 s
Dispatch and transfer
1.486 s

Static view of the recorded run. The replay animates only when the page loads its record.

21.152 s1.28× Whole job, split wall time. The same job alone on this Mac took 27.161 s.

896dd1ca79aeb406 Outputs identical: every arm of this run produced the same digest, recorded with the run.

Motion is the record's own timing on one shared scale, so the faster bar is the machine that finished first in the measurement. It plays once on load, honours prefers-reduced-motion, and the numbers above do not depend on it.

Jobs out, receipts back

Loading the measured fabric.

    Two real runs, one win and one honest loss

    Source: fabric-measured.json

    349.12 s127.00 s
    Slowest-case (p95) wall time, Mac alone then Mac with one peer, while the Mac was heavily loaded.
    5 paired samples · outputs sha256-identical · load 500-875
    30 of 32 cores
    Connected cores that were usable right after that run.
    from the signed fabric status the run recorded
    46.93 s92.20 s
    Median on the Mac against median sent to the peer at normal load. The peer lost, so the job stayed local.
    5 paired samples · load about 150

    The second result is the safety check working: when sending a job out would be slower, Tether keeps it on your Mac.

    Measured, not claimed

    Source: measured-not-claimed.json

    Every figure is computed at deploy from the committed bench records, and keeps its load, pair count and spread. No headline speedup: the same donor wins on a saturated Mac and loses on a quieter one.

    Shown from the committed records. The page reads the same file again when it can.

    Saturated Mac

    × faster
    Mac alone against Mac with one peer, over the paired samples of the qualified run.
    paired samples · · Mac spread – s

    Quieter Mac

    × slower
    Same donor, quieter Mac: sending the work out lost, so the gate kept it local. Shown, not averaged away.
    paired samples · · peer spread – s

    Bench run, one job

    – ×
    Spread across the pairs of one split run, slowest to fastest. A bench record, not the everyday command.
    paired samples · median × ·

    When sending work out starts to help

    Source: when-it-helps.json

    Splitting a job pays a fixed cost before any donor does useful work, so a small job is faster kept on your Mac. These are the sizes measured on 2026-10-18, and the conditions they were measured under.

    These figures are not available right now.

    units
    The smallest job measured to finish sooner split than run locally, on a busy Mac.
    load1 –, which slows only the local side, so this is a lower bound
    units
    Where the planner draws the same line from the clean peer measurements: one unit smaller stays local.
    units stay on your Mac
    s
    The fixed cost of sending a test stage to a donor, counted before any of the job runs.
    raised from s: the real MB stage took longer than that every time it was measured
    cores
    At least this many cores on one real dispatch: this Mac plus one donor.
    local + donor · about – GiB, depending on the donor's free memory

    How Tether decides

    Source: how-it-decides.json

    Work leaves this Mac only when all three of these are true.

    1. A qualified donor

      A donor is qualified only when its price was measured under one load: every leg at or under , and the campaign's load span within .

    2. Above the crossover

      The job has to be above the crossover size: a busy Mac first won at units, and the planner keeps local and sends .

    3. A measured transfer

      The data-transfer cost has to be measured for this directory, not estimated: fewer than timed transfers keeps the job on the Mac.

    How splitting works

    Your Mac stays a worker. A low-load benchmark of a -unit job ran –× as fast with this Mac still running part of the job, of pairs, with identical outputs. A benchmark at low load, not a guarantee. stays-a-worker.json

    Every measured sample, run by run

    Measured on real hardware

    Not an illustration

    Real runs of one workload on the Mac and one paired Linux peer. Each run shows its date, how busy the Mac was, and what the gate decided. When an offload would lose, Tether keeps the work local.

    No measurement published.

    Local against with-peer wall time

    Measured samples, run order

    Every paired sample from the published runs, Mac against peer. The fabric records no continuous wall-time history, so this plots the measured campaign samples in the order they ran.

    Loading the measured samples.

    One job, split across machines

    The same job run on this Mac alone, then split between the Mac and one donor machine. Each pair shows who did how much, when each finished against the plan, and whether the outputs matched.

    Loading the split-run record.

    Measured 2026-10-19: one job, this Mac and donor machines

    Wall-clock seconds for one CPU job, measured on 2026-10-19 with tools/pull_split_run.py. This is a proof run. It is not yet what the everyday tether test --auto command does.

    Wall-clock seconds for one CPU job split across machines, measured 2026-10-19 with tools/pull_split_run.py. Each repeated figure is one run.
    Job Mac load This Mac alone With one donor With two donors Faster by
    16 units, Mac heavily loaded 486-1014 9.38 s, 10.77 s 2.72 s, 2.77 s not run 3.5-3.9x
    16 units, quiet Mac 45-49 3.68 s, 3.78 s 2.00 s, 1.97 s not run 1.84-1.92x
    48 units, three machines 43-65 12.2 s, 14.7 s 6.8 s, 7.7 s 4.4 s, 4.7 s 2.8 to 3.1 times

    The output sha256 was identical on every arm of the 48-unit run. This Mac still did 16 of those 48 units: it works, it does not hand the job off.

    Honest limit: a slow donor (hk, 2.49 s per unit against about 1.0 s locally) can lengthen the end of the job. A fix for that is in progress.

    One tether with receipts behind it. Two with no authorized host.

    Drawn from the state the CLI reports. A solid moving line is a link that has carried real work with identical output. A dashed grey line means no authorized machine exists yet.

    Tether fabric map: one verified Mac-to-Mac tether, two unauthorized hosts A controller Mac sits at the left. One tether runs to an authorized peer Mac and is drawn solid and animated because signed receipts back it. Two tethers run to a Windows host and a Linux host and are drawn dashed and grey because no authorized host exists for either platform yet. The same four machines and their states are listed as text below this map. This Mac · controller Authorized Mac peer Windows host Linux host

    Solid, animated — receipt-backed link Dashed, grey — no authorized host yet

    What works today, and what does not

    This page is static. It does not look at your machines. Live capacity is on the status dashboard after tether-fabric status --json.

    Works

    Mac to Mac, signed

    Three signed runs gave identical output, finishing in 17.1 s against 28.2 s on the Mac alone (generation 20260901T081436Z). A lapsed pairing fell back to local with nothing left behind.

    Not yet

    Windows and Linux

    No authorized Windows or Linux machine has been proven. Tether does not claim parity.

    Preview

    Not ready to turn on for everyone

    Some activation checks are still blocked or unmeasured, so ready_for_activation: false. The safety check stays closed until they pass. That is the design working, not a broken page.

    Four checkout steps. No public installer.

    Eligible work uses tether --auto. If the peer is missing, slower, or revoked, the job stays on your Mac. The pairing steps page matches the Mac app exactly.

    01

    Install from checkout

    Build the clean wheel and install it on the controller. A signed public installer and updater are not shipped; local archive installation is documented on the download page.

    python3 -m pip install /path/to/tether-wheel.whl
    02

    Pair your machines

    Create an explicit paired-key relationship with a machine you own or are authorized to use.

    tether-fabric pair create PEER_ID --display-name NAME --json
    03

    Read signed status

    Inspect the receipt-backed snapshot. Capacity totals come from signed status, not this page.

    tether-fabric status --json
    04

    Run one qualified class

    Eligible commands use tether --auto. Local fallback stays on if a peer is missing or slower.

    tether --auto python3 xover_par.py
    Current pair grammar

    Invite lines start with tether-invite-v1. and are never put in a URL or query string. Same-store second import is refused as already used. The Mac app runs these; this page only prints them.

    • tether-fabric pair create PEER_ID --display-name NAME --json --invite
    • tether-fabric pair import PEER_ID --invite CODE
    • tether-fabric pair import PEER_ID --key-file PATH --display-name NAME
    • tether-fabric ingest PATH
    • tether-fabric revoke PEER_ID WORKLOAD_CLASS --reason TEXT

    Try it on two machines you own

    Install from a checkout, pair a second machine, and run one qualified job. If the peer is slower, the job stays on your Mac.

    Feed measurement and per-platform availability

    Signed stable.json snapshot

    Feed host
    hbozok-US/tether-updates
    Asset
    releases/latest/download/stable.json
    Fetched
    2026-10-28T16:55Z
    HTTP
    404
    Envelope sha256
    unknown

    MEASURED: the latest/download alias returned HTTP 404. There is no signed tether.update-feed.v1 envelope to show.

    Mac

    local-unsigned lane only until Developer ID

    Asset on public feed: none

    Linux

    archive when a signed feed exists

    Asset on public feed: none

    Windows

    not yet

    Asset on public feed: none