Updated the status and added LLM routing strategy details, including models, pricing, and configuration. Improved cost estimates and region availability information.
294 lines
11 KiB
Markdown
294 lines
11 KiB
Markdown
# VAUCO MASTERPLAN — Chris Christiansen
|
||
|
||
**Sist oppdatert: 2026-05-24 CEST**
|
||
**Status: Repo ferdig — GCP gjenstaar (A4–A9 neste) | LLM-strategi: Lett front / tung bakkant — se LLM-RUTINGSSTRATEGI**
|
||
|
||
---
|
||
|
||
## 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
|
||
# Alle andre verdier er ferdig-forhåndsutfylt
|
||
|
||
# Steg 3: Installer Python-avhengigheter
|
||
pip install google-adk google-cloud-aiplatform>=1.111.0 --quiet
|
||
|
||
# Steg 4: Kjør i rekkefølge (kilde .env først)
|
||
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
|
||
|
||
bash infrastructure/05-cloudrun-deploy.sh
|
||
bash infrastructure/04-observability-setup.sh
|
||
bash infrastructure/11-billing-iam-hardening.sh
|
||
|
||
# Om kvelden (OBLIGATORISK — unngå 24/7-fakturering):
|
||
bash infrastructure/03-teardown.sh
|
||
```
|
||
|
||
---
|
||
|
||
## FASE A — Ferdigstill kjernen (GCP oppe)
|
||
|
||
**Mål: Agenten din er live på Google Cloud | Tid: Ca. 2 timer**
|
||
|
||
```
|
||
[ ] A1 — cp .env.example .env og fyll inn verdier
|
||
PROJECT_ID=propane-will-491900-m5
|
||
REGION=us-central1
|
||
BILLING_ACCOUNT_ID=0171F6-057E6B-A260BA
|
||
ALERT_EMAIL=chris.christiansen@vauco.no
|
||
ORCHESTRATOR_MODEL=gemini-2.0-flash
|
||
SUBAGENT_MODEL=gemini-2.0-flash
|
||
[ ] A2 — bash infrastructure/00-authcheck.sh
|
||
[ ] A3 — bash infrastructure/01-setupenv.sh
|
||
Oppretter: budsjetter ($75 dev + $500 prod), Pub/Sub topic
|
||
[ ] A4 — bash infrastructure/07-rag-setup.sh
|
||
OQ-02: Script faller automatisk tilbake til us-east1 om nødvendig
|
||
ACTION: Kopier RAG_CORPUS_NAME til .env
|
||
[ ] A5 — bash infrastructure/08-memorybank-setup.sh
|
||
OQ-01: Python SDK only (auto-installert av script)
|
||
ACTION: Kopier MEMORY_ENGINE_NAME til .env
|
||
[ ] A6 — bash infrastructure/05-cloudrun-deploy.sh
|
||
[ ] A7 — bash infrastructure/04-observability-setup.sh
|
||
[ ] A8 — bash infrastructure/03-teardown.sh (kjør hver kveld)
|
||
[ ] A9 — bash infrastructure/11-billing-iam-hardening.sh
|
||
Gir billing.viewer til: chris.christiansen@vauco.no + jason.vauger@vauco.no
|
||
Løser GCP billing health-advarsel: "0 billing account viewers"
|
||
Fjerner billing.creator fra domenet (hvis ORG_DOMAIN er satt i .env)
|
||
```
|
||
|
||
---
|
||
|
||
## FASE B — Sikring og CI/CD
|
||
|
||
**Mål: Begrenset tilgang og aktiv CI/CD | Tid: 1 time**
|
||
|
||
```
|
||
[ ] B1 — bash infrastructure/02-deploy.sh (IAP på opax.vauco.no)
|
||
[ ] B2 — Opprett GitHub PAT og legg i Secret Manager:
|
||
gcloud secrets create github-token --data-file=<(echo -n "ghp_TOKEN")
|
||
Finn GITHUB_APP_INSTALLATION_ID:
|
||
https://github.com/settings/installations → Cloud Build-appen → ID i URL
|
||
Fyll inn GITHUB_APP_INSTALLATION_ID i .env
|
||
[ ] B3 — bash infrastructure/06-cicd-setup.sh
|
||
OQ-04: LØST — Cloud Build 2nd gen, ingen manuell OAuth i Console
|
||
[ ] B4 — Legg til webhook URL i Secret Manager:
|
||
gcloud secrets create webhook-url --data-file=<(echo -n "https://DIN-WEBHOOK-URL")
|
||
Se: infrastructure/notifications/webhook-setup.md
|
||
[ ] B5 — bash infrastructure/10-cost-guard.sh
|
||
Aktiverer auto-teardown Cloud Function + chat-varsling ved budsjett-overskridelse
|
||
```
|
||
|
||
---
|
||
|
||
## FASE C — Første salgsmodul
|
||
|
||
**Mål: Ny kunde onboardet på 30 minutter | Tid: Ukentlig arbeid**
|
||
|
||
```
|
||
[ ] C1 — Pakk `vauco-bootstrap` som Terraform-modul for kunde-onboarding
|
||
Ressurser per kunde: Cloud Run, Artifact Registry, Cloud Build 2nd gen,
|
||
IAP, budsjett-alert, Service Account
|
||
Terraform-variabler: customer_id, customer_project_id, customer_region
|
||
State-backend: GCS bucket (TF_STATE_BUCKET i .env)
|
||
[ ] C2 — Pakk `vauco-os` som kundeflate
|
||
[ ] C3 — Opprett billing@vauco.no som Google Group
|
||
Legg inn: chris.christiansen@vauco.no + jason.vauger@vauco.no
|
||
Oppdater .env: BILLING_VIEWER_EMAILS="billing@vauco.no"
|
||
Kjør på nytt: bash infrastructure/11-billing-iam-hardening.sh
|
||
[ ] C4 — Første kunde: Medioteq
|
||
Region: europe-north1, separat GCP-prosjekt
|
||
Kjør: terraform apply -var="customer_id=medioteq"
|
||
```
|
||
|
||
---
|
||
|
||
## INFRASTRUKTUR
|
||
|
||
| Script | Rolle | Status |
|
||
|--------|-------|--------|
|
||
| `00-authcheck.sh` | Verifiser gcloud-innlogging | Klar |
|
||
| `01-setupenv.sh` | Aktiver APIs, SA, IAM, budsjetter ($75+$500), Pub/Sub | Klar |
|
||
| `02-deploy.sh` | IAP-deploy på eget domene | Klar |
|
||
| `03-teardown.sh` | Riv ned Cloud Run | Klar |
|
||
| `04-observability-setup.sh` | 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 + webhook-alert | **Ny** |
|
||
| `11-billing-iam-hardening.sh` | Billing IAM: viewer-roller + fjern domain Creator | **Ny** |
|
||
|
||
---
|
||
|
||
## BEKREFTET GA-API
|
||
|
||
| API | Status |
|
||
|-----|--------|
|
||
| `google.adk.Agent` (ikke LlmAgent) | Bekreftet GA-API |
|
||
| `load_memory_tool` | Bekreftet fra adk-python samples |
|
||
| Cloud Build 2nd gen (`cloudbuildv2`) | Bekreftet GA — programmatisk GitHub-kobling |
|
||
| CMEK ikke for RAG Engine | Ikke støttet (OQ-03) |
|
||
| CI/CD `--no-traffic` | Manuell trafikkbytte — HITL |
|
||
| Idempotente scripts | Trygt å kjøre flere ganger |
|
||
| `03-teardown.sh` hver kveld | Agent Runtimes koster 24/7 |
|
||
|
||
---
|
||
|
||
## DRIFTSKOSTNADER
|
||
|
||
| Scenario | Kostnad/mnd |
|
||
|---|---|
|
||
| Bare deg (dev, teardown daglig) | ~$25-75 |
|
||
| 1 betalende kunde (lett prod) | ~$115-280 |
|
||
| Medioteq-type (klinisk, compliance) | ~$220-350 |
|
||
|
||
Breakeven: 1 kunde til $300-500/mnd dekker alle kostnader.
|
||
|
||
---
|
||
|
||
## KJENTE HULL
|
||
|
||
| ID | Hva | Workaround / 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 programmatisk connection |
|
||
| 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** — `11-billing-iam-hardening.sh` |
|
||
| OQ-10 | GCP billing: Creator på domenet | **LØST** — fjernes når ORG_DOMAIN er satt |
|
||
|
||
---
|
||
|
||
## TERRAFORM-VEIKART (Fase C)
|
||
|
||
Terraform introduseres **ikke** for nåværende infra — gcloud-scripts er tilstrekkelig.
|
||
Terraform blir relevant ved kunde-onboarding:
|
||
|
||
| Når | Hva |
|
||
|---|---|
|
||
| Fase C: Medioteq | `vauco-bootstrap` → Terraform-modul |
|
||
| Per kunde | `terraform apply -var="customer_id=X"` oppretter isolert GCP-miljø |
|
||
| Ressurser per modul | Cloud Run, Cloud Build 2nd gen connection, IAP, budsjett, SA |
|
||
| State-backend | GCS bucket (`TF_STATE_BUCKET`) — én bucket, én state-fil per kunde |
|
||
| Fase D | Terraform Cloud for sentralisert state og CI/CD på tvers av kunder |
|
||
|
||
Terraform-ressurser:
|
||
- `google_cloudbuildv2_connection` — programmatisk GitHub-kobling per kunde
|
||
- `google_cloudbuildv2_repository` — repo-link
|
||
- `google_cloudbuild_trigger` — push-til-main trigger
|
||
- `google_billing_budget` — budsjett-alert per kunde
|
||
- `google_cloud_run_v2_service` — Cloud Run-tjeneste
|
||
|
||
---
|
||
|
||
*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1*
|
||
|
||
---
|
||
|
||
## LLM-RUTINGSSTRATEGI
|
||
|
||
**Prinsipp: Lett modell i front, tung modell ved behov i bakkant — vurdert per modul og kost.**
|
||
|
||
| Modell | Pris input/output (per 1M) | EU-tilgang | Bruksomrade |
|
||
|---|---|---|---|
|
||
| `gemini-2.0-flash` | $0.10 / $0.40 | Ja (europe-west4) | Standard — alle enkle kall |
|
||
| `gemini-2.5-pro` | $1.25 / $10.00 | Ja (europe-west4) | Kompleks reasoning, compliance |
|
||
| `gemini-3.5-flash` | $1.50 / $9.00 | Nei (kun US/global) | Tung orkestrering, Fase C |
|
||
|
||
**Rutetabell per modul:**
|
||
|
||
| Modul / Agent | Standard modell | Eskalering til | Trigger |
|
||
|---|---|---|---|
|
||
| OPAX billing-agent | `gemini-2.0-flash` | — | Aldri — strukturert data |
|
||
| RAG retrieval + svar | `gemini-2.0-flash` | `gemini-2.5-pro` | Komplekse flertrinns-sporsmal |
|
||
| Memory Bank oppslag | `gemini-2.0-flash` | — | Aldri — faktahenting |
|
||
| TUI-cockpit (operator) | `gemini-2.0-flash` | `gemini-3.5-flash` | Bruker ber om dyp analyse |
|
||
| vauco-os (kundeflate) | `gemini-2.0-flash` | `gemini-2.5-pro` | Compliance/kliniske sporsmal |
|
||
| Fase C: Terraform-gen | `gemini-3.5-flash` | — | Standard for denne modulen |
|
||
| Fase C: Kunde-onboarding | `gemini-2.5-pro` | `gemini-3.5-flash` | Multi-step orkestrering |
|
||
|
||
**Konfigurasjon i `.env`:**
|
||
|
||
```env
|
||
ORCHESTRATOR_MODEL=gemini-2.0-flash
|
||
SUBAGENT_MODEL=gemini-2.0-flash
|
||
REASONING_MODEL=gemini-3.5-flash
|
||
```
|
||
|
||
**Regionsstatus (mai 2026):**
|
||
- `gemini-2.0-flash` + `gemini-2.5-pro` tilgjengelig `europe-west4` ok
|
||
- `gemini-3.5-flash` kun `us-central1` / global endpoint
|
||
- Navarende prosjektregion: `us-central1` — dekker alle modeller ok
|
||
|
||
**Kostnadsestimat med ruting:**
|
||
|
||
| Scenario | Uten ruting (3.5 Flash alt) | Med ruting | Besparelse |
|
||
|---|---|---|---|
|
||
| Dev daglig | ~$15-30/mnd | ~$1-5/mnd | ~85% |
|
||
| 1 kunde prod | ~$60-120/mnd | ~$8-20/mnd | ~85% |
|
||
|
||
---
|
||
|
||
*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1*
|
||
*GitHub: chrischristiansen-glitch/OSVauco*
|
||
*GitHub: chrischristiansen-glitch/OSVauco*
|