Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: agentregistry-dev/agentregistry
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.3.0
Choose a base ref
...
head repository: agentregistry-dev/agentregistry
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.3.1
Choose a head ref
  • 15 commits
  • 87 files changed
  • 8 contributors

Commits on Mar 11, 2026

  1. fix: check --env flags when validating API keys during deploy (#292)

    # Description
    
    - Adds `--env` / `-e` flag to `arctl agent deploy` for passing
    environment variables (KEY=VALUE)
    - `validateAPIKey()` now checks `--env` values before falling back to OS
    environment
    - `buildDeployConfig()` includes all `--env` entries in the deployment
    config, with flag values taking precedence over OS env
    - Fixes the reported issue where `arctl agent deploy myagent --env
    GOOGLE_API_KEY=somekey` failed with "required API key not set"
    - Adds `--env` / `-e` flag to `arctl agent run` for passing environment
    variables (KEY=VALUE) (for command consistency)
    - Updated `agent run` tests to verify behavior.
    
    Fixes #151
    
    ```
    /kind fix
    ```
    
    ```release-note
    Add missing `--env` flag for `arctl agent deploy` to allow setting environment variables on the agent deployment.
    ```
    
    ## Validation Steps
    
    ```sh
    # assuming you don't have GOOGLE_API_KEY env set already...
    
    # agent deploy test
    go run cmd/cli/main.go agent init adk python dice
    go run cmd/cli/main.go agent build dice
    go run cmd/cli/main.go agent publish dice
    go run cmd/cli/main.go agent deploy dice # hit error
    go run cmd/cli/main.go agent deploy dice --env GOOGLE_API_KEY=test # works
    
    # agent run test
    go run cmd/cli/main.go agent init adk python dice
    go run cmd/cli/main.go agent build dice
    go run cmd/cli/main.go agent run dice # hit error
    go run cmd/cli/main.go agent run dice --env GOOGLE_API_KEY=test # pass
    ```
    
    ## Test plan
    - [x] New `TestValidateAPIKey_WithExtraEnv` (6 cases): extra env, OS
    env, missing, precedence, nil fallback, unknown provider
    - [x] New `TestBuildDeployConfig_WithEnvOverrides` (5 cases): override
    inclusion, precedence, OS fallback, telemetry, absent keys
    - [x] All existing agent CLI tests pass
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Signed-off-by: Fabian Gonzalez <[email protected]>
    Co-authored-by: Claude Opus 4.6 <[email protected]>
    Co-authored-by: Fabian Gonzalez <[email protected]>
    3 people authored Mar 11, 2026
    Configuration menu
    Copy the full SHA
    1c38dcd View commit details
    Browse the repository at this point in the history
  2. fix: add missing DELETE endpoint for skills (#286)

    # Description
    
    Adds the missing `DELETE /v0/skills/{skillName}/versions/{version}`
    endpoint to the registry API.
    
    **Motivation:** The `arctl skill delete` CLI command and client were
    already implemented, but the server had no corresponding endpoint,
    causing 404 errors.
    
    **What changed:**
    - Added DELETE handler in `internal/registry/api/handlers/v0/skills.go`
    with proper huma error codes (`huma.Error404NotFound`,
    `huma.Error401Unauthorized`, `huma.Error403Forbidden`)
    - Added `DeleteSkill(ctx, tx, name, version)` to the database layer —
    deletes the skill row and promotes the next latest version in a
    transaction
    - Added `DeleteSkill` to service interface and fake registry for testing
    - Regenerated OpenAPI spec and TypeScript client
    - Added e2e tests covering the full delete lifecycle
    
    Fixes #223
    
    # Change Type
    
    /kind fix
    
    # Changelog
    
    ```release-note
    Add DELETE endpoint for removing skill versions from the registry
    ```
    
    # Additional Notes
    
    ## Test plan
    - [x] `go build ./...` passes
    - [x] `go vet -tags e2e ./e2e/...` passes
    - [x] E2e tests added in `e2e/skill_publish_test.go`:
    - `TestSkillDelete`: publish → verify exists → delete via CLI → confirm
    404 → re-delete fails
    - `TestSkillDeletePromotesLatest`: publish v0.0.1 and v0.0.2 → verify
    latest is v0.0.2 → delete v0.0.2 → verify latest promoted to v0.0.1
    - `TestSkillDeleteNotFound`: HTTP DELETE on non-existent skill returns
    404
    - [x] Database deletion handles `is_latest` promotion in a transaction
    - [x] Uses proper huma error codes (404, 401, 403) instead of generic
    errors
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
    optimus-fulcria and claude authored Mar 11, 2026
    Configuration menu
    Copy the full SHA
    938806e View commit details
    Browse the repository at this point in the history
  3. Makefile: Self-document help targets (#314)

    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    
    <!--
    A concise explanation of the change. You may include:
    - **Motivation:** why this change is needed
    - **What changed:** key implementation details
    - **Related issues:** e.g., `Fixes #123`
    -->
    
    Teach make help to discover documented targets from the Makefile instead
    of maintaining a separate echoed list.
    
    This keeps the output close to the implementation and avoids help text
    drift over time.
    
    Fixes #313 
    
    # Change Type
    
    <!--
    Select one or more of the following by including the corresponding
    slash-command:
    ```
    /kind breaking_change
    /kind bump
    /kind cleanup
    /kind design
    /kind deprecation
    /kind documentation
    /kind feature
    /kind fix
    /kind flake
    /kind install
    ```
    -->
    
    /kind cleanup
    
    # Changelog
    
    <!--
    Provide the exact line to appear in release notes for the chosen
    changelog type.
    
    If no, just write "NONE" in the release-note block below.
    If yes, a release note is required:
    -->
    
    ```release-note
    NONE
    ```
    
    # Additional Notes
    
    <!--
    Any extra context or edge cases for reviewers.
    -->
    timflannagan authored Mar 11, 2026
    Configuration menu
    Copy the full SHA
    eec7764 View commit details
    Browse the repository at this point in the history

Commits on Mar 12, 2026

  1. fix: include docker stderr in error messages (#278)

    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    
    <!--
    - **Motivation:** why this change is needed
    - **What changed:** key implementation details
    - **Related issues:** e.g., `Fixes #123`
    -->
    
    When Docker commands fail, only stdout was captured, making it difficult
    to diagnose build and deployment failures. Docker typically writes error
    details to stderr.
    
    The `Executor.Run` method in `docker.go` now uses
    `io.MultiWriter(os.Stderr, &stderrBuf)` to both display stderr in real
    time and capture it for inclusion in the returned error message when the
    command fails.
    
    To reduce log pollution, outputs are now backed by `--verbose` flag.
    Following a similar approach to the agentregistry-runtime, we print to
    both stderr + buffer error when verbose is enabled, else we simply
    output the buffer-captured error with the returned error message.
    
    Fixes #193
    
    ## Validation
    
    ```sh
    # init a skill
    go run cmd/cli/main.go skill init test
    ```
    
    Non-verbose output would only log the captured docker error
    ```sh
    # invalid build without verbose logging
    go run cmd/cli/main.go skill build test --image 'invalid!!tag'
    ```
    ```output
    Building skill "hello-world-template" as Docker image: invalid!!tag
    Error: build failed for skill "hello-world-template": docker build failed: exit status 1
    ERROR: failed to build: invalid tag "invalid!!tag": invalid reference format
    exit status 1
    ```
    
    Verbose output will log std logs, the stderr, and final captured docker
    error (which technically leads to duplicated from stderr + captured err
    returned)
    ```sh
    # invalid skill with verbose logging
    go run cmd/cli/main.go skill build test --image 'invalid!!tag' --verbose
    ```
    ```output
    Building skill "hello-world-template" as Docker image: invalid!!tag
    Running: docker build -t invalid!!tag -f /var/folders/zy/pkk0_2ys5yx8y1syxw5xjxhh0000gn/T/skill-dockerfile-654053150 /Users/fabiangonz98/go/src/github.com/solo-io/agentregistry/test
    Working directory: /Users/fabiangonz98/go/src/github.com/solo-io/agentregistry/test
    ERROR: failed to build: invalid tag "invalid!!tag": invalid reference format
    Error: build failed for skill "hello-world-template": docker build failed: exit status 1
    ERROR: failed to build: invalid tag "invalid!!tag": invalid reference format
    exit status 1
    ```
    
    # Change Type
    
    ```
    /kind fix
    ```
    
    # Changelog
    
    <!--
    Provide the exact line to appear in release notes for the chosen
    changelog type.
    
    If no, just write "NONE" in the release-note block below.
    If yes, a release note is required:
    -->
    
    ```release-note
    Include docker stderr in error messages for better debugging
    ```
    
    # Additional Notes
    
    <!--
    Any extra context or edge cases for reviewers.
    -->
    
    ---------
    
    Signed-off-by: Fabian Gonzalez <[email protected]>
    Co-authored-by: Claude Opus 4.6 <[email protected]>
    Co-authored-by: Fabian Gonzalez <[email protected]>
    3 people authored Mar 12, 2026
    Configuration menu
    Copy the full SHA
    573bb30 View commit details
    Browse the repository at this point in the history
  2. always set the KAGENT_NAMESPACE; add the agent URL to the deployed pa…

    …ge (#316)
    
    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    
    We must always set the KAGENT_NAMESPACE, even when deploying to docker.
    This PR also adds the agent URL to the /deployed page in the UI
    
    <!--
    A concise explanation of the change. You may include:
    - **Motivation:** why this change is needed
    - **What changed:** key implementation details
    - **Related issues:** e.g., `Fixes #123`
    -->
    
    # Change Type
    
    ```
    /kind fix
    ```
    
    # Changelog
    
    <!--
    Provide the exact line to appear in release notes for the chosen
    changelog type.
    
    If no, just write "NONE" in the release-note block below.
    If yes, a release note is required:
    -->
    
    ```release-note
    add agent URL to the UI and fix the local docker deployment
    ```
    
    <img width="938" height="307" alt="Screenshot 2026-03-11 at 3 11 37 PM"
    src="https://github.com/user-attachments/assets/cdde6c3e-b952-4597-99e9-f120a37d2f1a"
    />
    
    ---------
    
    Signed-off-by: Peter Jausovec <[email protected]>
    peterj authored Mar 12, 2026
    Configuration menu
    Copy the full SHA
    c769350 View commit details
    Browse the repository at this point in the history
  3. Automatically update Chart.yaml version for release (#320)

    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    Fixes #312
    
    Removes the need to manually update `Chart.yaml` with the release
    version.
    Moves most of the helmchart release logic from the GH workflow file to
    make targets
    
    # Change Type
    
    <!--
    Select one or more of the following by including the corresponding
    slash-command:
    ```
    /kind breaking_change
    /kind bump
    /kind cleanup
    /kind design
    /kind deprecation
    /kind documentation
    /kind feature
    /kind fix
    /kind flake
    /kind install
    ```
    -->
    
    # Changelog
    /kind cleanup
    <!--
    Provide the exact line to appear in release notes for the chosen
    changelog type.
    
    If no, just write "NONE" in the release-note block below.
    If yes, a release note is required:
    -->
    
    ```release-note
    NONE
    ```
    
    # Additional Notes
    
    <!--
    Any extra context or edge cases for reviewers.
    -->
    nikolasmatt authored Mar 12, 2026
    Configuration menu
    Copy the full SHA
    bb6daed View commit details
    Browse the repository at this point in the history
  4. fix: wait for deployment readiness before reporting success (#296)

    # Description
    
    - **Motivation:** After deploying an agent or MCP server, the CLI
    returned immediately without confirming the deployment was actually
    ready. Users had no way to know if the deployment succeeded. Fixes #192.
    - **What changed:**
    - Added `--wait` flag (default `true`) to both `agent deploy` and `mcp
    deploy` commands
    - Added `WaitForDeploymentReady` helper in `internal/cli/common/wait.go`
    that polls deployment status until terminal state or 5-minute timeout
      - Added `deploy_test.go` with flag registration tests
      - Removed trivial `TestWaitConstants` test per review feedback
    
    # Change Type
    
    /kind feature
    
    # Changelog
    
    ```release-note
    Add --wait flag to agent deploy and mcp deploy to wait for deployment readiness before returning
    ```
    
    # Additional Notes
    
    - Rebased on latest main to reduce diff noise.
    - The `--wait` flag defaults to `true` per review feedback (reversed
    from original `--no-wait` approach).
    - Local deployments skip the wait since they are handled synchronously.
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
    Co-authored-by: timflannagan <[email protected]>
    3 people authored Mar 12, 2026
    Configuration menu
    Copy the full SHA
    f91b49b View commit details
    Browse the repository at this point in the history
  5. charts: Add missing kagent RBAC permissions (#329)

    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    
    <!--
    A concise explanation of the change. You may include:
    - **Motivation:** why this change is needed
    - **What changed:** key implementation details
    - **Related issues:** e.g., `Fixes #123`
    -->
    
    Fixes #325. See issue description for reproducer. Manually tested
    locally since we don't have the helm chart hooked up to CI yet.
    
    # Change Type
    
    <!--
    Select one or more of the following by including the corresponding
    slash-command:
    ```
    /kind breaking_change
    /kind bump
    /kind cleanup
    /kind design
    /kind deprecation
    /kind documentation
    /kind feature
    /kind fix
    /kind flake
    /kind install
    ```
    -->
    
    /kind fix
    
    # Changelog
    
    <!--
    Provide the exact line to appear in release notes for the chosen
    changelog type.
    
    If no, just write "NONE" in the release-note block below.
    If yes, a release note is required:
    -->
    
    ```release-note
    NONE
    ```
    
    # Additional Notes
    
    <!--
    Any extra context or edge cases for reviewers.
    -->
    
    Signed-off-by: timflannagan <[email protected]>
    timflannagan authored Mar 12, 2026
    Configuration menu
    Copy the full SHA
    67cf2df View commit details
    Browse the repository at this point in the history
  6. agent: allow using Agentgateway as a model provider (#328)

    # Description
    
    Enables using Agentgateway as a model provider by leveraging BaseOpenAI
    from kagent-adk to proxy the LLM traffic to a custom API base URL using
    the GATEWAY_API_BASE_URL env var.
    
    Also adds a unit test to test template rendering and basic contents, and
    bumps kagent-adk to the latest version.
    
    # Change Type
    
    ```
    /kind new_feature
    ```
    
    # Changelog
    
    ```release-note
    Allows using Agentgateway as a model provider with arctl agent init.
    ```
    
    Signed-off-by: Shashank Ram <[email protected]>
    shashankram authored Mar 12, 2026
    Configuration menu
    Copy the full SHA
    c5c62ad View commit details
    Browse the repository at this point in the history

Commits on Mar 13, 2026

  1. UI refresh to make it cleaner (#324)

    # Description
    
    cleans up the ui, add dark/light mode, change the way we display item
    details (using a sheet, instead of dialog), cleans up the display of
    deployed items, adds filters, search, etc.
    
    
    https://github.com/user-attachments/assets/66265d0f-1182-463d-a590-a6f1251c9295
    
    <img width="1538" height="1247" alt="Screenshot 2026-03-12 at 11 22
    29 AM"
    src="https://github.com/user-attachments/assets/8eb82165-8c2e-4008-8001-ead80a8c804e"
    />
    
    
    # Change Type
    
    ```
    /kind fix
    /kind cleanup
    ```
    
    # Changelog
    
    
    ```release-note
    UI refresh
    ```
    
    ---------
    
    Signed-off-by: Peter Jausovec <[email protected]>
    peterj authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    3206bbd View commit details
    Browse the repository at this point in the history
  2. fix: wait for daemon readiness after auto-start (#263)

    # Description
    
    Fixes #48 — `arctl list -A` (and other commands) failed with "failed to
    reach API after 3 attempts" when the daemon was auto-started because the
    API server wasn't fully ready when the client tried to connect.
    
    # Change Type
    
    ```
    /kind fix
    ```
    
    # Changelog
    
    ```release-note
    wait for daemon readiness after auto-start
    ```
    
    ### Root cause
    
    After `docker compose up -d --wait` returns, the container is "healthy"
    per Docker's health check, but the API server inside may still be
    initializing. The previous retry logic (3 attempts, 1s/2s/3s linear
    backoff = 6 seconds total) was insufficient for slow networks or cold
    starts.
    
    ### Changes
    
    - **`pkg/types/types.go`**: Added `WaitForReady()` to `DaemonManager`
    interface
    - **`pkg/daemon/daemon.go`**: Implemented `WaitForReady()` — polls
    `/v0/ping` with exponential backoff (500ms → 4s) for up to 30 seconds
    - **`pkg/cli/root.go`**: Calls `dm.WaitForReady()` after `dm.Start()` so
    the API is confirmed responsive before creating the client
    - **`internal/client/client.go`**: Increased `pingWithRetry` from 3 to 5
    attempts with exponential backoff as a secondary safety net
    
    ### Tests
    
    - 4 new daemon tests (`pkg/daemon/daemon_test.go`): interface
    compliance, already-ready, becomes-ready-after-delay, isServerResponding
    - 3 new client tests (`internal/client/client_test.go`): immediate
    success, success after failures, all fail
    - All existing tests pass: `go test ./...` clean
    
    ## Test plan
    
    - [ ] Auto-start daemon from cold (no containers running) — verify
    `arctl list -A` succeeds without retry errors
    - [ ] Verify behavior on slow network (hotel wifi scenario from #48)
    - [ ] Verify `WaitForReady()` returns immediately if daemon is already
    running
    - [ ] Run `go test ./...` — all pass
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Signed-off-by: Peter Jausovec <[email protected]>
    Co-authored-by: Joel Klabo <[email protected]>
    peterj and Joel Klabo authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    bef0afc View commit details
    Browse the repository at this point in the history
  3. cli: allow resolving MCP URL containing ${ENV_VAR} (#342)

    # Description
    Allows resolving MCP URLs containing ${ENV_VAR} using dynamic URL
    resolution from environment variables at runtime. This is extremely
    useful to not hardcode the MCP URL in the agent code and instead specify
    them during deployment using environment variables, decoupling code from
    runtime values that are dynamic.
    
    E.g. `arctl agent add-mcp --remote http://\${ADDRESS}/mcp`
    
    # Change Type
    
    ```
    /kind new_feature
    ```
    
    # Changelog
    
    ```release-note
    Allows MCP URLs containing environment variables to be resolved
    at runtime.
    ```
    
    Signed-off-by: Shashank Ram <[email protected]>
    shashankram authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    aa99fcf View commit details
    Browse the repository at this point in the history
  4. internal: Fix latest version display (#344)

    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    
    <!--
    A concise explanation of the change. You may include:
    - **Motivation:** why this change is needed
    - **What changed:** key implementation details
    - **Related issues:** e.g., `Fixes #123`
    -->
    
    We keep non-semver version labels unchanged when formatting them for CLI
    output.
    
    Previously, the display helper always added a leading v, which turned
    the latest sentinel into vlatest in publish and delete output.
    
    Now, only semver values are normalized with a v prefix, while labels
    like latest are shown as-is.
    
    Fixes #227.
    
    # Change Type
    
    <!--
    Select one or more of the following by including the corresponding
    slash-command:
    ```
    /kind breaking_change
    /kind bump
    /kind cleanup
    /kind design
    /kind deprecation
    /kind documentation
    /kind feature
    /kind fix
    /kind flake
    /kind install
    ```
    -->
    
    /kind fix
    
    # Changelog
    
    <!--
    Provide the exact line to appear in release notes for the chosen
    changelog type.
    
    If no, just write "NONE" in the release-note block below.
    If yes, a release note is required:
    -->
    
    ```release-note
    NONE
    ```
    
    # Additional Notes
    
    <!--
    Any extra context or edge cases for reviewers.
    -->
    
    ---------
    
    Signed-off-by: timflannagan <[email protected]>
    timflannagan authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    7e29a9a View commit details
    Browse the repository at this point in the history
  5. internal: Fix failed deployment cleanup (#346)

    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    
    <!--
    A concise explanation of the change. You may include:
    - **Motivation:** why this change is needed
    - **What changed:** key implementation details
    - **Related issues:** e.g., `Fixes #123`
    -->
    
    We stop treating failed or cancelled deployment rows as active
    deployments and allow those rows to be removed without invoking platform
    undeploy.
    
    Previously, list and metadata surfaces counted any matching deployment
    row, including failed and cancelled records. Deleting a failed
    deployment also still tried to undeploy platform resources first, which
    could fail even when nothing had been created.
    
    Now, only deployed rows contribute to deployment status displays, and
    failed or cancelled records are removed directly from the database
    during delete.
    
    Fixes #326.
    
    # Change Type
    
    <!--
    Select one or more of the following by including the corresponding
    slash-command:
    ```
    /kind breaking_change
    /kind bump
    /kind cleanup
    /kind design
    /kind deprecation
    /kind documentation
    /kind feature
    /kind fix
    /kind flake
    /kind install
    ```
    -->
    
    /kind fix
    
    # Changelog
    
    <!--
    Provide the exact line to appear in release notes for the chosen
    changelog type.
    
    If no, just write "NONE" in the release-note block below.
    If yes, a release note is required:
    -->
    
    ```release-note
    NONE
    ```
    
    # Additional Notes
    
    <!--
    Any extra context or edge cases for reviewers.
    -->
    
    Signed-off-by: timflannagan <[email protected]>
    timflannagan authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    a0439a2 View commit details
    Browse the repository at this point in the history
  6. resolving prompts when deploying locally & to k8s (#319)

    <!--
    Thanks for opening a PR! Please delete any sections that don't apply.
    -->
    
    # Description
    
    resolves the prompts when deploying locally and to kubernetes. Fixes
    #308 and #315
    
    
    # Change Type
    
    ```
    /kind feature
    ```
    
    
    # Changelog
    
    ```release-note
    resolve registry prompts when deploying locally and to kubernetes
    ```
    
    ---------
    
    Signed-off-by: Peter Jausovec <[email protected]>
    peterj authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    2183f48 View commit details
    Browse the repository at this point in the history
Loading