Skip to main content

vekil-reverse-proxy-deploy

Deploy or update Vekil from github.com/sozercan/vekil as a Kubernetes or local reverse proxy for Anthropic, Gemini, OpenAI Chat Completions, and OpenAI Responses-compatible clients. Use when the user asks to install, redeploy, configure provider routing for, expose, port-forward, validate, or troubleshoot Vekil reverse proxy deployments.

Datos de origen

Repositorio
orka-agents/orka
Última actividad en el origen
28 de julio de 2026 a las 22:08
Idioma detectado de SKILL.md
inglés
Estrellas
31
Forks
24

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
3 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
vekil-reverse-proxy-deploy
description
Deploy or update Vekil from github.com/sozercan/vekil as a Kubernetes or local reverse proxy for Anthropic, Gemini, OpenAI Chat Completions, and OpenAI Responses-compatible clients. Use when the user asks to install, redeploy, configure provider routing for, expose, port-forward, validate, or troubleshoot Vekil reverse proxy deployments.
# Vekil Reverse Proxy Deploy Deploy Vekil as the single reverse-proxy endpoint for Claude/Anthropic, Gemini, OpenAI-compatible, and Codex clients. Prefer the bundled Kubernetes script for repeatable cluster deployments; use Docker only for quick local runs. ## Standard Kubernetes Workflow 1. Confirm the target before changing anything: - `kubectl config current-context` - `kubectl cluster-info` - For remote/shared clusters, state the context and ask before exposing `LoadBalancer` or `NodePort` services. 2. Deploy the default zero-config Copilot-backed proxy: - `scripts/deploy_vekil_reverse_proxy.sh --context <kubectl-context>` - Default namespace: `vekil-system`; default service: `ClusterIP`; default image: `ghcr.io/sozercan/vekil:latest`; default port: `1337`. 3. If explicit provider routing is required, write or locate a JSON/YAML providers file that uses secret env references, then pass it with existing Kubernetes secrets: ```bash scripts/deploy_vekil_reverse_proxy.sh \ --context <kubectl-context> \ --providers-config /path/to/providers.yaml \ --env-secret AZURE_OPENAI_API_KEY=azure-openai:key ``` 4. For non-interactive Copilot auth in Kubernetes, either wire an existing Secret or let the script create/update one from an explicitly exported `COPILOT_GITHUB_TOKEN`. Prefer existing Secrets for production clusters that use a secret manager. ```bash # Existing Secret scripts/deploy_vekil_reverse_proxy.sh \ --env-secret COPILOT_GITHUB_TOKEN=copilot-github-token:token # Script-created Secret; the token is not printed or embedded in the rendered workload. export COPILOT_GITHUB_TOKEN=... scripts/deploy_vekil_reverse_proxy.sh \ --create-copilot-token-secret copilot-github-token:token ``` 5. Wait for rollout, then verify through a port-forward: ```bash kubectl -n vekil-system port-forward svc/vekil 1337:1337 curl http://127.0.0.1:1337/healthz curl http://127.0.0.1:1337/readyz curl http://127.0.0.1:1337/v1/models ``` ## Provider and Auth Notes - Zero-config mode uses Vekil's built-in GitHub Copilot upstream. In Kubernetes, device-code login can work from pod logs; use `--skip-wait`, watch `kubectl -n <namespace> logs deploy/<name>`, complete the login, then verify `/readyz`. `COPILOT_GITHUB_TOKEN` via `--env-secret` or `--create-copilot-token-secret` is better for non-interactive deployments; `--create-copilot-token-secret` requires local `COPILOT_GITHUB_TOKEN` and does not fall back to GitHub CLI OAuth tokens. If the script-created Secret changes, the script restarts the Deployment so the Secret-backed env var is reloaded. - Explicit provider configs should use `api_key_env`, not inline `api_key`, because the bundled script stores the config as a ConfigMap and refuses inline API keys by default. When the script creates or updates the providers ConfigMap, it restarts the Deployment so Vekil reloads provider routing read at startup. - OpenAI Codex providers need `auth.json` from `codex login`. If needed, mount an existing secret with `--codex-auth-secret <secret>[:auth.json]` and verify whether the deployment needs a writable token source for refresh behavior. - Vekil token cache defaults to an `emptyDir`; use `--token-pvc <claim>` if preserving Vekil-managed cached auth across pod restarts matters. ## Common Commands Render the manifest without applying: ```bash scripts/deploy_vekil_reverse_proxy.sh --print ``` Create/update a Copilot token Secret from an explicit local environment token and deploy: ```bash export COPILOT_GITHUB_TOKEN=... scripts/deploy_vekil_reverse_proxy.sh \ --create-copilot-token-secret copilot-github-token:token ``` Deploy to a custom namespace and expose inside the cluster: ```bash scripts/deploy_vekil_reverse_proxy.sh --namespace ai-proxy --name vekil ``` Expose for a local kind/minikube workflow with an explicit context: ```bash scripts/deploy_vekil_reverse_proxy.sh --context kind-orka --namespace vekil-system kubectl --context kind-orka -n vekil-system port-forward svc/vekil 1337:1337 ``` Use the local Docker quick-start instead of Kubernetes when the user only needs a workstation proxy: ```bash docker run -p 1337:1337 \ -v ~/.config/vekil:/home/nonroot/.config/vekil \ ghcr.io/sozercan/vekil:latest ``` ## Client Smoke Tests Run these only after `/readyz` succeeds and the requested model appears in `/v1/models`. ```bash env ANTHROPIC_BASE_URL=http://127.0.0.1:1337 \ ANTHROPIC_API_KEY=dummy \ claude --model claude-sonnet-4 --print --output-format text "Reply with exactly PROXY_OK" ``` ```bash env OPENAI_API_KEY=dummy \ OPENAI_BASE_URL=http://127.0.0.1:1337/v1 \ codex exec --skip-git-repo-check -m gpt-5.5 "Reply with exactly PROXY_OK" ``` ```bash env GEMINI_API_KEY=dummy \ GOOGLE_GEMINI_BASE_URL=http://127.0.0.1:1337 \ GOOGLE_GENAI_API_VERSION=v1beta \ GEMINI_CLI_NO_RELAUNCH=true \ gemini -m gemini-2.5-pro -p "Reply with exactly PROXY_OK" -o json ``` ## Troubleshooting - If rollout fails: `kubectl -n <namespace> describe deploy/<name>` and `kubectl -n <namespace> logs deploy/<name>`. - If an existing Secret used with `--env-secret` changes outside this script, restart the Deployment so env vars reload: `kubectl -n <namespace> rollout restart deploy/<name>`. - If `/healthz` works but `/readyz` fails, focus on provider auth, provider config model ownership, upstream reachability, or missing secret env vars. - If clients cannot connect, verify the base URL path: Anthropic/Gemini use `http://host:1337`; OpenAI/Codex use `http://host:1337/v1`. - Do not paste secrets into prompts, commit provider files with inline credentials, or expose a public service without confirming the user's intended security boundary. - When zero-config mode falls back to GitHub Copilot device-code login, surface the login code and URL to the user and wait for their confirmation before continuing. Never complete the login on their behalf.
Ver en GitHub