Files
wehub-resource-sync 426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00

100 lines
4.6 KiB
Docker

# syntax=docker/dockerfile:1
# GPU certification image for vast.ai runs (#14548, epic #14541).
#
# scripts/vast/run-certification.mjs rents a vast.ai RTX 4090 and boots this
# image; the onstart script it injects only clones the repo at one sha and
# runs the packages/evidence certification chain. vast caps onstart-cmd at
# 16 KB, so EVERYTHING heavy is baked here instead: CUDA-enabled llama-server
# (>= build b8525, the minimum scripts/gpu-vision accepts for the
# DeepSeek-OCR mmproj), the sha256-pinned OCR + VLM GGUFs from
# scripts/gpu-vision/models.lock.json, Node 24 + Bun (the workspace
# toolchain), Playwright Chromium with OS deps, tesseract, and ffmpeg.
#
# Secrets NEVER bake into this image — the Ed25519 signing key and any
# storage push command are injected as instance env at create time and die
# with the instance. Build/publish: .github/workflows/certification-image.yml
# pushes ghcr.io/elizaos/certification-gpu:{latest,sha-<short>}.
ARG CUDA_VERSION=12.4.1
ARG UBUNTU_VERSION=22.04
# --- Stage 1: build llama-server with the CUDA backend --------------------
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} AS llama-builder
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git ca-certificates libcurl4-openssl-dev \
&& rm -rf /var/lib/apt/lists/*
# b8525 is the exact minimum scripts/gpu-vision/lib.mjs (MIN_LLAMA_BUILD)
# demands; every llama.cpp CI build is tagged bNNNN so the ref is stable.
ARG LLAMA_CPP_REF=b8525
RUN git clone --depth 1 --branch "${LLAMA_CPP_REF}" \
https://github.com/ggml-org/llama.cpp /opt/llama.cpp
# Static-ish build (no shared ggml libs to carry over) for the two GPU
# generations the offer filter can realistically land on: sm_86 (RTX 3090)
# and sm_89 (RTX 4090, the default --gpu-name).
RUN cmake -S /opt/llama.cpp -B /opt/llama.cpp/build \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_CUDA=ON \
-DCMAKE_CUDA_ARCHITECTURES="86;89" \
-DBUILD_SHARED_LIBS=OFF \
-DLLAMA_CURL=ON \
&& cmake --build /opt/llama.cpp/build --target llama-server -j "$(nproc)"
# --- Stage 2: runtime ------------------------------------------------------
FROM nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu${UBUNTU_VERSION}
LABEL org.opencontainers.image.source="https://github.com/elizaOS/eliza" \
org.opencontainers.image.description="elizaOS GPU certification runner (vast.ai) — CUDA llama-server + pinned vision models + node24/bun/playwright/tesseract/ffmpeg" \
org.opencontainers.image.licenses="MIT"
ENV DEBIAN_FRONTEND=noninteractive
# openssh-server: vast's `runtype ssh` instances start sshd inside the
# container; without it the instance never leaves the loading state.
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl git unzip xz-utils jq \
openssh-server \
tesseract-ocr \
ffmpeg \
libcurl4 libgomp1 \
&& rm -rf /var/lib/apt/lists/*
# Node 24 — the engines.node pin of the workspace (plain-node scripts like
# scripts/gpu-vision run under it directly).
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
&& apt-get install -y --no-install-recommends nodejs \
&& rm -rf /var/lib/apt/lists/* \
&& node --version
# Bun, pinned to the same version CI pins (floating canary rewrites bun.lock).
ARG BUN_VERSION=1.3.14
ENV BUN_INSTALL=/root/.bun
ENV PATH="${BUN_INSTALL}/bin:${PATH}"
RUN curl -fsSL https://bun.sh/install | bash -s "bun-v${BUN_VERSION}" \
&& bun --version
# Playwright Chromium + OS deps, pinned to the packages/evidence devDep line.
ARG PLAYWRIGHT_VERSION=1.61.0
ENV PLAYWRIGHT_BROWSERS_PATH=/opt/playwright-browsers
RUN npx --yes "playwright@${PLAYWRIGHT_VERSION}" install --with-deps chromium \
&& rm -rf /var/lib/apt/lists/*
# CUDA llama-server from the builder.
COPY --from=llama-builder /opt/llama.cpp/build/bin/llama-server /usr/local/bin/llama-server
# Build gate: a broken binary (missing lib, bad link) fails here, not on a
# billed vast instance. --version needs no GPU.
RUN llama-server --version
# Pinned GPU-vision models, fetched + sha256-verified by the repo's own
# setup script (lockfile resolves relative to lib.mjs, so the trio is copied
# together). ELIZA_GPU_VISION_CACHE points the cloned repo's serve.mjs at
# this baked cache at runtime — no model download on the billed instance.
ENV ELIZA_GPU_VISION_CACHE=/opt/eliza/gpu-vision-cache
COPY scripts/gpu-vision/setup.mjs scripts/gpu-vision/lib.mjs scripts/gpu-vision/models.lock.json /opt/eliza/gpu-vision/
RUN node /opt/eliza/gpu-vision/setup.mjs --with-vlm
WORKDIR /workspace
CMD ["/bin/bash"]