Log from Radicle native CI

Table of contents

Request message

{
  "request": "trigger",
  "version": 1,
  "event_type": "push",
  "repository": {
    "id": "rad:zhmiwr8g1YjAnGCgk5xVazNXsQr4",
    "name": "geas",
    "description": "Launch AI agents with short-lived GitHub and GitLab credentials",
    "private": false,
    "default_branch": "main",
    "delegates": [
      "did:key:z6Mkp67KWsEULs8E1ufmwP3JwgU7uvZueB3E16tHnBNK742d",
      "did:key:z6MktbPPfEZKBgZHMcEh2DPM5p2wkkTJSKLQnTwsQX5L9zjb"
    ]
  },
  "pusher": {
    "id": "did:key:z6Mkp67KWsEULs8E1ufmwP3JwgU7uvZueB3E16tHnBNK742d",
    "alias": "nolith"
  },
  "before": "55acd15d909c660a7212c6f1aa57536de7aedd49",
  "after": "55acd15d909c660a7212c6f1aa57536de7aedd49",
  "branch": "main",
  "commits": [
    "55acd15d909c660a7212c6f1aa57536de7aedd49"
  ]
}

.radicle/native.yaml

shell: |
  set -e
  nix flake check -L
  nix build -L
  ./result/bin/geas --help

Run: git clone /var/lib/radicle/storage/zhmiwr8g1YjAnGCgk5xVazNXsQr4 /var/lib/radicle-ci/reports/logs/geas/trusted/0b8e5551-4fb2-454b-b109-670bf1f34428/src

Command arguments:

In directory: /

Exit code: 0

Output (stdout and stderr):

Cloning into '/var/lib/radicle-ci/reports/logs/geas/trusted/0b8e5551-4fb2-454b-b109-670bf1f34428/src'...
done.

Run: git config advice.detachedHead false

Command arguments:

In directory: /var/lib/radicle-ci/reports/logs/geas/trusted/0b8e5551-4fb2-454b-b109-670bf1f34428/src

Exit code: 0

Run: git checkout 55acd15d909c660a7212c6f1aa57536de7aedd49

Command arguments:

In directory: /var/lib/radicle-ci/reports/logs/geas/trusted/0b8e5551-4fb2-454b-b109-670bf1f34428/src

Exit code: 0

Output (stdout and stderr):

HEAD is now at 55acd15 Point the homepage at Radicle

Run: git show 55acd15d909c660a7212c6f1aa57536de7aedd49

Command arguments:

In directory: /var/lib/radicle-ci/reports/logs/geas/trusted/0b8e5551-4fb2-454b-b109-670bf1f34428/src

Exit code: 0

Output (stdout and stderr):

commit 55acd15d909c660a7212c6f1aa57536de7aedd49
Author: Alessio Caiazza <code.git@caiazza.info>
Date:   Mon Nov 2 15:46:55 2026 +0100

    Point the homepage at Radicle
    
    geas now lives on Radicle; GitHub is a mirror.
    
    AI-assisted: Claude Code (claude-opus-5-5)

diff --git a/flake.nix b/flake.nix
index bd05704..6b875b3 100644
--- a/flake.nix
+++ b/flake.nix
@@ -90,7 +90,7 @@
 
           meta = {
             description = "Launch AI agents with short-lived GitHub and GitLab credentials";
-            homepage = "https://github.com/nolith/geas";
+            homepage = "https://code.nolith.dev/nodes/code.nolith.dev/rad:zhmiwr8g1YjAnGCgk5xVazNXsQr4";
             license = lib.licenses.gpl3Plus;
             mainProgram = "geas";
             platforms = lib.platforms.linux ++ lib.platforms.darwin;

Run: bash -c set -xeuo pipefail set -e nix flake check -L nix build -L ./result/bin/geas --help

Command arguments:

In directory: /var/lib/radicle-ci/reports/logs/geas/trusted/0b8e5551-4fb2-454b-b109-670bf1f34428/src

Exit code: 0

Output (stdout and stderr):

+ set -e
+ nix flake check -L
evaluating flake...
checking flake output 'packages'...
checking derivation packages.x86_64-linux.default...
derivation evaluated to /nix/store/jzarli9djqhx528zjhmgd0c772qn59ir-geas-55acd15.drv
checking derivation packages.x86_64-linux.geas...
derivation evaluated to /nix/store/jzarli9djqhx528zjhmgd0c772qn59ir-geas-55acd15.drv
checking flake output 'formatter'...
checking derivation formatter.x86_64-linux...
derivation evaluated to /nix/store/r855klhirqfxgz2wk49divhmbdxj60j8-treefmt-with-config-2.6.0.drv
checking flake output 'checks'...
checking derivation checks.x86_64-linux.build...
derivation evaluated to /nix/store/jzarli9djqhx528zjhmgd0c772qn59ir-geas-55acd15.drv
checking derivation checks.x86_64-linux.formatting...
derivation evaluated to /nix/store/2avkbg5q0cac8gp1dgqiym894kfhvdk6-treefmt-with-config-check.drv
checking flake output 'devShells'...
checking derivation devShells.x86_64-linux.default...
derivation evaluated to /nix/store/x9xilzm07dfsly6pafgr54w3bq43cfb6-nix-shell.drv
running 1 flake checks...
building '/nix/store/2avkbg5q0cac8gp1dgqiym894kfhvdk6-treefmt-with-config-check.drv'...
treefmt-with-config-check> structuredAttrs is enabled
treefmt-with-config-check> Initialized empty Git repository in /build/project/.git/
treefmt-with-config-check> treefmt v2.6.0traversed 96 files
treefmt-with-config-check> emitted 79 files for processing
treefmt-with-config-check> formatted 79 files (0 changed) in 38ms
treefmt-with-config-check> On branch main
treefmt-with-config-check> nothing to commit, working tree clean
treefmt-with-config-check (post)> 2026/11/03 10:34:49 Successfully queued 1 paths
all checks passed!
warning: The check omitted these incompatible systems: aarch64-darwin, aarch64-linux
Use '--all-systems' to check all.
+ nix build -L
this path will be fetched (0.0 KiB download, 6.7 MiB unpacked):
  /nix/store/24d367cc7h41asaxdv564a7r97741wy2-geas-55acd15
copying path '/nix/store/24d367cc7h41asaxdv564a7r97741wy2-geas-55acd15' from 'https://attic.crocodile-godzilla.ts.net/nolith-systems'...
+ ./result/bin/geas --help
Usage: geas [--config config.json] COMMAND

The configuration defaults to $XDG_CONFIG_HOME/geas/config.json, else
~/.config/geas/config.json.

Commands:
  github-login                  Authorize your GitHub App once via device flow
  save-gitlab-issuer [--host HOST] [--stdin]
                                Store the issuer PAT of a GitLab host whose issuer
                                is "bearer", with mode 600
  config check                  Check the configuration and list its providers
  allowed URL                   Exit 0 when a session hands its credentials to Git
                                for the remote URL (HTTPS, or SSH as git@), 1 if not
  run -- HARNESS [ARGS...]       Start a session with user credentials; inside a
                                session, run HARNESS in it
  credential get                Git's credential helper, inside a session
  status                        Inside a session: each provider's credential, pending,
                                ready or failed with the reason
  sandbox check                 Inside a session: check that no protected path is
                                readable and that the session directory is
  ssh COMMAND                   Grant agents SSH certificates: grant, show, drop,
                                enroll, list-cas, name; see geas ssh --help

Requires Git, and glab in PATH for the glab issuer; geas ssh needs ssh-keygen,
and ykman and fido2-token for the YubiKey. Linux/macOS only.