guix+agent-s: desktop image target + local/cloud test runner + Nix parity baseline - #315
Merged
Merged
Conversation
…rity baseline Enables the Agent-S test agent against the Guix build, for local OR cloud image testing, and documents the Nix setup copiously as the parity target. - guix/system/desktop.scm: GNOME desktop image (nonguix kernel/firmware/microcode) -> qcow2, the Agent-S GUI target (Guix equiv of nix sourceos-image-qcow2-desktop). - tests/agent-s/run-guix.sh: builds the Guix image and runs the existing Agent-S harness (image-source-agnostic). --mode local (KVM here) | cloud (sync to a GCP GPU VM, run local there so the UI-TARS grounder is on the GPU). --main-model LOCAL by default (AS_MAIN_URL), external providers only on explicit request. - guix/NIX_BASELINE.md: copious inventory of the current Nix setup (7 packages, 5 image targets, 3 modules, the boot/contract/smoke test matrix, 5 CI workflows, cache+signing, dev shells) each mapped to its Guix equivalent + acceptance = the parity checklist the migration must satisfy before cutover. Adversarial review: fixed missing (gnu packages ssh) import in desktop.scm; replaced a fabricated scripts/gcp-build-linux.sh --run call (that script lives in bearbrowser) with a generic rsync+ssh-to-GPU-VM cloud path. bash -n clean; Scheme forms balanced. NOT build-validated here (no guix on macOS); Linux runner is the gate.
There was a problem hiding this comment.
Pull request overview
Adds initial Guix support for Agent-S Layer-2 GUI testing by introducing a Guix-built GNOME desktop qcow2 target, a runner script to build/run it locally or via a GCP GPU VM, and a “Nix parity baseline” document to track migration completeness.
Changes:
- Introduces
guix/system/desktop.scmto build an x86_64 GNOME desktop qcow2 image (nonguix kernel/firmware/microcode). - Adds
tests/agent-s/run-guix.shto build the Guix image and invoke the existing Agent-S harness in local or cloud mode. - Adds
guix/NIX_BASELINE.mdas a parity checklist mapping current Nix artifacts to intended Guix equivalents.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
tests/agent-s/run-guix.sh |
New runner wiring Guix image builds into the existing Agent-S harness (local/cloud), with main-model selection logic. |
guix/system/desktop.scm |
New Guix OS definition for a GNOME desktop qcow2 image intended to be driven by Agent-S over VNC. |
guix/NIX_BASELINE.md |
New documentation enumerating Nix→Guix parity targets and acceptance checklist for migration cutover. |
Comment on lines
+28
to
+34
| while [ $# -gt 0 ]; do | ||
| case "$1" in | ||
| --mode) MODE="$2"; shift 2 ;; | ||
| --main-model) MAIN_MODEL="$2"; shift 2 ;; | ||
| *) echo "unknown arg: $1" >&2; exit 2 ;; | ||
| esac | ||
| done |
Comment on lines
+74
to
+77
| rsync -a --delete --exclude '.git' "$REPO/" "$GCP_HOST:sourceos/" | ||
| # AS_GROUND_URL defaults to the VM's local grounder; forward the model choice. | ||
| exec ssh "$GCP_HOST" \ | ||
| "cd sourceos && AS_GROUND_URL='${AS_GROUND_URL}' bash tests/agent-s/run-guix.sh --mode local --main-model '${MAIN_MODEL}'" |
Comment on lines
+62
to
+67
| ;; Full GNOME on top of the desktop stack (%desktop-services provides gdm + | ||
| ;; NetworkManager); openssh for headless control from the harness. | ||
| (services (cons* (service gnome-desktop-service-type) | ||
| (service openssh-service-type | ||
| (openssh-configuration (openssh openssh-sans-x))) | ||
| %desktop-services))) |
Comment on lines
+6
to
+7
| to the same bar. Keep it updated as `flake.nix` evolves — it is the source of | ||
| truth for what Guix must match, the same way `board-spec.yaml` is for the boards. |
Comment on lines
+36
to
+45
| # Local-first main model: default to a local endpoint; only reach for an external | ||
| # provider when explicitly requested (and only then require its key). | ||
| case "$MAIN_MODEL" in | ||
| local) | ||
| : "${AS_MAIN_URL:?set AS_MAIN_URL to a local main-model endpoint (e.g. http://localhost:8081/v1)}" | ||
| export AS_PROVIDER="local" AS_MAIN_URL | ||
| ;; | ||
| anthropic) : "${ANTHROPIC_API_KEY:?set ANTHROPIC_API_KEY}"; export AS_PROVIDER="anthropic" ;; | ||
| openai) : "${OPENAI_API_KEY:?set OPENAI_API_KEY}"; export AS_PROVIDER="openai" ;; | ||
| *) echo "unknown --main-model: $MAIN_MODEL" >&2; exit 2 ;; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Enables the Agent-S test agent against the Guix build for local OR cloud image testing, and documents the Nix setup copiously as the migration parity target.
guix/system/desktop.scm— GNOME desktop image (nonguix kernel/firmware/microcode) → qcow2; the Agent-S GUI target (Guix equivalent of nixsourceos-image-qcow2-desktop).tests/agent-s/run-guix.sh— builds the Guix image and feeds it to the existing Agent-S harness (which is image-source-agnostic).--mode local(KVM) or--mode cloud(rsync to a GCP GPU VM + run local there, so the UI-TARS grounder is on the GPU).--main-model localby default (AS_MAIN_URL) per the local-agent-default posture; external providers only on explicit request.guix/NIX_BASELINE.md— copious inventory of the current Nix setup (7 packages · 5 image targets · 3 modules · the boot/contract/smoke matrix · 5 CI workflows · cache+signing · dev shells), each mapped to its Guix equivalent + acceptance. The checklist the migration must satisfy before cutover.Adversarial review (done)
(gnu packages ssh)import indesktop.scm(openssh-sans-xwas unbound).scripts/gcp-build-linux.sh --runcall (that script lives in bearbrowser, and I hadn't verified the flag) with a generic rsync + ssh-to-GPU-VM cloud path.bash -nclean; Scheme forms balanced; import→symbol coverage checked.Honest limits
Authored + reviewed, not build-validated here (no guix on macOS). First
guix system image+ Agent-S run on a Linux runner (GPU VM for Layer-2) is the real gate. Builds on the spike (#314).