bobbai00 opened a new pull request, #4544:
URL: https://github.com/apache/texera/pull/4544

   ### What changes were proposed in this PR?
   
   Wires the agent-service (added in #4495 / #4540) and a LiteLLM proxy into 
`bin/single-node` so the agent panel works end-to-end on a fresh `docker 
compose up`.
   
   - `bin/agent-service.dockerfile` — new image; `oven/bun:1-alpine`, installs 
from `bun.lock`, runs `src/server.ts` on port 3001.
   - `bin/single-node/docker-compose.yml` — adds two services:
     - `litellm` (`ghcr.io/berriai/litellm:main-stable`) mounting the new 
config.
     - `agent-service` (`${IMAGE_REGISTRY}/texera-agent-service:${IMAGE_TAG}`) 
depending on `litellm`, `dashboard-service`, `workflow-compiling-service`, 
`workflow-runtime-coordinator-service`.
     - Both added to `nginx`'s `depends_on`.
   - `bin/single-node/litellm-config.yaml` — new model list (Anthropic / OpenAI 
/ Gemini), `drop_params: true`, API keys via `os.environ/...`.
   - `bin/single-node/nginx.conf` — adds three routes:
     - `/api/agents` → `agent-service:3001` with `Upgrade`/`Connection` headers 
for the `/react` WebSocket.
     - `/api/chat/` → `litellm:4000/chat/`, `= /api/models` → 
`litellm:4000/models` (the `/api` prefix is stripped because LiteLLM serves at 
root).
   - `bin/single-node/.env` — adds `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / 
`GEMINI_API_KEY` / `LITELLM_MASTER_KEY` (all blank by default) and the 
agent-service runtime endpoints. `LLM_ENDPOINT=http://nginx:8080` so the agent 
reaches LiteLLM through the same nginx that the browser uses — the OpenAI 
client appends `/api` to the base URL, and only nginx rewrites that prefix to 
LiteLLM's root paths. To avoid a startup cycle, `agent-service` does **not** 
declare `depends_on: nginx`.
   
   ### Any related issues, documentation, discussions?
   
   Builds on #4495 and #4540, which added the agent-service code but did not 
include a deployment path.
   
   ### How was this PR tested?
   
   - `docker compose -f bin/single-node/docker-compose.yml config --quiet` — 
passes.
   - `nginx -t` against the new `nginx.conf` — syntax parses cleanly (only the 
expected DNS lookup errors for service names, which resolve inside the compose 
network).
   
   ### Was this PR authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Code (Opus 4.7)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to