Skip to content

Version 0.0.16

Version 0.0.16 #11

Workflow file for this run

name: pages
# Builds and deploys the docs site (agent6.dev) to GitHub Pages.
#
# Heavy by design: it regenerates the TUI screenshots + tour video from the
# committed seed fixtures (docs/screenshots/seed/) with vhs, so the site's
# images always match the current UI. Because that is slow, this runs ONLY on a
# published release or a manual dispatch — NOT on every push. That also lets docs
# land on master without redeploying the live site until you cut a release.
#
# The screenshots are written into the site artifact itself (no release-asset
# upload, no committed media), so they ship with the site and never expire.
#
# One-time setup: repo Settings > Pages > Source = "GitHub Actions", and a CNAME
# (docs/CNAME = agent6.dev) with the domain's DNS pointing at GitHub Pages.
on:
workflow_dispatch:
release:
types: [published]
permissions:
contents: read
pages: write
id-token: write
# One deploy at a time; never cancel an in-progress publish.
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: true
- name: Sync agent6 (the demo repo + the CLI the tape drives)
run: uv sync --all-extras
- name: Install ttyd + ffmpeg + fonts (Ubuntu repos)
run: |
set -eux
sudo apt-get update
# fonts-dejavu: the bold mono face keystroke_overlay.py draws toasts in.
sudo apt-get install -y ttyd ffmpeg fonts-jetbrains-mono fonts-noto-color-emoji fonts-dejavu
- name: Install vhs (pinned release, checksum-verified)
# vhs is not in the Ubuntu repos. Rather than trust a rolling third-party
# apt repo, pin the exact charmbracelet/vhs release and verify its SHA256
# before installing. Bump VHS_VERSION and VHS_SHA256 together; the hash is
# from the published release asset (sha256sum vhs_<v>_Linux_x86_64.tar.gz).
run: |
set -eux
VHS_VERSION=0.11.0
VHS_SHA256=99cb634587eaae0473c1ea377db80c3a048c27f99fe0a7febb1a1e8cb7ee5009
TARBALL=vhs_${VHS_VERSION}_Linux_x86_64.tar.gz
curl -fsSL -o "$TARBALL" \
"https://github.com/charmbracelet/vhs/releases/download/v${VHS_VERSION}/${TARBALL}"
echo "${VHS_SHA256} ${TARBALL}" | sha256sum --check --status
tar -xzf "$TARBALL" --strip-components=1 "vhs_${VHS_VERSION}_Linux_x86_64/vhs"
sudo install -m755 vhs /usr/local/bin/vhs
vhs --version
- name: Allow unprivileged user namespaces (Ubuntu 24.04 AppArmor)
# vhs renders through a headless Chromium whose sandbox needs unprivileged
# userns; the default 24.04 AppArmor policy blocks it (same restriction
# agent6's strict sandbox hits — see ci.yml).
run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
- name: Generate screenshots
run: |
source .venv/bin/activate
bash docs/screenshots/generate.sh
- name: Generate demo videos (machine + CLI)
# Both run in replay mode (the default): a real agent6 run whose LLM
# calls are served from the committed cassette by llm_proxy.py, so no
# API key is needed in CI. Re-recording a cassette (`… record`) is a
# local, key-bearing step, never run here.
run: |
source .venv/bin/activate
bash docs/screenshots/machine_demo.sh
bash docs/screenshots/cli_demo.sh
- name: Generate web-UI tour videos (Playwright)
# Drives `agent6 web` against the same committed seed fixtures in a
# headless Chromium at desktop + phone viewports. Playwright's Chromium is
# installed into an isolated venv (a docs tool, never a runtime dep); no
# API key, no network beyond the browser download.
run: |
source .venv/bin/activate
python3 -m venv /tmp/pw
/tmp/pw/bin/pip install --quiet playwright
/tmp/pw/bin/playwright install --with-deps chromium
WEB_DEMO_PY=/tmp/pw/bin/python bash docs/screenshots/web_demo.sh
- name: Build the site (strict)
run: >
uvx --with mkdocs-material==9.7.6 --with mkdocs-glightbox==0.5.2
mkdocs build --strict -f docs/mkdocs.yml
- uses: actions/upload-pages-artifact@v4
with:
path: site
deploy:
needs: build
runs-on: ubuntu-24.04
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v5