Skip to content

feat(hermes): add host-managed Nous tool gateway #8

feat(hermes): add host-managed Nous tool gateway

feat(hermes): add host-managed Nous tool gateway #8

Workflow file for this run

# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
name: macos-e2e
on:
workflow_dispatch:
pull_request:
paths:
- "bin/**"
- "nemoclaw/**"
- "scripts/**"
- "src/**"
- "test/**"
- ".github/workflows/macos-e2e.yaml"
- "package.json"
- "package-lock.json"
- "nemoclaw/package-lock.json"
- "vitest.config.ts"
push:
branches:
- main
paths-ignore:
- "docs/**"
- "**/*.md"
- ".github/workflows/docs-preview-*.yaml"
- "ISSUE_TEMPLATE/**"
- ".github/ISSUE_TEMPLATE/**"
permissions:
contents: read
concurrency:
group: macos-e2e-${{ github.ref }}
cancel-in-progress: true
jobs:
macos-e2e:
runs-on: macos-26
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: "22"
cache: npm
- name: Show environment
run: |
set -euo pipefail
echo "Runner: $(uname -a)"
echo "Arch: $(uname -m)"
sw_vers
node --version
npm --version
- name: Install root dependencies
run: npm ci --ignore-scripts
- name: Build CLI TypeScript modules
run: npm run build:cli
- name: Install and build plugin
run: |
set -euo pipefail
cd nemoclaw
npm ci --ignore-scripts
npm run build
- name: Run vitest suite
run: npx vitest run --testTimeout 60000
- name: Detect Docker availability
id: docker
run: |
if docker info >/dev/null 2>&1; then
echo "docker_ok=true" >> "$GITHUB_OUTPUT"
echo "Docker is available"
docker version
else
echo "docker_ok=false" >> "$GITHUB_OUTPUT"
echo "Docker is not available on this runner"
fi
- name: Run macOS full E2E
if: steps.docker.outputs.docker_ok == 'true'
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
GITHUB_TOKEN: ${{ github.token }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
NEMOCLAW_RECREATE_SANDBOX: "1"
NEMOCLAW_SANDBOX_NAME: "e2e-macos"
run: bash test/e2e/test-full-e2e.sh
- name: Explain skipped full E2E
if: steps.docker.outputs.docker_ok != 'true'
run: |
echo 'Skipping macOS full E2E because Docker is unavailable on this runner.'
echo 'The workflow still validated the NemoClaw build and vitest suite on macOS (Apple Silicon).'
- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: macos-e2e-logs
path: |
/tmp/nemoclaw-e2e-*.log
if-no-files-found: ignore