From 447c950a241b24f3a963713a8013e6f55288ba74 Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Mon, 29 Jun 2026 20:44:05 +0200 Subject: [PATCH] =?UTF-8?q?chore(handoff):=20oppdater=20plan=20=E2=80=94?= =?UTF-8?q?=20VM=20oppgradert,=20Ollama=20neste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/HANDOFF.md | 156 +++++++++++++++++++++++------------------------- 1 file changed, 74 insertions(+), 82 deletions(-) diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index 7ed6ed6..f49830a 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,8 +1,8 @@ # HANDOFF — Vauco OS -**Sist oppdatert:** 2026-06-28 23:44 CEST +**Sist oppdatert:** 2026-06-29 20:42 CEST **Skrevet av:** Perplexity (for Chris Christiansen) -**Status:** Fase C — Emma operativ, MCP 16 tools, IAP token utløpt (ADC 8t) +**Status:** Fase D — VM oppgradert, GitHub som primær, Ollama neste --- @@ -13,95 +13,93 @@ - **Region:** `us-central1` | **Service:** `osvauco-agent` | **Prosjekt:** `propane-will-491900-m5` - **ALDRI** `--audiences`-flag med `gcloud auth print-identity-token` — det er for service accounts, ikke user accounts - **IAP identity token:** hentes fra GCE metadata server, IKKE fra gcloud CLI -- **Smoke-test:** peker alltid på `/health` -- **Primær Git:** `http://34.59.131.162:3000/chris/OSVauco` — GitHub er mirror, IKKJE kilde +- **Primær Git:** `https://github.com/vauco-saas/OSVauco.git` — GitHub er nå kilde, Gitea er avviklet +- **git remote:** `origin` = GitHub. Gitea-remote er fjernet. - **Emma rapporterer til:** Chris Christiansen `chris.christiansen@vauco.no` — ingen andre kan gi GO - **emma_runner.py finnes IKKE** — riktig fil er `emma/emma_run.py` +- **Ollama:** IKKE installert ennå — neste oppgave --- ## 🎯 NESTE OPPGAVE (prioritert) -1. **IAP token utløpt** — kjør `gcloud auth application-default login` på VM for å fornye ADC - (eller bruk metadata server direkte — se auth-flyt under) -2. **sol-script bug** — `environment: line 7: : No such file or directory` — fiks PATH i sol.sh -3. **Cloud Build trigger ID** — finn i Cloud Console og legg inn i `scripts/trigger-cloudbuild.sh` -4. **Gitea post-receive hook** — se `scripts/gitea-post-receive.sh` -5. **emma-alias permanent** — legg til i `~/.bashrc` +### 1. Installer Ollama på osvauco-dev-vm +```bash +curl -fsSL https://ollama.com/install.sh | sh +sudo systemctl enable ollama +sudo sed -i 's|ExecStart=.*|ExecStart=/usr/local/bin/ollama serve|' /etc/systemd/system/ollama.service +sudo sed -i '/ExecStart/a Environment="OLLAMA_HOST=0.0.0.0"' /etc/systemd/system/ollama.service +sudo systemctl daemon-reload && sudo systemctl restart ollama +``` + +### 2. Pull modeller +```bash +ollama pull gemma3:4b # 3.3 GB — lett, rask +ollama pull qwen2.5:7b # 4.7 GB — sterkere +``` + +### 3. Test Ollama +```bash +curl http://localhost:11434/api/generate -d '{"model":"gemma3:4b","prompt":"hei","stream":false}' +``` + +### 4. Oppdater opax-mcp/server.py +- Pek på `http://localhost:11434` istedet for emma-gpu-vm (`34.13.238.133:11434`) +- Deploy til Cloud Run: `cd ~/OSVauco/opax-mcp && gcloud run deploy opax-mcp --source . --region us-central1 --project propane-will-491900-m5 --clear-base-image` + +### 5. Oppdater boot.sh — Ollama autostart-sjekk +- Legg til seksjon `[ OLLAMA ]` i `scripts/boot.sh` som sjekker at Ollama kjører + +### 6. Emma-gpu-vm — kun ved behov +- Legg til aliaser i `boot.sh`: + - `emma-start` — starter emma-gpu-vm + - `emma-stop` — stopper emma-gpu-vm --- -## ✅ Teststatus 2026-06-28 natt +## 🖥 Infrastruktur per 2026-06-29 -| Test | Beskrivelse | Status | Merknad | -|------|-------------|--------|---------| -| Mirror | Gitea → GitHub | ✅ | 7c87a8a synkronisert | -| Test 1 | MCP health | ✅ | `emma_tools: true`, `emma_tool_count: 12` | -| Test 2 | opax.vauco.no IAP | ❌ | `Invalid IAP credentials: Unable to parse JWT` — ADC-token trolig utløpt (8t) | -| Test 3 | Emma oppstart | ✅ | `llama3.2`, 38 mønstre, 11 sesjoner, `avg_efficiency: 1.3` | -| Test 4 | boot.sh | ✅ | Aliaser settes av `~/.bashrc` ved ny terminal — ikke via `source` i TUI | -| Test 5 | MCP tools | ✅ | 16 tools total: 4 infra + 12 emma | +| Ressurs | Spec | Status | Kostnad/mnd | +|---------|------|--------|-------------| +| `osvauco-dev-vm` | e2-standard-4, 16GB RAM, 50GB SSD, us-central1-b | ✅ Kjører | ~NOK 550 | +| `emma-gpu-vm` | GPU, europe-west4-a | 💤 Stoppet | ~NOK 30 (kun disk) | +| Cloud Run `opax-mcp` | MCP-server, us-central1 | ✅ Kjører | ~NOK 50 | +| Cloud Run `osvauco-agent` | Hovedagent, us-central1 | ✅ Kjører | inkl. over | +| Load Balancer + DNS | opax.vauco.no, 34.98.77.173 | ✅ Kjører | ~NOK 150 | +| **TOTAL** | | | **~NOK 780/mnd** | -**MCP tools (Test 5):** -- Infra: `push_static`, `get_build_status`, `deploy_service`, `get_logs` -- Emma: `gh_list_issues`, `gh_create_issue`, `gh_comment_issue`, `gh_close_issue`, `gh_push_file`, `firestore_write`, `firestore_read`, `secret_get`, `opax_get_customer`, `opax_update_customer`, `opax_create_ticket`, `opax_list_tickets` +**Tidligere kostnad (emma alltid på):** NOK 6,000+/mnd --- -## ✅ Fullført i dag (2026-06-28) - -| Oppgave | Commit | Status | -|---------|--------|--------| -| `emma/emma_seed.py` — LEARNINGS 001-016 + boot-minne | `6726da23` | ✅ | -| `emma/emma_guardrails.py` — 5-nivå risikoscoring | `6726da23` | ✅ | -| `emma/emma_opax.py` — OPAX-kobling med identity token | `6726da23` | ✅ | -| `emma/emma_identity.py` — identitet injisert i alle LLM-prompts | `31a405ad` | ✅ | -| `emma/emma_gitea.py` — direkte Gitea-tilgang | `31a405ad` | ✅ | -| `emma/setup.sh` — VM-bootstrap én kommando | `47ade3d5` | ✅ | -| `.gemini/GEMINI.md` — NO-SEARCH-blokk øverst, deduplisert | `87b2dced` | ✅ | -| `scripts/mirror-to-github.sh` — Gitea→GitHub mirror | `7c87a8a` | ✅ | -| `scripts/emma.sh` — peker nå på `emma_run.py` | `f098b84` | ✅ (GitHub-only, sync mangler til Gitea) | - ---- - -## ✅ Fullført tidligere (2026-06-18) — IAP Auth fix for opax-mcp +## ✅ Fullført i dag (2026-06-29) | Oppgave | Status | |---------|--------| -| Identifisert rotårsak: feil IAP audience i identity token-kall | ✅ | -| Lagt til `roles/iap.httpsResourceAccessor` for `jason-vauger` SA | ✅ | -| Oppdatert `opax-mcp/server.py` — ny env var `OPAX_IAP_CLIENT_ID` | ✅ | -| Revisjon `opax-mcp-00020` aktiv med 100% trafikk | ✅ | - ---- - -## 🖥 Systemstatus - -| Komponent | URL / Referanse | Status | -|-----------|-----------------|--------| -| osvauco-agent (Cloud Run) | https://osvauco-agent-zjbgp3prqg-uc.a.run.app | ✅ Live | -| opax-mcp (Cloud Run) | https://opax-mcp-357036551735.us-central1.run.app | ✅ Live (rev 00020) | -| opax.vauco.no IAP | https://opax.vauco.no | ⚠️ IAP-token utløpt — forny ADC | -| Jason (Vertex AI Agent) | Agent Engine, us-central1 | ✅ Live | -| Gitea (self-hosted) | http://34.59.131.162:3000 | ✅ Live (v1.22.6) | -| Emma på VM | `~/OSVauco/emma/` | ✅ morphic.db, 38 mønstre, 11 sesjoner | -| MCP server lokal | http://localhost:8080 | ✅ 16 tools | -| emma-alias | ~/.bashrc | ⏳ legg til permanent | -| GitHub (mirror) | https://github.com/vauco-saas/OSVauco | ✅ mirror aktiv | +| `git remote origin` endret fra Gitea (emma-gpu-vm) til GitHub | ✅ | +| `github`-remote fjernet (duplikat) | ✅ | +| `git pull origin main` fungerer igjen | ✅ | +| `boot.sh` kjører komplett uten å henge | ✅ | +| `osvauco-dev-vm` oppgradert: e2-medium → e2-standard-4 (16GB RAM) | ✅ | +| Disk utvidet: 20GB → 50GB | ✅ | +| `emma-gpu-vm` stoppet (spare kostnad) | ✅ | +| Gitea avviklet som primær kilde | ✅ | --- ## 🔑 Credentials -- **Gitea API-token:** Secret Manager → `gitea-api-token` +- **GitHub PAT:** Secret Manager → `GITHUB_PAT` (oppdatert 2026-06-25) - **MCP-Secret:** Secret Manager → `mcp-server-key` - **Prosjekt:** `propane-will-491900-m5` -- **IAP OAuth Client ID (opax backend):** `357036551735-kq8nt7ld38hfqlcfb3n52ef7tala4meo.apps.googleusercontent.com` +- **IAP OAuth Client ID:** `357036551735-kq8nt7ld38hfqlcfb3n52ef7tala4meo.apps.googleusercontent.com` - **VM compute SA:** `357036551735-compute@developer.gserviceaccount.com` +- **Ollama (når installert):** `http://localhost:11434` +- **Emma-gpu-vm IP:** `34.13.238.133` (kun når startet) --- -## 🏗 Arkitektur +## 🏗 Arkitektur (nå) ``` Bruker @@ -110,25 +108,18 @@ Bruker └─► opax-mcp (Cloud Run, 16 tools) └─► [IAP] opax.vauco.no -osvauco-dev-vm - └─► Gemini CLI (denne agenten) - └─► Emma (lokal MDP/MCoT-agent) - ├─► Morfisk minne (SQLite, 38 mønstre) +osvauco-dev-vm (e2-standard-4, 16GB) + └─► Gemini CLI / Claude CLI (opax/opax2) + └─► Ollama (localhost:11434) ← INSTALLERES NESTE + ├─► gemma3:4b (lett) + └─► qwen2.5:7b (sterk) + └─► Emma (lokal agent) + ├─► Morfisk minne (SQLite) ├─► Guardrails (5-nivå) - ├─► OPAX-klient (identity token) - └─► Gitea-klient -``` + └─► OPAX-klient -**Auth-flyt VM → opax.vauco.no (IAP):** -``` -VM (Gemini CLI eller Emma) - → curl metadata.google.internal → identity token (audience = IAP_CLIENT_ID) - → curl https://opax.vauco.no -H "Authorization: Bearer $TOKEN" - → IAP validerer token mot roles/iap.httpsResourceAccessor - → HTTP 200 (eller 401 hvis SA mangler rollen) - -NOTAT: ADC-token via gcloud auth login utløper etter 8 timer. - Bruk alltid metadata server på GCE VM for identity tokens. +emma-gpu-vm (stoppet — start ved behov) + └─► gemma3:27b (tung modell for kunder) ``` --- @@ -137,8 +128,9 @@ NOTAT: ADC-token via gcloud auth login utløper etter 8 timer. | Dok | Innhold | |-----|---------| -| `docs/LEARNINGS.md` | Append-only lærdomslogg — LEARNING-001 til 016 | +| `docs/LEARNINGS.md` | Append-only lærdomslogg | | `docs/AGENT_RULEBOOK.md` | Boot-protokoll, deploy-regler | | `.gemini/GEMINI.md` | Instrukser til Gemini CLI på VM | -| `emma/setup.sh` | VM-bootstrap — klon, venv, install, seed | -| `docs/DNS-OG-INFRASTRUKTUR.md` | DNS-kart, IAP-routing, forwarding rules | +| `scripts/boot.sh` | Session-starter, aliaser, TUI-valg | +| `scripts/vm-teardown.sh` | Cron 03:00 CEST — stopper dev-vm | +| `docs/DNS-OG-INFRASTRUKTUR.md` | DNS-kart, IAP-routing |