generated from coulomb/repo-seed
Switch the custodian triage default from anthropic/claude-sonnet-4 to google/gemini-2.5-flash, which advertises structured-output support on OpenRouter. Tighten the OpenRouter adapter to send strict JSON schema requests and set provider.require_parameters=true so routing only hits providers that honor the requested response_format. Update Kubernetes deploy docs and config for the verified coulombcore handoff: Containerfile build path, image-pull-policy=Never for smoke pods, credential-routing notes, and live smoke evidence. Mark LLM-WP-0006 finished with closure notes from 2026-06-18.
55 lines
1.7 KiB
Markdown
55 lines
1.7 KiB
Markdown
# activity-core llm-connect Service
|
|
|
|
This overlay deploys `llm-connect` as an internal `activity-core` namespace
|
|
service for daily WSJF triage.
|
|
|
|
Stable in-cluster URL after apply:
|
|
|
|
```text
|
|
http://llm-connect.activity-core.svc.cluster.local:8080
|
|
```
|
|
|
|
Create provider credentials outside Git before applying the Deployment. For the
|
|
default OpenRouter config:
|
|
|
|
```bash
|
|
kubectl -n activity-core create secret generic llm-connect-provider-secrets \
|
|
--from-literal=OPENROUTER_API_KEY="$OPENROUTER_API_KEY"
|
|
```
|
|
|
|
Provider API key custody belongs to the operator/OpenBao-to-Kubernetes Secret
|
|
path. ops-warden documents this as outside its issuance scope; do not paste key
|
|
values into Git, State Hub, logs, or chat.
|
|
|
|
Apply:
|
|
|
|
```bash
|
|
docker build -f Containerfile -t docker.io/library/llm-connect:latest .
|
|
docker save docker.io/library/llm-connect:latest | ssh coulombcore sudo k3s ctr -n k8s.io images import -
|
|
kubectl apply -k deploy/k8s/activity-core-llm-connect
|
|
kubectl -n activity-core rollout status deployment/llm-connect
|
|
```
|
|
|
|
Smoke from inside the namespace, using an image that includes this repo's
|
|
fixtures and `scripts/smoke_activity_core_endpoint.py`:
|
|
|
|
```bash
|
|
kubectl -n activity-core run llm-connect-smoke \
|
|
--rm -i --restart=Never \
|
|
--image=llm-connect:latest \
|
|
--image-pull-policy=Never \
|
|
--env=LLM_CONNECT_URL=http://llm-connect.activity-core.svc.cluster.local:8080 \
|
|
--env=LLM_CONNECT_TIMEOUT_SECONDS=300 \
|
|
-- python scripts/smoke_activity_core_endpoint.py
|
|
```
|
|
|
|
Then set activity-core's runtime config:
|
|
|
|
```text
|
|
LLM_CONNECT_URL=http://llm-connect.activity-core.svc.cluster.local:8080
|
|
LLM_CONNECT_TIMEOUT_SECONDS=300
|
|
```
|
|
|
|
Do not commit provider keys, live prompt payloads, or smoke response bodies that
|
|
contain operational State Hub data.
|