# VAUCO MASTERPLAN — Chris Christiansen **Sist oppdatert: 2026-05-27 20:xx CEST** **Status: ✅ FASE A KOMPLETT | ✅ FASE B KOMPLETT | ✅ ML-1 live | ✅ CG1+CG2 live | ✅ OAuth live | CG3 neste** --- ## KONTEKST — Hva vi bygger To parallelle spor: 1. **OPAX** — AI-drevet operativsystem for deg selv (intern cockpit, `opax.vauco.no`). Medioteq og andre kunder onboardes via OPAX/Terraform — **du styrer det selv innenfra OPAX, ikke her.** 2. **CostGuard** — Salgbart produkt. AI-drevet GCP-kostnadsovervåking som selges til andre bedrifter. Stack: Dialogflow CX → OSVauco Cloud Run → Cloud Billing API → Gemini 2.5 Flash Pris å drifte: ~$32-45/mnd. Salgspris: $99-299/mnd pr. kunde. **Dette er fokus nå.** **Repo-oversikt:** | Repo | Hva det er | |---|---| | `OSVauco` | Kjerne: Cloud Run agent, GCP-scripts, ml/, auth/ | | `vauco-gemini-tui-bridge` | Din TUI-cockpit | | `vauco-os` | Arkitektur og kundedok | | `vauco-bootstrap` | Terraform-modul for kunde-provisjonering (Fase C) | | `deep-dream` | Strategisk visjon — aldri deploy herfra | --- ## AGENT-IDENTITET | Identitet | E-post | Rolle | Formål | |---|---|---|---| | Eier / admin | `chris.christiansen@vauco.no` | `billing.admin` + `billing.viewer` | Full kontroll | | Agent (OPAX) | `jason.vauger@vauco.no` | `billing.viewer` | Hente og rapportere kostnadsdata autonomt | | Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) | Delt innboks for team og kunder | --- ## DNS / DOMENE-ARKITEKTUR | Domene | Type | Teknologi | Fase | |---|---|---|---| | `opax.vauco.no` | Intern cockpit (kun Chris) | CNAME → Cloud Run | ✅ Live | | `costguard.vauco.no` | CostGuard salgsdemo | CNAME → Cloud Run /static/ | CG3 neste | | `kunde1.vauco.no` / kundedomener | Kunde-instanser | LB + IAP (Terraform) | Fase C | --- ## CLOUD RUN — LIVE ENDEPUNKTER **Service:** `osvauco-agent` | **Region:** `europe-west1` **URL:** `https://osvauco-agent-357036551735.europe-west1.run.app` **Siste revisjon:** `osvauco-agent-00064-p9h` | Endepunkt | Status | Beskrivelse | |---|---|---| | `GET /health` | ✅ | Health check | | `POST /run` | ✅ | Agent (light/heavy) | | `POST /run/dag` | ✅ | Parallell DAG | | `GET /billing/summary?client_id=X` | ✅ | Kostnad per tjeneste siste 30d | | `GET /billing/forecast?client_id=X` | ✅ | Prognose basert på 7d snitt | | `GET /billing/anomalies?client_id=X` | ✅ | Anomali-deteksjon + Pub/Sub | | `GET /auth/login?client_id=X` | ✅ | Start OAuth2-flow for klient | | `GET /auth/callback` | ✅ | Google redirect → lagrer token | | `GET /static/billing-dashboard.html` | ✅ | Billing dashboard UI | | `GET /state` | ✅ | Agent state snapshot | | `GET /telemetry/history` | ✅ | Telemetri | **OAuth credentials (Vauco OS Web App):** - Client ID: `357036551735-ka7t2fv9ue2jp01bs826hpdctlvispuo.apps.googleusercontent.com` - Redirect URI: `https://osvauco-agent-357036551735.europe-west1.run.app/auth/callback` - Secrets i Secret Manager: `OAUTH_CLIENT_ID`, `OAUTH_CLIENT_SECRET` **BigQuery billing export:** - Dataset: `propane-will-491900-m5:billing_export` - Tabell: ikke ankommet ennå (aktivert 2026-05-27, forventet innen 24t) - Når tabell dukker opp: sett `BILLING_TABLE` env-var i Cloud Run --- ## FASE CG — CostGuard ← AKTIV SPRINT ``` [x] CG1 — Billing API-integrasjon ml/billing_agent.py: GET /billing/summary, /forecast BQ-spørring klar, venter på billing_export-tabell (i morgen) [x] CG2 — Anomali-deteksjon ml/anomaly_detector.py: forbruk > 2x 7d-snitt → Pub/Sub [x] AUTH — OAuth2 klient-onboarding auth/oauth_flow.py + auth/token_store.py /auth/login + /auth/callback live i main.py Token lagres per client_id i Secret Manager [ ] CG3 — CostGuard landingsside costguard.vauco.no: "Koble til GCP"-knapp → /auth/login Dialogflow Messenger embed (Jason-v1 FAQ, DX1-DX3 ferdig) Billing dashboard embed (/static/billing-dashboard.html ferdig) CNAME costguard.vauco.no → Cloud Run [ ] CG4 — Onboard første kunde via vauco-bootstrap Terraform-modul [ ] CG5 — Salgsdemo klar ``` --- ## FASE A — ✅ KOMPLETT ``` [x] A1-A9 — Alle ferdig. Se tidligere historikk. [x] SMOKE — scripts/smoke-test.sh: 10/10 ✅ (2026-05-26 01:45 CEST) RAG corpus: projects/357036551735/locations/europe-west1/ragCorpora/6917529027641081856 Memory Engine: projects/357036551735/locations/us-central1/reasoningEngines/2260229219579592704 ``` --- ## FASE A2 — Dialogflow CX FAQ-agent ``` [x] DX1 — Agent: OSVauco FAQ, us-central1, propane-will-491900-m5 [x] DX2 — Data Store: threadstone-faq-store, 39 Q&A-par [x] DX3 — Norsk systemprompt, fungerer [x] DX4 — Parkert til C4 (Medioteq) — Cloud Run URL: https://osvauco-agent-zjbqp3prqq-uc.a.run.app [ ] DX5 — Publiser via Dialogflow Messenger (trigger: CG3) [ ] DX6 — Budsjett-alert Dialogflow CX [ ] DX7 — Voice-kanal (trigger: etter DX5) [ ] B6 — Eksporter Dialogflow CX til versjonskontroll ``` --- ## FASE ML ``` [x] ML-1 — DAG, state store, telemetri ✅ (2026-05-25) [ ] ML-2 — Adaptiv intelligens (trigger: >500 telemetri-kall) [ ] ML-3 — Strategisk innsikt (trigger: ML-2 + første kunde) ``` --- ## FASE B — ✅ KOMPLETT ``` [x] B1 — Cloud Run live [x] B2 — GitHub PAT i Secret Manager [x] B3 — Cloud Build 2nd gen (trigger: osvauco-agent-deploy) [x] B4 — GitHub App webhook [x] B5 — Cost guard 500 NOK/mnd + GCS ML-telemetri [x] B1-IAP — opax.vauco.no CNAME live [ ] B6 — Eksporter Dialogflow CX (se DX-lista) ``` --- ## FASE C — Kunde-onboarding (Medioteq og videre) > **NB: Medioteq og fremtidige kunder onboardes av deg selv via OPAX innenfra.** > Dette er ikke en oppgave for ekstern assistanse. Terraform-modulen er klar. ``` [x] C1 — vauco-bootstrap Terraform-modul klar (validate: PASS) [x] C2 — vauco-os kundeflate + CUSTOMER_API.md [x] C3 — billing@vauco.no Google Group [ ] C4 — Medioteq: HITL-møte → velg project_id → terraform apply C4.1: project_id + billing_account_id (HITL-gate) C4.2: Auth (Google login → vurder BankID sluttfase) ``` --- ## INFRASTRUKTUR | Script | Rolle | Status | |--------|-------|--------| | `00-authcheck.sh` | Verifiser gcloud-innlogging | Klar | | `01-setupenv.sh` | Aktiver APIs, SA, IAM, budsjetter, Pub/Sub | Klar | | `02-deploy.sh` | IAP-deploy på eget domene | Klar | | `03-teardown.sh` | Riv ned Cloud Run (kjør hver kveld) | Klar | | `04-observability-setup.sh` | Cloud Monitoring + alerting | Klar | | `05-cloudrun-deploy.sh` | ADK-agent til Cloud Run | Klar | | `06-cicd-setup.sh` | GitHub → Cloud Build 2nd gen | Klar | | `07-rag-setup.sh` | RAG Engine corpus + fallback | Klar | | `08-memorybank-setup.sh` | Memory Bank + auto-install | Klar | | `09-cost-check.sh` | Kostnadsoversikt + Artifact Registry | Klar | | `10-cost-guard.sh` | Cloud Function auto-teardown + GCS telemetri sink | Klar | | `11-billing-iam-hardening.sh` | Billing IAM hardening | Klar | | `scripts/smoke-test.sh` | 10-case røyktest | Klar | --- ## KJENTE HULL | ID | Hva | Status | |---|---|---| | OQ-01 | Memory Bank — ingen gcloud CLI | Python SDK only | | OQ-02 | RAG Engine regional availability | Auto-fallback til us-east1 | | OQ-03 | CMEK ikke for RAG Engine | VPC-SC only | | OQ-04 | Cloud Build GitHub OAuth | **LØST** — 2nd gen | | OQ-05 | gcloud alpha monitoring ustabil | Fallback til true | | OQ-06 | Memory Bank auto-discovery | Eksplisitt env var | | OQ-11 | Dialogflow CX Data Store norsk indeksering | Teste nb-NO i DX2 | | OQ-12 | gemini-2.0-flash ikke tilgjengelig | **LØST** — gemini-2.5-flash/pro + LOCATION=global | | OQ-13 | ML-telemetri /tmp/ flyktig | **LØST** — B5: GCS sink | | OQ-14 | LB vs CNAME | **LØST** — CNAME intern, LB Terraform for kunder | | OQ-15 | billing_export BQ-tabell ikke ankommet | Venter — aktivert 2026-05-27 | --- ## DRIFTSKOSTNADER | Scenario | Kostnad/mnd | |---|---| | Bare deg (dev, teardown daglig) | ~$25-75 | | Dev + Dialogflow CX FAQ (10k req) | ~$145-195 | | 1 betalende kunde (lett prod) | ~$115-280 | | Medioteq-type (klinisk, compliance) | ~$220-350 | Breakeven: 1 kunde til $300-500/mnd dekker alle kostnader. --- ## LLM-RUTINGSSTRATEGI | Modell | Pris (per 1M) | Bruksområde | |---|---|---| | `gemini-2.5-flash` | $0.30 / $2.50 | light — alle enkle kall | | `gemini-2.5-pro` | $1.25 / $10.00 | heavy — reasoning, compliance | Autoriserte heavy-brukere: `opax`, `admin` --- *OSVauco-NMTMD-GCOS | propane-will-491900-m5 | global (modell) / europe-west1 (infra)*