Skip to content

fix: publish ARM64 local-mode wheels - #359

Open
abhinavkr26104 wants to merge 1 commit into
browserbase:mainfrom
abhinavkr26104:fix/352-arm64-wheels
Open

fix: publish ARM64 local-mode wheels#359
abhinavkr26104 wants to merge 1 commit into
browserbase:mainfrom
abhinavkr26104:fix/352-arm64-wheels

Conversation

@abhinavkr26104

@abhinavkr26104 abhinavkr26104 commented Aug 15, 2026

Copy link
Copy Markdown

Summary

  • add Linux ARM64 and Windows ARM64 wheel targets to the publish matrix
  • map those targets to the SEA asset names already produced by the release pipeline
  • add resolver tests for x64 and ARM64 filenames on Linux and Windows

The packaging jobs only download and bundle architecture-specific assets, so the existing hosted x64 runners can produce these pure-Python platform-tagged wheels without executing the bundled binary.

Testing

Fixes #352


Summary by cubic

Publishes ARM64 wheels for Linux and Windows in local mode. Previously we only shipped x64 wheels; now we also build manylinux2014_aarch64 and win_arm64 to enable ARM64 installs without source builds.

  • Map new matrix entries to existing SEA assets: stagehand-server-v3-linux-arm64 and stagehand-server-v3-win32-arm64.exe.
  • Add tests that assert default binary filenames for Linux and Windows on x64 and ARM64.
  • Use hosted x64 runners only; packaging downloads architecture-specific assets and does not execute them. No runtime behavior change.

Written for commit 5f95115. Summary will update on new commits.

Review in cubic

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 2 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.
Architecture diagram
sequenceDiagram
    participant Pub as publish-pypi.yml
    participant GH as GitHub Actions Matrix
    participant DL as download-binary.py
    participant PKG as Packaging (wheel build)
    participant PYPI as PyPI
    participant CLI as Client Install/Resolve
    participant SEA as stagehand/_sea/binary resolution

    Note over Pub,PYPI: NEW: ARM64 Wheel Build & Publish Pipeline

    Pub->>GH: Define wheel targets (x64 + NEW: ARM64)
    GH->>GH: Iterate matrix entries (linux-x64, linux-arm64, macos, win-x64, win-arm64)
    
    loop Each matrix entry
        GH->>GH: runs-on hosted x64 runner (any OS)
        GH->>DL: download binary (binary_name)
        
        alt NEW: ARM64 targets
            DL-->>GH: stagehand-linux-arm64 OR stagehand-win32-arm64.exe
        else Existing x64
            DL-->>GH: stagehand-linux-x64 OR stagehand-win32-x64.exe
        end
        
        GH->>PKG: Place binary in src/stagehand/_sea/
        PKG->>PKG: Set wheel_platform_tag (manylinux2014_aarch64 / win_arm64)
        PKG->>PKG: Build pure-Python wheel (binary not executed)
        PKG->>PYPI: Publish platform-tagged wheel
    end

    Note over CLI,SEA: Runtime Resolution (unchanged logic, NEW: filenames)

    CLI->>SEA: Resolve binary for current platform
    SEA->>SEA: Determine sys.platform + machine
    
    alt linux + aarch64
        SEA->>SEA: default_binary_filename() = stagehand-linux-arm64
    else linux + x86_64
        SEA->>SEA: default_binary_filename() = stagehand-linux-x64
    else win32 + ARM64
        SEA->>SEA: default_binary_filename() = stagehand-win32-arm64.exe
    else win32 + AMD64
        SEA->>SEA: default_binary_filename() = stagehand-win32-x64.exe
    end
    
    SEA->>PYPI: Fetch matching platform-tagged wheel
    PYPI-->>SEA: Wheel with bundled SEA binary
    SEA-->>CLI: Ready for use
Loading

Re-trigger cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Publish Linux ARM64 and Windows ARM64 wheels for local mode

1 participant