---
name: connect-vps
description: Connect the user's VPS (Hostinger, Hetzner, OVH...) to their terminal as `ssh hermes`, finding the server and its SSH keys page in their provider panel through Chrome AI, then tell every agent the VPS exists. Use when the user bought a VPS, wants to connect it, or `ssh hermes` fails.
argument-hint: "<provider, e.g. hostinger> [alias, default hermes]"
user-invocable: true
---

Connect the VPS the user paid for so that `ssh hermes` opens it from any terminal without a password, and so that every agent knows the server is there for their sites, apps and agents. The first argument is the provider (for example `hostinger`), the second the alias (default `hermes`; use it everywhere below in place of `hermes`). Do every step yourself and only ask for what needs a human (signing in to the panel, typing a password). Talk to the user in their language, short messages, no jargon (never say "public key", "authorized_keys" or "SSH config" to them; say "the access key" and "the shortcut").

If you got this skill from a link instead of a local folder, install nothing else from the repo: download a file it links only when a step needs it, with `curl -fsSL https://raw.githubusercontent.com/Melvynx/ai-maxxing-skills/main/skills/connect-vps/<path> -o <scratch>/<file>` (for example `scripts/ssh-setup.sh`), and read another skill it names only when you reach it, from `https://raw.githubusercontent.com/Melvynx/ai-maxxing-skills/main/skills/<skill-name>/SKILL.md`.

Never type a password, a code or a card number, never reinstall, rebuild or reboot the server, and never touch its SSH settings or firewall here: locking it down is the next lesson, "Sécuriser ton serveur". On Windows, do the same steps by hand in PowerShell (`ssh-keygen` and `ssh` are built in, the shortcut file is `$env:USERPROFILE\.ssh\config`), and copy the key with `type $env:USERPROFILE\.ssh\hermes_ed25519.pub | ssh <user>@<ip> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"`.

1. Check the tools: `ssh -V` and `command -v ssh-keygen` (built into macOS and Linux), and `command -v chrome-ai dev-browser`. If Chrome AI is missing, run the `setup-dev-browser` skill first. If `ssh hermes true` already works with `-o BatchMode=yes`, skip to step 7.
2. Create the access key, only if it is missing, with [scripts/ssh-setup.sh](scripts/ssh-setup.sh) `key hermes`. It prints the public key from `~/.ssh/hermes_ed25519.pub`; never overwrite or show the private one.
3. Run `chrome-ai start` and open the provider's panel with the `dev-browser` skill, on a page named `connect-vps`. Find the panel address in [references/providers.md](references/providers.md); for a provider not listed, search for its client area. If the page asks to sign in, tell the user to sign in in the Chrome AI window and say "done", then reload.
4. Find the server. Read the page with `snapshotForAI()` and note the IP address, the login user (`root` on most providers, `ubuntu` or `debian` on OVH) and the OS. If the user has several servers, ask which one. Take a screenshot and check the IP is the one you noted.
5. Put the key on the server, the way [references/providers.md](references/providers.md) says for that provider:
   - If the panel can add a key to a running server (Hostinger: Manage, Settings, "SSH keys"), add it there with the alias as name, paste the public key, and ask the user before you click the final add button.
   - If keys only apply at creation (Hetzner, DigitalOcean, OVH, Netcup, Contabo), never reinstall: give the user one line to paste in their own Terminal, `ssh-copy-id -i ~/.ssh/hermes_ed25519.pub <user>@<ip>`, with the real values. They answer `yes` to the first question and type the server password themselves (it came by email, or they reset it in the panel). Wait for "done".
6. Add the shortcut with `ssh-setup.sh config hermes <ip> <user>`. It backs up `~/.ssh/config` first and does nothing if the shortcut already points to that IP. Exit code 4 means the alias already points to another server: ask the user for another name (for example `hermes2`) and redo steps 2 and 6 with it.
7. Prove it with `ssh-setup.sh test hermes`. Exit code 5 means the key is not on the server yet: wait a minute and retry once (panels apply keys with a delay), then go back to step 5 with the `ssh-copy-id` path. On success it prints the host, OS, CPU, RAM, disk, and whether Docker and Dokploy run.
8. Tell every agent about the server: write the block from [references/global-config.md](references/global-config.md), filled with the real values, to the brain `AGENTS.md`, to `~/.claude/rules/vps.md` and, if Codex is installed, to `~/.codex/AGENTS.md`. Then merge `"Bash(ssh hermes *)"`, `"Bash(scp * hermes:*)"` and `"Bash(rsync * hermes:*)"` into `permissions.allow` of `~/.claude/settings.json`, keeping every existing entry; read the file first and write valid JSON back.
9. Check it from a new session: `$SHELL -lic 'ssh -o BatchMode=yes hermes hostname'` answers, and close the browser page with `browser.closePage("connect-vps")`.

End with a short check list, a check or a cross on each line: access key created, server found (provider, IP), key on the server, shortcut `ssh hermes` works without a password, server facts (OS, RAM, disk, Docker), agents told (brain, Claude Code, Codex), permissions added. If `password_login` in the facts is `yes`, add one line that the server still accepts passwords and that the next lesson locks it to the key only. Then tell the user in 3 lines: type `ssh hermes` in a terminal to enter the server, `exit` to leave, and one thing to ask the agent right now, such as "check how much space is left on my server".
