{
  "id": "shipyard",
  "title": "Shipyard services",
  "description": "Shared browser services and isolated tasks on the worker. Use task views for process details.",
  "scope": "Architecture, not live health. Evidence and status belong to inventory records.",
  "nodes": [
    {
      "id": "mac",
      "title": "Mac workstation",
      "kind": "host",
      "inventory_id": "host-mac",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/hosts/mac.md",
      "page": "/hosts/mac/"
    },
    {
      "id": "mac.orca",
      "title": "Orca interface",
      "kind": "service",
      "inventory_id": "service-orca",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/reference/orca.md",
      "page": "/reference/orca/"
    },
    {
      "id": "shipyard",
      "title": "Shipyard",
      "kind": "host",
      "inventory_id": "host-shipyard",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/hosts/shipyard.md",
      "page": "/hosts/shipyard/"
    },
    {
      "id": "shipyard.agents",
      "title": "Native coding agents",
      "kind": "service",
      "inventory_id": "service-agents",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/hosts/shipyard.md",
      "page": "/hosts/shipyard/"
    },
    {
      "id": "shipyard.appliance_task",
      "title": "Search-engine task",
      "kind": "workspace",
      "inventory_id": "workspace-appliance",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/appliance.md",
      "page": "/workflows/appliance/"
    },
    {
      "id": "shipyard.viewer",
      "title": "Display and noVNC",
      "kind": "service",
      "inventory_id": "service-viewer",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/browser.md",
      "page": "/workflows/browser/"
    },
    {
      "id": "shipyard.playwright",
      "title": "Playwright MCP",
      "kind": "service",
      "inventory_id": "service-playwright",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/browser.md",
      "page": "/workflows/browser/"
    },
    {
      "id": "shipyard.cargo",
      "title": "Shared Cargo cache",
      "kind": "resource",
      "inventory_id": "resource-cargo-cache",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/appliance.md",
      "page": "/workflows/appliance/"
    },
    {
      "id": "shipyard.browser",
      "title": "Shared Chromium",
      "kind": "service",
      "inventory_id": "service-browser",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/browser.md",
      "page": "/workflows/browser/"
    },
    {
      "id": "shipyard.api_task",
      "title": "API task",
      "kind": "workspace",
      "inventory_id": "workspace-api",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/api-dashboard.md",
      "page": "/workflows/api-dashboard/"
    },
    {
      "id": "shipyard.profile",
      "title": "Private browser profile",
      "kind": "resource",
      "inventory_id": "resource-browser-profile",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/browser.md",
      "page": "/workflows/browser/"
    },
    {
      "id": "shipyard.seed",
      "title": "Primary local API seed",
      "kind": "resource",
      "inventory_id": "resource-api-seed",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/staging-refresh.md",
      "page": "/workflows/staging-refresh/"
    }
  ],
  "edges": [
    {
      "source": "mac.orca",
      "target": "shipyard.agents",
      "label": "SSH task execution",
      "relationships": [
        {
          "source": "mac.orca",
          "target": "shipyard.agents",
          "kind": "connects",
          "label": "SSH task execution"
        }
      ]
    },
    {
      "source": "mac.orca",
      "target": "shipyard.api_task",
      "label": "SSH setup and archive hooks",
      "relationships": [
        {
          "source": "mac.orca",
          "target": "shipyard.api_task.lifecycle",
          "kind": "starts",
          "label": "SSH setup and archive hooks"
        }
      ]
    },
    {
      "source": "mac.orca",
      "target": "shipyard.appliance_task",
      "label": "SSH setup and archive hooks",
      "relationships": [
        {
          "source": "mac.orca",
          "target": "shipyard.appliance_task.lifecycle",
          "kind": "starts",
          "label": "SSH setup and archive hooks"
        }
      ]
    },
    {
      "source": "mac.orca",
      "target": "shipyard.viewer",
      "label": "SSH browser access",
      "relationships": [
        {
          "source": "mac.orca",
          "target": "shipyard.viewer",
          "kind": "connects",
          "label": "SSH browser access"
        }
      ]
    },
    {
      "source": "shipyard.agents",
      "target": "shipyard.playwright",
      "label": "MCP over loopback HTTP",
      "relationships": [
        {
          "source": "shipyard.agents",
          "target": "shipyard.playwright",
          "kind": "connects",
          "label": "MCP over loopback HTTP"
        }
      ]
    },
    {
      "source": "shipyard.api_task",
      "target": "shipyard.seed",
      "label": "Explicit first initialization",
      "relationships": [
        {
          "source": "shipyard.api_task.lifecycle",
          "target": "shipyard.seed",
          "kind": "reads",
          "label": "Explicit first initialization"
        }
      ]
    },
    {
      "source": "shipyard.browser",
      "target": "shipyard.api_task",
      "label": "HTTP localhost 3003",
      "relationships": [
        {
          "source": "shipyard.browser",
          "target": "shipyard.api_task.dashboard",
          "kind": "connects",
          "label": "HTTP localhost 3003"
        }
      ]
    },
    {
      "source": "shipyard.appliance_task",
      "target": "shipyard.cargo",
      "label": "Serialized build cache",
      "relationships": [
        {
          "source": "shipyard.appliance_task.lifecycle",
          "target": "shipyard.cargo",
          "kind": "depends",
          "label": "Serialized build cache"
        }
      ]
    },
    {
      "source": "shipyard.browser",
      "target": "shipyard.profile",
      "label": "Session persistence",
      "relationships": [
        {
          "source": "shipyard.browser",
          "target": "shipyard.profile",
          "kind": "writes",
          "label": "Session persistence"
        }
      ]
    },
    {
      "source": "shipyard.playwright",
      "target": "shipyard.browser",
      "label": "CDP on loopback",
      "relationships": [
        {
          "source": "shipyard.playwright",
          "target": "shipyard.browser",
          "kind": "controls",
          "label": "CDP on loopback"
        }
      ]
    },
    {
      "source": "shipyard.viewer",
      "target": "shipyard.browser",
      "label": "Human display and input",
      "relationships": [
        {
          "source": "shipyard.viewer",
          "target": "shipyard.browser",
          "kind": "controls",
          "label": "Human display and input"
        }
      ]
    }
  ]
}
