{
  "schema_version": "1.0",
  "service": "bithost.ca",
  "updated": "2026-10-24",
  "summary": "Machine-readable guide for AI coding agents managing a BitHost customer VPS.",
  "documentation_html": "https://bithost.ca/agents/",
  "documentation_markdown": "https://bithost.ca/agents/agents.md",
  "order_url": "https://bithost.ca/#order",
  "support_email": "order@bithost.ca",
  "connection": {
    "protocol": "ssh",
    "port": 22,
    "user": "vps",
    "host_pattern": "{hostname}.bithost.ca",
    "example_host": "my-app.bithost.ca",
    "example_command": "ssh vps@my-app.bithost.ca",
    "authentication": ["publickey"],
    "password_login": false,
    "credentials_source": "Welcome email after Stripe payment clears. Hostname matches the order form."
  },
  "ssh_public_key": {
    "required_at_order": true,
    "form_field": "sshPublicKey",
    "formats": ["ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256"],
    "agent_must": [
      "Never ask the human for a private key or paste a private key into chat, email, or tickets.",
      "If the human has no key yet, walk them through generating one (ssh-keygen) and give you only the .pub line.",
      "If login fails, confirm the public key on the order matches what they use and that they are using user vps and the hostname from welcome mail."
    ],
    "human_steps": [
      "Run: ssh-keygen -t ed25519 -C \"you@device\" (or use an existing ~/.ssh/id_ed25519.pub).",
      "Copy the single line from the .pub file.",
      "Paste it into the SSH public key field at checkout, or send it to order@bithost.ca if the server already exists."
    ]
  },
  "server_modes": {
    "default": "development",
    "query_on_server": "grep -E '^MODE=' /etc/bithost/server.conf 2>/dev/null || echo 'MODE=development'",
    "modes": {
      "development": {
        "label": "Development",
        "shipped_default": true,
        "intent": "Building, vibe coding, and AI-assisted deploys. This is how every new server starts.",
        "typical": [
          "Full SSH access as vps with sudo where needed for stack work.",
          "Docker, Node, Python, Go, Git, and common AI agent tooling pre-installed.",
          "Daily snapshots (7-day retention).",
          "Suitable for staging, experiments, and pre-production apps."
        ],
        "not_for": "High-traffic production without a deliberate hardening pass."
      },
      "production": {
        "label": "Production",
        "shipped_default": false,
        "intent": "Hardened hosting after BitHost reviews requirements with the customer.",
        "how_to_request": "Human messages order@bithost.ca or uses live chat on bithost.ca. BitHost discusses backups, access, firewall, domains, and compliance before changing mode.",
        "agent_must_not": "Assume production mode or disable development safeguards without explicit confirmation from BitHost in writing."
      }
    }
  },
  "agent_playbook": [
    "Fetch this file at session start: curl -fsSL https://bithost.ca/agents.json",
    "Read the human welcome email for hostname, user vps, and which public key was installed.",
    "Test SSH: ssh -o BatchMode=yes -o ConnectTimeout=15 vps@HOSTNAME.bithost.ca true",
    "Check server mode on the box (development unless welcome mail says production).",
    "Do application work under /home/vps or agreed app paths; use sudo only when required.",
    "For DNS, TLS, or production mode upgrades, route the human to order@bithost.ca."
  ],
  "stack_hints": {
    "document_root_note": "App layout depends on what you deploy; common path /home/vps or project dirs under vps home.",
    "preinstalled": ["docker", "git", "node", "python3", "go"],
    "wildcard_dns": "Customer subdomains under *.bithost.ca may resolve via BitHost edge; use hostname from welcome mail first."
  }
}
