{"owner":"vercel-labs","repo":"agent-browser","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker/docker-compose.yml","servicesCount":3,"services":[{"name":"build-linux","build":{"context":"..","dockerfile":"docker/Dockerfile.build"},"command":"-c '\n  set -euo pipefail\n  echo \"Building for Linux platforms...\"\n\n  rm -f /output/agent-browser-linux-x64 /output/agent-browser-linux-arm64\n\n  echo \"→ Linux x64\"\n  cargo zigbuild --release --target x86_64-unknown-linux-gnu.2.28\n  cp /build/target/x86_64-unknown-linux-gnu/release/agent-browser /output/agent-browser-linux-x64\n  chmod +x /output/agent-browser-linux-x64\n  echo \"✓ Linux x64 done\"\n\n  echo \"→ Linux ARM64\"\n  cargo zigbuild --release --target aarch64-unknown-linux-gnu.2.28\n  cp /build/target/aarch64-unknown-linux-gnu/release/agent-browser /output/agent-browser-linux-arm64\n  chmod +x /output/agent-browser-linux-arm64\n  echo \"✓ Linux ARM64 done\"\n\n  echo \"\"\n  echo \"✓ Linux platforms built successfully!\"\n  ls -la /output/agent-browser-linux-*\n'\n","volumes":["../cli:/build","../bin:/output"]},{"name":"build-windows","build":{"context":"..","dockerfile":"docker/Dockerfile.build"},"command":"-c '\n  set -euo pipefail\n  echo \"Building for Windows x64...\"\n\n  rm -f /output/agent-browser-win32-x64.exe\n\n  cargo build --release --target x86_64-pc-windows-gnu\n  cp /build/target/x86_64-pc-windows-gnu/release/agent-browser.exe /output/agent-browser-win32-x64.exe\n\n  echo \"\"\n  echo \"✓ Windows build completed!\"\n  ls -la /output/agent-browser-win32-*\n'\n","volumes":["../cli:/build","../bin:/output"]},{"name":"build-single","build":{"context":"..","dockerfile":"docker/Dockerfile.build"},"command":"-c '\n  set -euo pipefail\n\n  rust_target=\"$${RUST_TARGET:-}\"\n  build_target=\"$${BUILD_TARGET:-}\"\n  legacy_target=\"$${TARGET:-}\"\n\n  normalize_rust_target() {\n    case \"$$1\" in\n      x86_64-unknown-linux-gnu.*)\n        printf \"%s\\n\" \"x86_64-unknown-linux-gnu\"\n        ;;\n      aarch64-unknown-linux-gnu.*)\n        printf \"%s\\n\" \"aarch64-unknown-linux-gnu\"\n        ;;\n      *)\n        printf \"%s\\n\" \"$$1\"\n        ;;\n    esac\n  }\n\n  derive_build_target() {\n    case \"$$1\" in\n      x86_64-unknown-linux-gnu.*|aarch64-unknown-linux-gnu.*)\n        printf \"%s\\n\" \"$$1\"\n        ;;\n      x86_64-unknown-linux-gnu|aarch64-unknown-linux-gnu)\n        printf \"%s.2.28\\n\" \"$$1\"\n        ;;\n      *)\n        printf \"%s\\n\" \"$$1\"\n        ;;\n    esac\n  }\n\n  if [ -n \"$$rust_target\" ]; then\n    rust_target=\"$$(normalize_rust_target \"$$rust_target\")\"\n  fi\n\n  if [ -n \"$$legacy_target\" ]; then\n    if [ -z \"$$rust_target\" ]; then\n      rust_target=\"$$(normalize_rust_target \"$$legacy_target\")\"\n    fi\n\n    if [ -z \"$$build_target\" ]; then\n      build_target=\"$$(derive_build_target \"$$legacy_target\")\"\n    fi\n  fi\n\n  if [ -z \"$$rust_target\" ] && [ -n \"$$build_target\" ]; then\n    rust_target=\"$$(normalize_rust_target \"$$build_target\")\"\n  fi\n\n  if [ -z \"$$build_target\" ] && [ -n \"$$rust_target\" ]; then\n    build_target=\"$$(derive_build_target \"$$rust_target\")\"\n  fi\n\n  if [ -z \"$$rust_target\" ]; then\n    rust_target=\"x86_64-unknown-linux-gnu\"\n  fi\n\n  if [ -z \"$$build_target\" ]; then\n    build_target=\"$$(derive_build_target \"$$rust_target\")\"\n  fi\n\n  expected_rust_target=\"$$(normalize_rust_target \"$$build_target\")\"\n  if [ \"$$expected_rust_target\" != \"$$rust_target\" ]; then\n    echo \"ERROR: BUILD_TARGET ($$build_target) maps to $$expected_rust_target, but RUST_TARGET is $$rust_target\"\n    exit 1\n  fi\n\n  rm -f /output/$$OUTPUT_NAME\n\n  cargo zigbuild --release --target \"$$build_target\"\n\n  source_path=/build/target/$$rust_target/release/agent-browser\n  if [ -f \"$$source_path.exe\" ]; then\n    source_path=\"$$source_path.exe\"\n  fi\n\n  cp \"$$source_path\" /output/$$OUTPUT_NAME\n  chmod +x /output/$$OUTPUT_NAME 2>/dev/null || true\n  echo \"✓ Built $$OUTPUT_NAME\"\n'\n","environment":["TARGET=${TARGET:-}","RUST_TARGET=${RUST_TARGET:-}","BUILD_TARGET=${BUILD_TARGET:-}","OUTPUT_NAME=${OUTPUT_NAME:-agent-browser-linux-x64}"],"volumes":["../cli:/build","../bin:/output"]}],"exposedPorts":[],"dockerRunCommand":"docker run -d --name agent-browser --restart always vercel-labs/agent-browser:latest","podmanRunCommand":"podman run -d --name agent-browser --restart always vercel-labs/agent-browser:latest","skopeoInspectCommand":"skopeo inspect docker://docker.io/vercel-labs/agent-browser:latest","orasPullCommand":"oras pull vercel-labs/agent-browser:latest","registryMeta":{"provider":"dockerhub","image":"vercel-labs/agent-browser","canonicalImage":"docker.io/vercel-labs/agent-browser:latest","latestTag":"latest","cliCommands":{"dockerRun":"docker run -d --name agent-browser --restart always vercel-labs/agent-browser:latest","dockerPull":"docker pull vercel-labs/agent-browser:latest","podmanRun":"podman run -d --name agent-browser --restart always vercel-labs/agent-browser:latest","skopeoInspect":"skopeo inspect docker://docker.io/vercel-labs/agent-browser:latest","orasPull":"oras pull vercel-labs/agent-browser:latest","composeYaml":"services:\n  agent-browser:\n    image: vercel-labs/agent-browser:latest\n    restart: unless-stopped"}}}