skill
Remote Bootstrap
Public Made by Adomby adom
Bootstrap a new Adom container from an existing one entirely over SSH.
{
"schema_version": 1,
"type": "skill",
"slug": "remote-bootstrap",
"title": "Remote Bootstrap",
"brief": "Bootstrap a new Adom container from an existing one entirely over SSH.",
"version": "1.0.0",
"tags": [],
"license": "MIT",
"source_path": "SKILL.md",
"readme": "# Remote Bootstrap\n\nSet up a new Adom container from an existing one entirely over SSH -- zero browser interaction required. Auth credentials (GitHub + Claude) are copied from the current container.\n\n## When to use\n\n- You already have a working Adom container and want to set up a new one\n- You don't want to go through interactive browser auth flows\n- You need to bootstrap a container created via `adom-cli carbon containers create`\n\n## Prerequisites\n\nOn the **source container** (the one you're running this from):\n- SSH key registered with Adom (`adom-cli carbon user ssh-keys` returns at least one key)\n- GitHub authenticated (`gh auth status` succeeds)\n- Claude Code authenticated (`~/.claude/.credentials.json` exists)\n- gallia cloned (`~/gallia` exists)\n\n## Quick start\n\n```bash\nbash ~/gallia/scripts/remote-bootstrap.sh <ssh-target>\n```\n\nExample:\n```bash\nbash ~/gallia/scripts/remote-bootstrap.sh [email protected]\n```\n\nThe script handles everything:\n1. Copies GitHub + Claude auth credentials (no browser auth needed)\n2. Installs Claude Code extension + CLI\n3. Installs adom-cli + skills\n4. Copies and registers the adom-vscode extension\n5. Configures VS Code settings (disables Copilot, configures Claude Code)\n6. Clones gallia and runs `npm install` + `install.mjs`\n7. Fixes project directory permissions\n\nAfter the script completes, open the editor URL and reload VS Code once.\n\n## Full workflow: create + bootstrap a container\n\n```bash\n# 1. Create repo (if needed)\nadom-cli carbon user repos # check if repo exists\n# If not: create via Carbon API (see adom-repo-management skill)\n\n# 2. Create container with SSH\nadom-cli carbon containers create \\\n --image-id 69b43b3458d13e5ce628cdc4 \\\n --class large \\\n --ssh \\\n --repo-id <ADOM_REPO_ID>\n# Note the ssh_credentials.command from the response\n\n# 3. Wait for container to provision (~15-30 seconds)\nsleep 20\n\n# 4. Bootstrap it\nbash ~/gallia/scripts/remote-bootstrap.sh <username>@adom.cloud\n\n# 5. Open the editor\n# https://hydrogen.adom.inc/<owner>/<repo>/edit\n# Reload VS Code: Ctrl+Shift+P > Developer: Reload Window\n```\n\n## What the script does NOT do\n\n- **Claude Squad** -- not launched (use the Claude Code panel in VS Code instead)\n- **Service startup** -- services start on next container boot or editor open (install.mjs skips startup without `VSCODE_PROXY_URI`)\n- **Entrypoint patching** -- handled by install.mjs, takes effect on next boot\n\n## Script location\n\n`~/gallia/scripts/remote-bootstrap.sh`\n\n## Key implementation details\n\n- **scp is slow through the SSH gateway** -- the script pipes files through SSH (`cat file | ssh target \"cat > dest\"`) instead of using scp for large files\n- **adom-vscode must be registered in extensions.json** -- code-server only loads extensions listed in `~/.local/share/code-server/extensions/extensions.json`. Just copying the extension directory is not enough.\n- **Claude OAuth tokens are short-lived** -- copy credentials right before bootstrapping. The VS Code extension auto-refreshes using the refresh token once running.\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---------|-----|\n| Claude Code \"Failed to authenticate\" | Token expired. Recopy `~/.claude/.credentials.json` from source and reload VS Code |\n| adom-vscode not in sidebar | Reload VS Code. If still missing, check `extensions.json` has `adom.adom-vscode` entry |\n| `scp` hangs | Known issue with SSH gateway. Script uses pipe approach to avoid this |\n| `gh repo clone` fails | Verify `gh auth status` on target. Token may have expired -- recopy `~/.config/gh/hosts.yml` |\n| Services not running | Open the editor URL -- services start when `VSCODE_PROXY_URI` is available |",
"author": {
"name": "Kyle Bergstedt",
"email": "[email protected]"
},
"visibility": {
"public": true
},
"hero": null,
"sample_prompts": [],
"discovery_triggers": [],
"discovery_pitch": null,
"metadata": {},
"created_at": "2026-05-28T05:29:52.646Z",
"updated_at": "2026-05-28T05:29:52.646Z",
"sub_skills": [],
"parent_app": null,
"org": "adom"
}