diff --git a/README.md b/README.md
index 8f3b1d8..154386e 100644
--- a/README.md
+++ b/README.md
@@ -41,6 +41,14 @@
In every layout, the words that changed inside a line are marked.
- **Opens other repositories** from a list of recent ones, or from a folder picker
(o).
+- **Opens repositories on another machine.** Write the place as `[user@]host:path`, for
+ example `gites myserver:/srv/app`, or choose **Open on another machine…** in the
+ repository menu (o) or on the welcome screen. `host` can be any host name
+ from your `~/.ssh/config`; that file is also where a port other than 22 goes. gites
+ runs git on that machine through ssh, so git must be installed there. It logs in with
+ your ssh keys or the ssh agent and never asks for a password, so a login that needs a
+ password does not work. You see the history of the repository on that machine: its own
+ branches and its checked-out branch, as for a repository on this computer.
- **Stays current.** gites reloads the repository when its window gets focus again.

@@ -64,6 +72,7 @@ gites runs the `git` command, so git must be installed and on your `PATH`.
```sh
gites # the repository in the current folder
gites ~/code/my-project # another repository
+gites myserver:/srv/app # a repository on another machine, over ssh
```
## Keys
diff --git a/docs/superpowers/plans/2026-10-15-remote-repositories-over-ssh.md b/docs/superpowers/plans/2026-10-15-remote-repositories-over-ssh.md
new file mode 100644
index 0000000..aa91e73
--- /dev/null
+++ b/docs/superpowers/plans/2026-10-15-remote-repositories-over-ssh.md
@@ -0,0 +1,142 @@
+# Repositories on another machine, over ssh: Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Open a git repository on another machine with `gites host:/path` or from the window, and show its history exactly as for a local repository, by running every git command through ssh.
+
+**Architecture:** A new `Location` value (local folder, or ssh target plus path) replaces the folder that `git()`, `git::load`, `details::load` and `diff::load` take today. `git()` runs git directly for a local location, and `ssh … "git -C '' '' …"` for a remote one, with a shared ssh connection. Nothing above `git()` changes except how the location is chosen at start-up and when opening a repository; the window gets a text field to type `host:/path`.
+
+**Tech Stack:** Rust (Tauri 2 commands), Vue 3 + TypeScript, OpenSSH client, git.
+
+**Spec:** `docs/superpowers/specs/2026-10-15-remote-repositories-over-ssh-design.md`
+
+## Global Constraints
+
+- Remote text form: `[user@]host:path`; `host` has no `/` or `\`, is longer than one character, and no local folder with exactly the whole text as its name exists (relative to the current folder). Everything else is local.
+- A remote path starting with `~/` keeps the `~` outside the quotes.
+- ssh options, in this order: `-o BatchMode=yes -o ConnectTimeout=10 -o ControlMaster=auto -o ControlPath= -o ControlPersist=10m`, then the target, then one command string. On Windows the three `Control…` options are left out.
+- Socket: `/gites-%C`, where the runtime folder is `dirs::runtime_dir()`, or `/tmp` when that is `None`.
+- Quoting: each word in single quotes; a `'` inside becomes `'\''`.
+- Remote repository name: `: