{
  "schema_version": 1,
  "type": "skill",
  "slug": "desktop-ssh",
  "title": "Desktop SSH",
  "brief": "Guide for connecting to Adom containers via SSH from a Windows, Mac, or Linux desktop.",
  "version": "1.0.0",
  "tags": [],
  "license": "MIT",
  "source_path": "SKILL.md",
  "readme": "# Desktop SSH Guide\n\nConnect to your Adom containers from your personal computer via SSH.\n\n## Overview\n\n```\nYour Desktop --SSH--> adom.cloud:22 --routes--> Adom Container\n                      (gateway)\n```\n\nAll you need:\n1. The SSH keypair from your Adom container copied to your desktop\n2. An SSH config entry for easy access\n\n## Recommended: Claude Code Prompt (easiest)\n\nEvery Adom user has Claude Code. The fastest way to set up desktop SSH is to generate a prompt from inside your Adom container, then paste it into Claude Code on your desktop.\n\n### Step 1: Generate the prompt (in your Adom container)\n\nRun this in your Adom container's Claude Code to generate a ready-to-paste prompt:\n\n```\nGenerate a Claude Code prompt I can paste on my desktop to set up SSH access to my Adom containers. Include:\n1. My private key contents (from ~/.ssh/id_ed25519)\n2. My public key contents (from ~/.ssh/id_ed25519.pub)\n3. Instructions to save them as ~/.ssh/id_ed25519_adom on the desktop (use _adom suffix to avoid clobbering existing keys)\n4. SSH config entries for my containers (get them from: adom-cli carbon containers list)\n5. The icacls command to lock down permissions (Windows) or chmod 600 (Mac/Linux)\n6. A test command to verify the connection\n```\n\nClaude will read your keys and container list, then produce a self-contained prompt.\n\n### Step 2: Paste the prompt on your desktop\n\nOpen Claude Code (or any Claude interface) on your desktop machine and paste the generated prompt. Claude will:\n1. Save the private key to `~/.ssh/id_ed25519_adom`\n2. Save the public key to `~/.ssh/id_ed25519_adom.pub`\n3. Set correct file permissions\n4. Create SSH config entries for all your containers\n5. Test the connection\n\nThat's it -- no manual file editing, no PuTTYgen, no confusion.\n\n### Example generated prompt\n\nThe prompt Claude generates will look like this:\n\n```\nI need to set up SSH access to my Adom containers from this machine.\n\nSave this private key to ~/.ssh/id_ed25519_adom:\n\n-----BEGIN OPENSSH PRIVATE KEY-----\n<key contents>\n-----END OPENSSH PRIVATE KEY-----\n\nSave this public key to ~/.ssh/id_ed25519_adom.pub:\n\nssh-ed25519 AAAA... adom-container\n\nAfter saving both files, lock down permissions:\n- Windows: icacls %USERPROFILE%\\.ssh\\id_ed25519_adom /inheritance:r /grant:r \"%USERNAME%:(R)\"\n- Mac/Linux: chmod 600 ~/.ssh/id_ed25519_adom\n\nThen create or append to ~/.ssh/config:\n\nHost adom-myproject\n    HostName adom.cloud\n    User john-myproject-abc123\n    IdentityFile ~/.ssh/id_ed25519_adom\n\nThen test: ssh adom-myproject\n```\n\n---\n\n## Alternative: Manual Setup\n\nIf you prefer to set things up manually without Claude Code on your desktop.\n\n### Step 1: Get your keys from your Adom container\n\nIn your Adom container terminal:\n\n```bash\ncat ~/.ssh/id_ed25519      # Private key -- copy this\ncat ~/.ssh/id_ed25519.pub  # Public key -- copy this\n```\n\nIf no keys exist yet, generate and register them first:\n\n```bash\nssh-keygen -t ed25519 -C \"adom\" -f ~/.ssh/id_ed25519 -N \"\"\nadom-cli carbon user ssh-key-add --display-name \"My Key\" \"$(cat ~/.ssh/id_ed25519.pub)\"\n```\n\n### Step 2: Save keys on your desktop\n\nCreate these files on your desktop:\n- `~/.ssh/id_ed25519_adom` -- paste the private key\n- `~/.ssh/id_ed25519_adom.pub` -- paste the public key\n\nSet permissions:\n\n**macOS / Linux:**\n```bash\nchmod 600 ~/.ssh/id_ed25519_adom\nchmod 644 ~/.ssh/id_ed25519_adom.pub\n```\n\n**Windows (PowerShell as Administrator):**\n```powershell\nicacls $env:USERPROFILE\\.ssh\\id_ed25519_adom /inheritance:r /grant:r \"$env:USERNAME:(R)\"\n```\n\n### Step 3: Find your container SSH usernames\n\nIn your Adom container:\n\n```bash\nadom-cli carbon containers list\n```\n\nLook for the `ssh_credentials.command` field for each container.\n\n### Step 4: Configure SSH\n\nEdit `~/.ssh/config` (macOS/Linux) or `%USERPROFILE%\\.ssh\\config` (Windows):\n\n```\nHost adom-myproject\n    HostName adom.cloud\n    User john-myproject-abc123\n    IdentityFile ~/.ssh/id_ed25519_adom\n```\n\nAdd one `Host` block per container you want quick access to.\n\n### Step 5: Connect\n\n```bash\nssh adom-myproject\n```\n\n---\n\n## Alternative: Generate fresh keys on your desktop\n\nIf you prefer not to copy keys from your container, generate new ones on your desktop and register them with Adom.\n\n### macOS / Linux\n\n```bash\nssh-keygen -t ed25519 -C \"my-desktop\" -f ~/.ssh/id_ed25519_adom\n```\n\n### Windows (OpenSSH -- built into Windows 10/11)\n\n```powershell\nssh-keygen -t ed25519 -C \"my-desktop\" -f $env:USERPROFILE\\.ssh\\id_ed25519_adom\n```\n\n### Windows (PuTTY)\n\n1. Open **PuTTYgen**\n2. Select **EdDSA** (Ed25519) at the bottom\n3. Click **Generate** and move the mouse\n4. Click **Save private key** as a `.ppk` file\n5. Copy the public key text from the top box\n\n### Register with Adom\n\nGive the public key to Claude Code in your Adom container:\n\n```\nRegister this SSH public key with my Adom account:\nssh-ed25519 AAAA... my-desktop\n```\n\nClaude will run:\n```bash\nadom-cli carbon user ssh-key-add --display-name \"My Desktop\" \"ssh-ed25519 AAAA...\"\n```\n\n---\n\n## PuTTY Users\n\nIf you use PuTTY instead of OpenSSH on Windows:\n\n1. **Convert the key:** Open PuTTYgen > File > Load > select your `id_ed25519_adom` file > Save private key as `.ppk`\n2. **Configure PuTTY:**\n   - Session: Host Name = `adom.cloud`, Port = `22`\n   - Connection > Data: Auto-login username = `john-myproject-abc123`\n   - Connection > SSH > Auth > Credentials: Browse to your `.ppk` file\n   - Session: Save as \"Adom MyProject\"\n3. **Connect:** Double-click the saved session\n\n---\n\n## VS Code Remote SSH\n\nYou can edit files on Adom containers directly from VS Code:\n\n1. Install the **Remote - SSH** extension\n2. `Ctrl+Shift+P` > \"Remote-SSH: Connect to Host\"\n3. Select from your SSH config or enter `john-myproject-abc123@adom.cloud`\n\n---\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---------|-----|\n| \"Permission denied (publickey)\" | Key not registered with Adom, or wrong key file on desktop |\n| \"Connection timed out\" | Firewall may be blocking port 22 outbound |\n| PuTTY \"server refused our key\" | Convert to `.ppk` with PuTTYgen |\n| \"Host key verification failed\" | `ssh-keygen -R adom.cloud` and retry |\n| Works from container but not desktop | Different keypair -- copy keys from container or register desktop key |\n| \"Connection refused\" | Container may not be running -- check on https://hydrogen.adom.inc |\n| Windows: \"ssh is not recognized\" | Settings > Apps > Optional Features > Add \"OpenSSH Client\" |",
  "author": {
    "id": "695820315b5f1e4db2fcf602",
    "name": "Kyle Bergstedt",
    "email": "kyle@adom.inc"
  },
  "visibility": {
    "public": true
  },
  "hero": null,
  "sample_prompts": [],
  "discovery_triggers": [],
  "discovery_pitch": null,
  "metadata": {},
  "created_at": "2026-05-28T05:30:00.124Z",
  "updated_at": "2026-05-28T05:30:00.124Z",
  "sub_skills": [],
  "parent_app": null
}