Skip to content

deploy: the llm-shim as an optional compose/Helm component with a Bedrock example #1715

Description

@DmitriyG228

Value this issue delivers

A customer whose policy is "Bedrock only, in-VPC" cannot run the agent inference path today: verified on 2026-09-18, no Bedrock route exists anywhere in the runtime, and the components that call an LLM speak the OpenAI chat-completions shape. The choices are to teach every caller a second SDK, or to put one OpenAI-compatible gateway next to the deployment and point the existing base URL at it. The second costs no Vexa code change and works for any provider that operator already has — Bedrock is simply the case that forced it. What is missing is that the gateway is not part of the deployment surface: an operator has to invent it, and there is nothing to point a customer at.

What this issue ships

  • A llm-shim service in deploy/compose/docker-compose.yml behind the llm-shim profile — absent from docker compose config --services unless the profile is named, bound to loopback only, third-party image pinned by tag (litellm/litellm:main-v1.97.0).
  • deploy/compose/llm-shim/: the component README as its contract, a default config.yaml, and two worked examples — config.local.example.yaml and config.bedrock.example.yaml.
  • Helm: llmShim.enabled (default off) rendering a Deployment, Service (ClusterIP) and ConfigMap, with existingSecret reaching the provider credential through secretKeyRef and extraEnv for anything else; nothing renders when it is off.
  • deploy/compose/.env.example: host AWS variables passed through only when set, with the comment saying so.
  • docs/docs/configuration.mdx § Agent inference gains "The llm-shim": purpose, the compose command, the Helm value, the env table, the Bedrock case, and the loopback/no-auth warning.

Validation contract

Machine-observable: docker compose config --services with and without --profile llm-shim (absent / present); helm template in both states — zero mentions by default, and with llmShim.enabled=true one Deployment, Service and ConfigMap, the secretKeyRef to the named secret, the extra env rendered, one more readiness probe than the default render; the compose wiring tests, helm lint both ways, and the fast static gates green. Caller-verified: docker compose --profile llm-shim up -d llm-shim against any OpenAI-compatible server with one chat completion through it, and a live Bedrock request in-VPC on an AWS account, reported here.

Out of scope: any change to how Vexa components choose or call a model; authentication on the shim itself (loopback in compose, ClusterIP in Helm is the boundary); shipping a provider credential; making the shim a default component.

Refs: business custody DmitriyG228/biz#208. Delivered by #1711.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions