14 KiB
VAUCO MASTERPLAN — Chris Christiansen
Sist oppdatert: 2026-05-27 CEST Status: ✅ FASE A KOMPLETT | ✅ FASE B (B1-B5) KOMPLETT | ML-1 live | Røyktest 10/10 | Fase C 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
DNS / DOMENE-ARKITEKTUR
Arkitekturavgjørelse — 2026-05-26
| Domene | Type | Teknologi | Fase |
|---|---|---|---|
opax.vauco.no |
Intern cockpit (kun Chris) | CNAME → Cloud Run (gratis) | B1 nå |
kunde1.vauco.no / kundedomener |
Kunde-instanser | LB + IAP (Terraform) | Fase C |
Begrunnelse:
opax.vauco.noer et internt arbeidsverktøy for én bruker — Load Balancer ($18-20/mnd) er unødvendig overhead.- Kundeinstanser provisjoneres via
vauco-bootstrapTerraform-modul i Fase C. LB + IAP bakes inn i modulen én gang og kjøres automatisk per kunde medterraform apply -var="customer_id=X". - Terraform-modulen (Fase C) skal inkludere: Cloud Run, Cloud Build, IAP, LB, budsjett, SA, Dialogflow CX, ML state store.
CLOUD SHELL QUICK-START (kopi-klipp)
Bruk Cloud Shell: https://shell.cloud.google.com
# 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
SCOPE-AVKLARING (2026-05-27): Jason-v1 FAQ er et internt verktøy for operatøren (deg) i første fase — brukes som kunnskapsbase og salgsmodul-assistent i OPAX. Ingen ekstern publisering ennå. Voice-støtte planlagt i DX7.
[x] DX1 — Opprett Playbook-agent i Conversational Agents Console (2026-05-27)
Agent: OSVauco FAQ
Plattform: Conversational Agents CX Agent Studio
Region: us-central1
Prosjekt: propane-will-491900-m5 (Jason-v1)
[x] DX2 — Last opp FAQ-innhold som Data Store (2026-05-27)
- FAQ-fil: data/threadstone_faq.csv, 39 Q&A-par, ~9 KB
- GCS: gs://vauco-faq-store/threadstone_faq.csv
- Data Store: threadstone-faq-store (FAQ-type, us multi-region)
[x] DX3 — Konfigurer Playbook med norsk systemprompt (2026-05-27)
- Status: Norsk instrukssett satt i Default Generative Playbook
- Svar: Fungerer — kortfattet norsk FAQ-respons med billing@vauco.no
[ ] DX4 — Webhook mot OSVauco Cloud Run
- AVKLARING: Jason-v1 FAQ er en ren Data Store-agent (ingen runtime-kall til Cloud Run).
- Cloud Run-webhook håndteres i OSVauco API-laget (C2/C3), ikke i FAQ-agenten.
- Cloud Run URL (funnet): https://osvauco-agent-zjbqp3prqq-uc.a.run.app
- → Parkert til C2/C4 (Medioteq-integrasjon).
[ ] DX5 — Publiser via Dialogflow Messenger
Trigger: Første ekstern kunde (C4 Medioteq) eller salgsmodul klar
[ ] DX6 — Sett budsjett-alert for Dialogflow CX
[ ] DX7 — Voice-kanal for OSVauco FAQ
Fase 1: Web-mikrofon (WebRTC) for intern bruk (deg)
Fase 2: Telefoni-kanal (Dialogflow CX telephony gateway / PSTN)
Samme FAQ data store og playbook gjenbrukes — kun kanal endres
Trigger: Etter DX5 / første ekstern bruker
[ ] B6 — Eksporter Dialogflow CX agent til versjonskontroll
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 ✅ KOMPLETT
[x] B1 — Cloud Run deploy live (osvauco-agent-00065-z7t, us-central1)
IAP opax.vauco.no: CNAME-metode (se B1-IAP nedenfor)
[x] B2 — GitHub PAT i Secret Manager (github-pat)
[x] B3 — Cloud Build 2nd gen pipeline
Connection: osvauco-github-conn
Trigger: osvauco-agent-deploy (ID: 2fdd789f-a4dc-4f4a-8297-5e91674d2178)
Push til main → auto build + deploy
[x] B4 — Webhook (løst av 2nd gen GitHub App — ingen manuell webhook nødvendig)
[x] B5 — Cost guard + GCS ML-telemetri
Budget: osvauco-monthly-guard (500 NOK/mnd, 50/90/100% alerts)
Bucket: gs://osvauco-ml-telemetry (90-dagers lifecycle)
Sink: osvauco-ml-sink → Cloud Run logger → GCS
[x] B1-IAP — opax.vauco.no via CNAME → Cloud Run domain mapping (2026-05-27)
Status: ✅ KOMPLETT
[ ] B6 — Eksporter Dialogflow CX agent til versjonskontroll
FASE C — Første salgsmodul
[x] C1 — Pakk vauco-bootstrap som Terraform-modul ✅ KOMPLETT (2026-05-27)
- infrastructure/modules/vauco-bootstrap/: main.tf, variables.tf, outputs.tf, versions.tf
- Terraform validate: PASS
- Inkludert: Dialogflow CX (google_dialogflow_cx_agent), dialogflow_region=europe-west1
[x] C2 — Pakk vauco-os som kundeflate (2026-05-27) - KOMPLETT
Note: API-dokumentasjon (docs/CUSTOMER_API.md) opprettet.
[x] C3 — Opprett billing@vauco.no som Google Group (2026-05-27)
- Note: Billing Alerts (billing@vauco.no) eksisterte fra før – verifisert medlem/eierrskap.
[ ] C4 — Første kunde: Medioteq
- FASE 1 (Design/plan): PLAN KLAR – AVVENTER C4.1 + COST GODKJENT
- [ ] C4.1 – Velg endelig Medioteq-prosjekt-ID og billing_account_id
- project_id velges i eget HITL-møte (forslag i medioteq.tf-kommentarene)
- billing_account_id dokumenteres og lagres i .env/.secrets
- ingen terraform plan/apply før C4.1 er krysset av
- [ ] C4.2 — Auth-strategi sluttfase (HITL-gate per kundeprosjekt)
Fase 1: Google login på godkjente enheter
Sluttfase: Vurder BankID / endelig OAuth-provider per kunde
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 | LØST — B5: GCS sink |
| OQ-14 | LB vs CNAME for domene-routing | LØST — CNAME for opax (intern), LB i Terraform for kunder (Fase C) |
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 (LB), 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)