You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(dev): align local dev stack with AI Gateway v0.5 + key-manager UI dev mode (#115)
* feat(dev): align local dev stack with AI Gateway v0.5 and add key-manager UI dev mode
Bump the dev/Makefile dependency stack to versions compatible with the
bundled Envoy AI Gateway v0.5.0 (Envoy Gateway v1.6.7, Gateway API v1.4.0)
and wire the AI Gateway ext_proc extension into Envoy Gateway at install
time. On the previous versions (EG v1.3.0) a PassthroughModel reconciled to
Ready but its upstream TLS was never programmed, so provider inference
returned 503. Extend the dev manifests with the PassthroughModel RBAC,
validating webhook, and shared-TLS issuance via the local self-signed
ClusterIssuer, plus Makefile targets and an example model for the OpenRouter
passthrough.
Add an off-by-default dev mode to the key-manager: LLM_DEV_MODE bypasses auth
and injects a fixed identity so the UI runs on a local cluster with no
Keycloak. Exposed via keyManager.devMode in the Helm chart and enabled in the
dev manifest, with a `make ui` port-forward target.
Refs #113, #114
* fix(operator): emit BackendTLSPolicy as v1 for the PassthroughModel upstream
Gateway API v1.4.0 (required by the bundled Envoy AI Gateway v0.5) graduates
BackendTLSPolicy to v1 and no longer serves v1alpha3, so the operator's
hardcoded v1alpha3 failed to apply on a version-aligned stack ("no matches
for kind BackendTLSPolicy in gateway.networking.k8s.io/v1alpha3") and the
passthrough upstream never got a TLS transport socket. Emit v1, which is the
same spec shape.
Refs #113
* fix(dev): grant key-manager RBAC to list passthroughmodels
The key-manager watches PassthroughModels as well as LLMModels, but the dev
manifest's llm-key-manager-models ClusterRole only granted llmmodels, so model
sync failed ("cannot list passthroughmodels") and passthrough models never
appeared in the UI. Matches the chart's key-manager role.
Refs #114
* feat(dev): add `make run-dev` one-command UI dev environment with hot reload
Frontend devs working on the key-manager UI now need only an OpenRouter key in
dev/.env and `make run-dev`. The target idempotently brings up the kind cluster,
operator, dev-mode key-manager, and three OpenRouter passthrough models, then
port-forwards the key-manager and starts a hot-reloading UI dev server.
- dev/uidev: a zero-dependency (stdlib-only) Go dev server that serves the UI
static files from disk, proxies /api/* to the port-forwarded key-manager, and
live-reloads the browser on file edits. The UI is plain static files, so no
build step or npm is involved.
- dev/run-dev.sh + `make run-dev`: orchestrates cluster/deploy/models/port-forward
/UI server, loading OPENROUTER_API_KEY from a gitignored dev/.env.
- dev/manifests/dev-models.yaml: three passthrough models so the UI list is
populated.
- docs/ui-development.md: frontend-dev guide (setup, editing, dev-mode auth,
shipping changes, API table, troubleshooting), linked from getting-started.
Refs #114
* fix(dev): harden local dev stack for Helm 4 and the webhook startup race
Addresses review feedback on the local dev path:
- Gateway API CRDs: apply with --server-side and pass --force-conflicts to
the eg chart install, gated on Helm major version (Helm 4 needs it; Helm 3
has no server-side apply, skips present crds/, and rejects the flag). Fixes
the CRD ownership conflict that blocked `make setup` on Helm 4.
- make setup: guard `kind create cluster` so a partial setup is re-runnable.
- operator.yaml: add a readinessProbe on the webhook port (9443) so the
`make deploy` rollout waits until the webhook is serving.
- run-dev.sh: bounded retry around the webhook-gated PassthroughModel apply
(covers the residual endpoint-propagation window), and a per-run mktemp
file for the port-forward log.
0 commit comments