288 lines
9.9 KiB
Markdown
288 lines
9.9 KiB
Markdown
# VAUCO MASTERPLAN — Chris Christiansen
|
|
|
|
**Sist oppdatert: 2026-05-26 CEST**
|
|
**Status: ✅ FASE A KOMPLETT | ML-1 live | Røyktest 10/10 | B-fasen neste**
|
|
|
|
---
|
|
|
|
## KONTEKST — Hva vi bygger
|
|
|
|
Ett AI-drevet operativsystem (OPAX) som kjører på Google Cloud.
|
|
Du er første kunde. Når det virker for deg → selg det til andre.
|
|
|
|
**Repo-oversikt:**
|
|
| Repo | Hva det er |
|
|
|---|---|
|
|
| `OSVauco` | Regler, GCP-scripts, agenter, docs — KJERNEN |
|
|
| `vauco-gemini-tui-bridge` | Din TUI-cockpit |
|
|
| `vauco-os` | Det kundene bruker |
|
|
| `vauco-bootstrap` | Onboarding av nye kunder (→ Terraform-modul i 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 |
|
|
|
|
**Agent-kapabiliteter med `billing.viewer`:**
|
|
- Svare på «Hva koster dette prosjektet denne måneden?»
|
|
- Sende ukentlig kostnadsrapport til chat-appen
|
|
- Reagere på Pub/Sub budget-alerts (via `10-cost-guard.sh`)
|
|
- **Ikke:** endre IAM, budsjetter eller koble prosjekter
|
|
|
|
---
|
|
|
|
## CLOUD SHELL QUICK-START (kopi-klipp)
|
|
|
|
> Bruk Cloud Shell: https://shell.cloud.google.com
|
|
|
|
```bash
|
|
# Steg 1: Klon og sett opp miljø
|
|
gcloud config set project propane-will-491900-m5
|
|
git clone https://github.com/chrischristiansen-glitch/OSVauco.git ~/OSVauco
|
|
cd ~/OSVauco
|
|
|
|
# Steg 2: Kopier og rediger .env
|
|
cp .env.example .env
|
|
nano .env
|
|
# Fyll ut: BILLING_ACCOUNT_ID, ALERT_EMAIL, GITHUB_APP_INSTALLATION_ID
|
|
|
|
# Steg 3: Installer Python-avhengigheter
|
|
pip install google-adk google-cloud-aiplatform>=1.111.0 --quiet
|
|
|
|
# Steg 4: Kjør i rekkefølge
|
|
source .env
|
|
bash infrastructure/00-authcheck.sh
|
|
bash infrastructure/01-setupenv.sh
|
|
bash infrastructure/07-rag-setup.sh
|
|
# *** Kopier RAG_CORPUS_NAME fra output inn i .env ***
|
|
nano .env && source .env
|
|
|
|
bash infrastructure/08-memorybank-setup.sh
|
|
# *** Kopier MEMORY_ENGINE_NAME fra output inn i .env ***
|
|
nano .env && source .env
|
|
|
|
gcloud run deploy osvauco-agent \
|
|
--source . --region europe-west1 \
|
|
--project propane-will-491900-m5 \
|
|
--set-secrets RAG_CORPUS=rag-corpus-name:latest \
|
|
--set-env-vars GOOGLE_GENAI_USE_VERTEXAI=1,GOOGLE_CLOUD_PROJECT=propane-will-491900-m5,GOOGLE_CLOUD_LOCATION=global,MEMORY_ENGINE_NAME=$MEMORY_ENGINE_NAME \
|
|
--no-allow-unauthenticated
|
|
|
|
bash infrastructure/04-observability-setup.sh
|
|
bash infrastructure/11-billing-iam-hardening.sh
|
|
bash scripts/smoke-test.sh
|
|
|
|
# Om kvelden (OBLIGATORISK):
|
|
bash infrastructure/03-teardown.sh
|
|
```
|
|
|
|
---
|
|
|
|
## FASE A — Ferdigstill kjernen ✅ KOMPLETT
|
|
|
|
```
|
|
[x] A1 — cp .env.example .env og fyll inn verdier
|
|
[x] A2 — bash infrastructure/00-authcheck.sh
|
|
[x] A3 — bash infrastructure/01-setupenv.sh
|
|
[x] A4 — bash infrastructure/07-rag-setup.sh
|
|
RAG corpus: projects/357036551735/locations/europe-west1/ragCorpora/6917529027641081856
|
|
[x] A5 — bash infrastructure/08-memorybank-setup.sh
|
|
Memory Engine: projects/357036551735/locations/us-central1/reasoningEngines/2260229219579592704
|
|
export MEMORY_ENGINE_NAME="projects/357036551735/locations/us-central1/reasoningEngines/2260229219579592704"
|
|
[x] A6 — Cloud Run live: osvauco-agent (europe-west1) revision 00006-282
|
|
URL: https://osvauco-agent-357036551735.europe-west1.run.app
|
|
Modes: light (gemini-2.5-flash) | heavy (gemini-2.5-pro)
|
|
Env: GOOGLE_CLOUD_LOCATION=global (krav for gemini-2.5-*)
|
|
[x] A7 — bash infrastructure/04-observability-setup.sh
|
|
TELEMETRI-KOORDINERING:
|
|
- ml/telemetry.py: JSONL /tmp/vauco_telemetry/ — agent-nivå
|
|
- A7 Cloud Monitoring: GCP-nivå (CPU, request-rate, feil-rate)
|
|
- Prod: GCS sink via 10-cost-guard.sh (B5)
|
|
[x] A8 — bash infrastructure/03-teardown.sh (kjør hver kveld)
|
|
[x] A9 — bash infrastructure/11-billing-iam-hardening.sh
|
|
[x] SMOKE — scripts/smoke-test.sh: 10/10 ✅ (2026-05-26 01:45 CEST)
|
|
```
|
|
|
|
---
|
|
|
|
## FASE A2 — Dialogflow CX FAQ-agent
|
|
|
|
**Kreditt: kr 5 822 + $1 000 Playbooks-trial**
|
|
|
|
```
|
|
[ ] DX1 — Opprett Playbook-agent i Conversational Agents Console
|
|
[ ] DX2 — Last opp FAQ-innhold som Data Store
|
|
[ ] DX3 — Konfigurer Playbook med norsk systemprompt
|
|
[ ] DX4 — Koble webhook mot OSVauco Cloud Run
|
|
[ ] DX5 — Publiser via Dialogflow Messenger
|
|
[ ] DX6 — Sett budsjett-alert for Dialogflow CX
|
|
```
|
|
|
|
---
|
|
|
|
## FASE ML — ML-lag for OPAX
|
|
|
|
```
|
|
[x] ML-1 — Grunnlag (2026-05-25)
|
|
ml/task_graph.py — Dask DAG parallell agent-kjøring
|
|
ml/state_store.py — Parameter Server state
|
|
ml/telemetry.py — JSONL per agent-kall og DAG
|
|
POST /run | POST /run/dag | GET /state | GET /telemetry/history
|
|
Røyktest: DAG 2 meldinger parallelt ✅ 4.6s
|
|
|
|
[ ] ML-2 — Adaptiv intelligens
|
|
Trigger: > 500 telemetri-kall fra ML-1
|
|
ml/feedback_loop.py, ml/hypertuner.py, ml/heavy_predictor.py
|
|
Krav: dask-ml>=2024.4.0, ray[tune]>=2.10.0
|
|
|
|
[ ] ML-3 — Strategisk innsikt
|
|
Trigger: ML-2 ferdig + Fase C første kunde
|
|
ml/agent_importance.py (XGBoost), experiments/pbt.py
|
|
Krav: xgboost>=2.0.0
|
|
```
|
|
|
|
| Miljø | Telemetri-lokasjon | Arkivering |
|
|
|---|---|---|
|
|
| Lokal dev | `/tmp/vauco_telemetry/` | Manuell |
|
|
| Cloud Run | `/tmp/vauco_telemetry/` | B5: GCS sink |
|
|
| Prod | `gs://propane-will-491900-m5-telemetry/` | Auto |
|
|
|
|
---
|
|
|
|
## FASE B — Sikring og CI/CD
|
|
|
|
```
|
|
[ ] B1 — bash infrastructure/02-deploy.sh (IAP på opax.vauco.no)
|
|
[ ] B2 — Opprett GitHub PAT og legg i Secret Manager
|
|
[ ] B3 — bash infrastructure/06-cicd-setup.sh
|
|
[ ] B4 — Legg til webhook URL i Secret Manager
|
|
[ ] B5 — bash infrastructure/10-cost-guard.sh
|
|
Auto-teardown Cloud Function + GCS sink for ML-telemetri
|
|
[ ] B6 — Eksporter Dialogflow CX agent til versjonskontroll
|
|
```
|
|
|
|
---
|
|
|
|
## FASE C — Første salgsmodul
|
|
|
|
```
|
|
[ ] C1 — Pakk vauco-bootstrap som Terraform-modul
|
|
[ ] C2 — Pakk vauco-os som kundeflate
|
|
[ ] C3 — Opprett billing@vauco.no som Google Group
|
|
[ ] C4 — Første kunde: Medioteq
|
|
```
|
|
|
|
---
|
|
|
|
## 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 | 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 | Oppdatert |
|
|
| `07-rag-setup.sh` | RAG Engine corpus + fallback | Oppdatert |
|
|
| `08-memorybank-setup.sh` | Memory Bank + auto-install | Oppdatert |
|
|
| `09-cost-check.sh` | Kostnadsoversikt + Artifact Registry | Klar |
|
|
| `10-cost-guard.sh` | Cloud Function auto-teardown + GCS ML-telemetri sink | **Ny** |
|
|
| `11-billing-iam-hardening.sh` | Billing IAM: viewer-roller + fjern domain Creator | **Ny** |
|
|
| `scripts/smoke-test.sh` | 10-case røyktest: health/light/heavy/legacy/400/403/DAG/state/telemetri | **Ny** |
|
|
|
|
---
|
|
|
|
## 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-07 | Monitoring email flag-format | Teste i dev |
|
|
| OQ-08 | VPC connector e2-micro regional | Default us-central1 |
|
|
| OQ-09 | GCP billing: 0 viewers | **LØST** |
|
|
| OQ-10 | GCP billing: Creator på domenet | **LØST** |
|
|
| OQ-11 | Dialogflow CX Data Store norsk indeksering | Teste nb-NO i DX2 |
|
|
| OQ-12 | gemini-2.0-flash/gemini-2.0-flash-001 ikke tilgjengelig nye prosjekter | **LØST** — gemini-2.5-flash/pro + LOCATION=global |
|
|
| OQ-13 | ML-telemetri /tmp/ flyktig i Cloud Run | B5: GCS sink |
|
|
|
|
---
|
|
|
|
## BEKREFTET GA-API
|
|
|
|
| API | Status |
|
|
|-----|--------|
|
|
| `google.adk.Agent` | Bekreftet GA |
|
|
| `load_memory_tool` | Bekreftet |
|
|
| Cloud Build 2nd gen | Bekreftet GA |
|
|
| CMEK ikke for RAG Engine | Ikke støttet |
|
|
| Idempotente scripts | Trygt å kjøre flere ganger |
|
|
| `03-teardown.sh` hver kveld | Agent Runtimes koster 24/7 |
|
|
| Dialogflow CX Playbooks | GA |
|
|
| Dask `scheduler="threads"` i Cloud Run | Bekreftet |
|
|
| `gemini-2.5-flash` / `gemini-2.5-pro` via `LOCATION=global` | **Bekreftet 2026-05-26** |
|
|
|
|
---
|
|
|
|
## 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
|
|
|
|
**Prinsipp:** Lett modell i front (light), tung modell ved behov (heavy).
|
|
|
|
| Modell | Pris (per 1M) | Tilgang | Bruksområde |
|
|
|---|---|---|---|
|
|
| `gemini-2.5-flash` | $0.30 / $2.50 | global | light — alle enkle kall |
|
|
| `gemini-2.5-pro` | $1.25 / $10.00 | global | heavy — reasoning, compliance |
|
|
|
|
| Parameter | light | heavy |
|
|
|---|---|---|
|
|
| Orchestrator | `gemini-2.5-flash` | `gemini-2.5-pro` |
|
|
| Sub-agenter | `gemini-2.5-flash` | `gemini-2.5-pro` |
|
|
| Reasoning | `gemini-2.5-flash` | `gemini-2.5-flash` |
|
|
| Multi-agent | Nei | Ja |
|
|
| Budsjettgrense | $1/task | $3/task |
|
|
| `LOCATION` | `global` | `global` |
|
|
|
|
**Autoriserte brukere for heavy:** `opax`, `admin`
|
|
Legacy `A` / `A+` normaliseres automatisk til `light` / `heavy`.
|
|
|
|
---
|
|
|
|
## TERRAFORM-VEIKART (Fase C)
|
|
|
|
| Når | Hva |
|
|
|---|---|
|
|
| Fase C: Medioteq | `vauco-bootstrap` → Terraform-modul |
|
|
| Per kunde | `terraform apply -var="customer_id=X"` |
|
|
| Ressurser | Cloud Run, Cloud Build, IAP, budsjett, SA, Dialogflow CX, ML state store |
|
|
| State-backend | GCS (`TF_STATE_BUCKET`) |
|
|
| Fase D | Terraform Cloud |
|
|
|
|
---
|
|
|
|
*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | global (modell) / europe-west1 (infra)*
|