# cursor-agent-api-proxy OpenAI-compatible HTTP API wrapping `cursor-agent` via **ACP** (`agent acp`). Deployed on **node4-k3s**. - **Image**: `dcr.trinitysan.by/infra/cursor-agent-api-proxy` - **Deploy**: `deploy/` (PVC, Deployment, Service, ServiceExport) - **Flux image automation**: `flux/` (ImageRepository / ImagePolicy / ImageUpdateAutomation) Infra on node4 keeps thin Flux glue (Namespace, SecretAdapters, `GitRepository`, Kustomizations) in `infrastructure/node4-k3s/131-cursor-agent-api.yaml`. Public HTTPS + Authentik live on node2 (`245-authentik-cursor-agent-api`). ## Access | Endpoint | Detail | |----------|--------| | Public | `https://cursor-api.trinitysan.by` (Authentik outpost on node2) | | In-cluster / MCS | `cursor-agent-api.cursor-agent-api.svc.clusterset.local:4646` | | Health | `GET /health` | ## CI Gitea Actions (`.gitea/workflows/build-and-push.yaml`) on `master` and `workflow_dispatch` pushes: | Tag | Purpose | |-----|---------| | `:latest` | Convenience | | `:` | Immutable full SHA | | `:-` | Sortable; elected by Flux ImagePolicy | Org secrets: `DCR_USERNAME`, `DCR_PASSWORD` (infra org). ## Local build / E2E ```bash docker build -t cursor-agent-api-proxy:latest . # Requires CURSOR_API_KEY in env or .env ./scripts/e2e-docker.sh ``` ## Flux update flow 1. CI pushes `run_number-sha` to DCR 2. ImageRepository scans; ImagePolicy picks highest `run_number` 3. ImageUpdateAutomation commits the new tag into `deploy/010-cursor-agent-api.yaml` 4. Kustomization applies; Deployment rolls Requires a Gitea PAT with **read+write** on this repo (`GITEA_CURSOR_AGENT_API_GITOPS_TOKEN` on node4, see infra `060-external-secrets.yaml.template`).