-
Notifications
You must be signed in to change notification settings - Fork 45
Comparing changes
Open a pull request
base repository: agentregistry-dev/agentregistry
base: v0.3.0
head repository: agentregistry-dev/agentregistry
compare: v0.3.1
- 15 commits
- 87 files changed
- 8 contributors
Commits on Mar 11, 2026
-
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]>
Configuration menu - View commit details
-
Copy full SHA for 1c38dcd - Browse repository at this point
Copy the full SHA 1c38dcdView commit details -
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]>Configuration menu - View commit details
-
Copy full SHA for 938806e - Browse repository at this point
Copy the full SHA 938806eView commit details -
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. -->
Configuration menu - View commit details
-
Copy full SHA for eec7764 - Browse repository at this point
Copy the full SHA eec7764View commit details
Commits on Mar 12, 2026
-
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]>
Configuration menu - View commit details
-
Copy full SHA for 573bb30 - Browse repository at this point
Copy the full SHA 573bb30View commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for c769350 - Browse repository at this point
Copy the full SHA c769350View commit details -
Automatically update
Chart.yamlversion 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. -->
Configuration menu - View commit details
-
Copy full SHA for bb6daed - Browse repository at this point
Copy the full SHA bb6daedView commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for f91b49b - Browse repository at this point
Copy the full SHA f91b49bView commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for 67cf2df - Browse repository at this point
Copy the full SHA 67cf2dfView commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for c5c62ad - Browse repository at this point
Copy the full SHA c5c62adView commit details
Commits on Mar 13, 2026
-
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]>
Configuration menu - View commit details
-
Copy full SHA for 3206bbd - Browse repository at this point
Copy the full SHA 3206bbdView commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for bef0afc - Browse repository at this point
Copy the full SHA bef0afcView commit details -
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]>Configuration menu - View commit details
-
Copy full SHA for aa99fcf - Browse repository at this point
Copy the full SHA aa99fcfView commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for 7e29a9a - Browse repository at this point
Copy the full SHA 7e29a9aView commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for a0439a2 - Browse repository at this point
Copy the full SHA a0439a2View commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for 2183f48 - Browse repository at this point
Copy the full SHA 2183f48View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.3.0...v0.3.1