feat: cut over to ExtraToast/agents published images#657
Merged
Conversation
assistant-api, assistant-ui, agent-gateway, and agent-runner source directories are deleted from this repo. The services are now built and published independently at ghcr.io/extratoast/agents/*. Deployment changes: - New Flux manifests under platform/cluster/flux/apps/stateless/agents-api/ and agents-ui/ point at the published images in agents-system namespace. - Old stateless/assistant-api/ and assistant-ui/ manifests removed. - agents/rbac/agents-api-role.yaml replaces assistant-api-role.yaml. - fleet.yaml updated: assistant→agents throughout (service_intent, placement_intent, exposure_intent, access_intent, ingress_intent). - Render outputs regenerated (ingressroutes, catalog ConfigMaps). Auth & service alignment: - ServicePermission.ASSISTANT → AGENTS (subdomain: agents / agents-ws). - RegisteredClients: buildAssistantApiClient → buildAgentsApiClient, clientId assistant-api → agents-api. - AuthorizationServerConfig, ServicePermissionTest, ForwardAuthIntegrationTest, JooqUserRepositoryIntegrationTest updated to match. - app-ui serviceRegistry: permission AGENTS, icon agents.svg. - make-admin.sh grant row updated. Infrastructure renames: - Postgres: assistant_db/user/password → agents_db/user/password (init-script-configmap, deployment Vault template, docker init script). - Vault bootstrap-auth.sh: policy, K8s auth role, DB role all renamed. - Vault postgres secret keys assistant.user/password → agents.user/password. - Gatus endpoints, Alloy CORS/log config, alert rules, Grafana dashboard tags, priority-class comments updated. - docker-compose.yml and docker-compose.ci.yml updated to use published images. - prometheus.yml / prometheus.dev.yml job names updated. - CI workflows (ci.yml, build-and-publish.yml, crac-train.yml, system-tests.yml, contract-validate.yml, prod-smoke.yml, vault-bootstrap-validate.yml) trimmed / renamed for agents. - pre-commit-check.sh and setup-dev-dns.sh updated. - System tests and auth-api integration tests updated to agents URLs. - dependabot.yml drops assistant-api and assistant-ui docker entries. - package.json removes dead generate:assistant-client script.
added 6 commits
June 11, 2026 10:13
Frontend unit tests: ASSISTANT → AGENTS in serviceRegistry.test.ts and AppsGrid.test.ts (SERVICE_ASSISTANT role matched nothing after the rename, producing 15 cards instead of 16). Lint/format: prettier --write on all platform/tests/*.js files to satisfy the root-level format:check. Platform validate: gatus-endpoints-configmap.yaml had app-ui ordered before agents-* entries; render re-orders to strict alphabetical, so align the committed file. Agent-kit doctor: render-agent-kit.py read services/agent-runner/entrypoint.sh to derive allowed MCP profiles, but that file was deleted as part of the cutover. Remove the entrypoint cross-check; validate claude vs codex ConfigMap profile sets directly instead. All 55 platform tests pass locally. Migration guard: add allow-migration-change label to the PR so the guard downgrades the assistant-api migration deletions to a warning (deliberate service retirement, not an accidental edit).
…radle.kts The auth-api and knowledge-api Dockerfiles pre-copied every service's build.gradle.kts for the Gradle dependency layer. The agents cut-over removed services/assistant-api and services/agent-gateway, so those COPY lines failed with 'not found'. settings.gradle.kts no longer includes those projects, so the lines are obsolete.
The agents stack (agents-api, agents-ui) is now built and deployed from ExtraToast/agents, not from this repo. CI has no credentials to pull ghcr.io/extratoast/agents/* images, so the compose stack failed on startup before any test could run. Changes: - docker-compose.ci.yml: disable agents-api and agents-ui via `profiles: [disabled]` so the CI compose stack starts without them - Delete agents-only test files: AssistantChatFlowTest, SessionsChatFlowTest, ProjectsFlowTest, RepositoriesFlowTest, CrossServiceSystemTest - Strip agents-api/agents-ui entries from parameterized suites: HealthCheckSystemTest, HealthSmokeSystemTest, TraefikSystemTest, TraefikHealthCheckSystemTest, SecurityHeadersSystemTest - Remove agents legs from cross-service Playwright tests: CrossAppSessionTest, LogoutFlowTest, ProtectedPageRedirectTest, MainSiteServiceLaunchTest - Remove unused agentsBaseUrl from TestHelper and ASSISTANT_UI_URL from PlaywrightTestBase - Add services/system-tests/README.md noting that agents e2e coverage now lives in ExtraToast/agents Platform Tests: the "installed hooks stay silent when disabled or unauthenticated" EPIPE failure is a pre-existing flakiness in the agent-kit-manifest test suite (write to a closing child stdin), not a regression from this cutover. Passes locally; rerun if it fires in CI.
agents-api no longer runs in the personal-stack system-test stack (it is an external service from ExtraToast/agents), so its Flyway migrations are not applied here and the agents_db 'conversation' table check failed the stack bring-up. Verify only the databases owned by services that still run in this stack.
agents-api/agents-ui are external (ExtraToast/agents) and not started in the personal-stack system-test compose, so the route readiness checks for agents.* never pass. Drop them; the remaining checks cover the services this stack runs.
The auth-api ServicePermission enum entry was renamed ASSISTANT->AGENTS in the cut-over; AdminApiSystemTest still granted/expected ASSISTANT, so the grant was dropped and the assertion failed.
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.
Summary
assistant-api,assistant-ui,agent-gateway, andagent-runnerhave been extracted to theExtraToast/agentsrepo and published toghcr.io/extratoast/agents/*. This PR removes those service source trees from this repo and wires the cluster to consume the published images instead.Service removal
services/assistant-api/,services/assistant-ui/,services/agent-gateway/,services/agent-runner/deleted.settings.gradle.ktsdrops:services:assistant-apiand:services:agent-gateway.pnpm-workspace.yamldropsservices/assistant-ui.package.jsonremoves the deadgenerate:assistant-clientscript.dependabot.ymlremoves the assistant-api and assistant-ui docker entries.New Flux manifests
platform/cluster/flux/apps/stateless/agents-api/— Frankfurt deployment + Enschede WS replica, ServiceMonitor, PDB, namespace, all inagents-system.platform/cluster/flux/apps/stateless/agents-ui/— deployment + PDB inagents-system.stateless/assistant-api/andstateless/assistant-ui/removed.agents/rbac/agents-api-role.yamlreplacesassistant-api-role.yaml.Rename: assistant → agents (cluster-wide)
fleet.yaml—service_intent,placement_intent,exposure_intent,access_intent,ingress_intent,kubernetes_backendsall updated. Render outputs (ingressroutes, catalog ConfigMaps) regenerated.ServicePermission.ASSISTANT→AGENTS(subdomainsagents/agents-ws).RegisteredClients:buildAssistantApiClient→buildAgentsApiClient,clientIdassistant-api→agents-api.AuthorizationServerConfig,ServicePermissionTest,ForwardAuthIntegrationTest,JooqUserRepositoryIntegrationTest,IntegrationTestBaseupdated.app-uiserviceRegistry: permissionAGENTS, iconagents.svg, URLagents.make-admin.shgrant row updated.Infrastructure renames
assistant_db/assistant_user/assistant_password→agents_db/agents_user/agents_passwordininit-script-configmap.yaml,deployment.yamlVault template,infra/docker/postgres/init-databases.sh, anddocker-compose.ci.yml.assistant.user/assistant.password→agents.user/agents.password.bootstrap-auth.sh: Vault KV policy, K8s auth role, database dynamic-creds role all renamed toagents-api.agents-api,agents-ui,agents-ws), Alloy CORS/log config, alert rules (auth-api|agents-api), Grafana dashboard tags and filenames updated.auth-apideployment CORS list:assistant.jorisjonkers.dev→agents.jorisjonkers.dev.agents-api.setup-dev-dns.shupdated toagents.$DOMAIN.CI
ci.ymlandbuild-and-publish.yml— assistant-api, agent-runner, assistant-ui path filters and matrix entries removed.crac-train.yml— assistant-api matrix entry removed.system-tests.yml— assistant-api/assistant-ui removed from default changed-services and build matrix;-Dtest.assistant-api.urldropped.contract-validate.yml— rewritten to validate onlyknowledge-apiOpenAPI spec.prod-smoke.yml—AGENTS_API_URL,agents.jorisjonkers.dev.vault-bootstrap-validate.yml—agents.user=ci_agents_parent, required policies list updated.agents.jorisjonkers.test.Test plan
kubectl kustomize platform/cluster/flux/clusters/production(CI gate)flux reconcile kustomization apps --timeout=120s, verifyagents-apiandagents-uirollout inagents-system