Deployment: pal-e-pac

arch-deployment-pal-e-pac Architecture

architecture

Deployment

Where components run and how they connect. Answers: what runs locally vs. on k8s, and how do they talk to each other?

Deployment notes

  • pac CLI + LangGraph run locally as a Python package. No k8s deployment needed. Install via uv pip install -e ., run via pac command (typer entry point).
  • Ollama is already deployed on k8s with GPU access (Phase 6a of plan-pal-e-platform). Connected via kubectl port-forward svc/ollama 11434:11434 -n ollama.
  • MCP servers run as local stdio processes, bridged to LangChain tools via langchain-mcp-adapters. Same servers used by Claude Code — unchanged.
  • GPU constraint — GTX 1070 has 8GB VRAM. Qwen3-4B (2.6GB) always fits. Qwen3-8B (5.2GB) fits when the embedding model is paused. Cannot run both simultaneously.
  • Claude API is optional — used as the target tier and as a fallback. Multi-tier routing is a graph configuration (swap the model provider node).
  • promptfoo runs locally. Evaluates prompts against both Ollama models and Claude API. Same 29 test cases, same configs — tests model output regardless of orchestration framework.

Connection details

From To Method Endpoint
LangGraph Ollama kubectl port-forward localhost:11434
langchain-mcp-adapters forgejo-mcp stdio subprocess local process
langchain-mcp-adapters pal-e-docs-mcp stdio subprocess local process
langchain-mcp-adapters woodpecker-mcp stdio subprocess local process
forgejo-mcp Forgejo Tailscale URL forgejo.tail5b443a.ts.net
pal-e-docs-mcp pal-e-docs Tailscale URL paledocs.tail5b443a.ts.net
woodpecker-mcp Woodpecker Tailscale URL woodpecker.tail5b443a.ts.net
LangGraph Claude API HTTPS (fallback) api.anthropic.com