# HANDOFF — Vauco OS **Sist oppdatert:** 2026-06-28 11:40 CEST **Skrevet av:** Perplexity (Orchestrator) **Status:** Fase C — Emma lokal agent operativ. Gitea er primær Git. GitHub fasa ut. --- ## ⚠️ KRITISKE REGLER — les alltid først - **Hovedapp:** `main.py` i rot — IKKJE `agents/core-logic/app.py` - **Dockerfile:** `agents/core-logic/Dockerfile` — WORKDIR `/app`, CMD uvicorn main:app - **Region:** `us-central1` | **Service:** `osvauco-agent` | **Prosjekt:** `propane-will-491900-m5` - **Test via proxy:** `gcloud run services proxy osvauco-agent --region us-central1 --project propane-will-491900-m5 --port 8181` - **ALDRI** `--audiences`-flag i smoke-tests - **Smoke-test:** peker på `/health` - **Curl mot prod:** alltid identity token — `TOKEN=$(gcloud auth print-identity-token)` - **Ingen tredjepartsverktøy:** Cursor, Copilot og lignende skal IKKE brukes. Alt eies og kjøres i eget GCP/Gitea. - **Primær Git:** `http://34.59.131.162:3000/chris/OSVauco` — GitHub er IKKJE lenger i bruk. - **Git remote på VM:** `http://chris:@34.59.131.162:3000/chris/OSVauco.git` - **Emma rapporterer til:** Chris Christiansen `chris.christiansen@vauco.no` — ingen andre kan gi GO --- ## ✅ Fullført i dag (2026-06-28) — Emma bootstrap + OPAX-kobling | Oppgave | Commit | Status | |---------|--------|--------| | `emma/emma_seed.py` — LEARNINGS 001-016 + 7 ekstra mønstre som boot-minne | `6726da23` | ✅ | | `emma/emma_guardrails.py` — 5-nivå risikoscoring (SAFE/LOW/MEDIUM/HIGH/CRITICAL) | `6726da23` | ✅ | | `emma/emma_opax.py` — OPAX-kobling med identity token og retry | `6726da23` | ✅ | | `emma/emma_identity.py` — Emma vet hvem hun er og at hun rapporterer til Chris | `31a405ad` | ✅ | | `emma/emma_gitea.py` — direkte tilgang til alle Gitea-repoer (les + skriv) | `31a405ad` | ✅ | | `emma/emma_backend_ollama.py` — identitet injisert i alle LLM system-prompts | `31a405ad` | ✅ | | `emma/setup.sh` — VM-bootstrap: klon Gitea, venv, seed (én kommando) | `47ade3d5` | ✅ | | `.gemini/GEMINI.md` — oppdatert med Emma, Gitea, guardrails, nye hard rules | `d2b0c6ac` | ✅ | --- ## ✅ Fullført tidligere (2026-06-18) — IAP Auth fix for opax-mcp | 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` som audience | ✅ | | Rettet env var navn til `OPAX_IAP_CLIENT_ID` i Cloud Run — revisjon 00020 deployed | ✅ | | Revisjon `opax-mcp-00020-w6j` aktiv med 100% trafikk | ✅ | --- ## ✅ Fullført tidligere (2026-06-15) | Oppgave | Status | |---------|--------| | `agents/tools/opax_mcp_client.py` — REST-klient alle 25 tools | ✅ | | Jason deployet til Vertex AI Agent Engine | ✅ | | Jason svarer på norsk og kallar tools automatisk | ✅ | | Gitea installert på VM (`34.59.131.162:3000`) som systemd-teneste | ✅ | | **2867 commits pusha frå GitHub → Gitea** | ✅ | | GitHub fasa ut — Gitea er no primær | ✅ | --- ## 🖥 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 frontend (IAP LB) | https://opax.vauco.no | ✅ Live | | Jason (Vertex AI Agent) | Agent Engine, us-central1 | ✅ Live | | Gitea (self-hosted) | http://34.59.131.162:3000 | ✅ Live | | Emma (lokal agent) | `~/OSVauco/emma/` på osvauco-dev-vm | ⚠️ Ikke bootstrappt ennå | | GitHub (legacy) | https://github.com/vauco-saas/OSVauco | ⚠️ Fasa ut | --- ## 🔑 Credentials - **Gitea login:** `chris` / se Secret Manager - **Gitea API-token:** Secret Manager → `gitea-api-token` - **MCP-Secret:** Secret Manager → `mcp-secret` - **Prosjekt:** `propane-will-491900-m5` - **IAP OAuth Client ID (opax backend):** `357036551735-kq8nt71d38hfqlcfb3n52ef7ala4meo.apps.googleusercontent.com` - **Emma venv:** `~/emma-venv` (opprettes av setup.sh) --- ## 🎯 NESTE OPPGAVE **Bootstrap Emma på osvauco-dev-vm og verifiser ende-til-ende.** Kjør fra VM: ```bash # Steg 1: Bootstrap Emma (én kommando) bash <(curl -s "http://chris:$(gcloud secrets versions access latest \ --secret=gitea-api-token --project=propane-will-491900-m5 \ )@34.59.131.162:3000/chris/OSVauco/raw/branch/main/emma/setup.sh") # Steg 2: Aktiver aliaser permanent echo 'source ~/.emma_env' >> ~/.bashrc && source ~/.emma_env # Steg 3: Verifiser at seed er utført ls -lh ~/OSVauco/emma/data/morphic.db tail -3 ~/OSVauco/emma/emma_flynn_log.jsonl # Steg 4: Verifiser Gitea-tilkobling fra Emma cd ~/OSVauco/emma && ~/emma-venv/bin/python -c " from emma_gitea import GiteaClient g = GiteaClient() print(g.verify_boot()) " # Steg 5: Verifiser OPAX-tilkobling fra Emma cd ~/OSVauco/emma && ~/emma-venv/bin/python -c " from emma_opax import OpaxClient c = OpaxClient() print(c.health()) " # Steg 6: Start Emma CLI emma ``` Forventet etter bootstrap: - `morphic.db` eksisterer med > 20 mønstre - Gitea-tilkobling returnerer `status: ok` med repo-liste - OPAX health returnerer `status: ok` eller `unreachable` (akseptabelt fra dev-vm uten metadata-server) --- ## 🔨 Gjenstår (prioritert) 1. **Bootstrap Emma på VM** — kjør setup.sh (se NESTE OPPGAVE over) 2. **Verifiser IAP auth end-to-end** — bekreft `HTTP/2 200` fra opax.vauco.no 3. **Synk Gitea ←→ GitHub** — push emma/-modulene til Gitea (de er for øyeblikket kun på GitHub) 4. DNS/TLS for Gitea (`git.vauco.no`) 5. GPU VM-arbeid (planlagt) --- ## 🚀 Neste sesjon — start her ### 0. Boot-sjekk (kjør alltid først) ```bash # 1. Hvem er du og hvilken branch er canonical? git -C ~/OSVauco remote -v git -C ~/OSVauco log --oneline -5 # 2. GCP auth gcloud auth list gcloud config get-value project # 3. Emma-status ls -la ~/OSVauco/emma/data/morphic.db ~/OSVauco/emma/emma_flynn_log.jsonl 2>/dev/null || echo 'Emma ikke bootstrappt' # 4. Gitea oppe? curl -s http://34.59.131.162:3000/api/v1/version | python3 -m json.tool ``` ### 1. IAP auth-verifisering (fortsatt åpen) ```bash TOKEN=$(curl -s -H "Metadata-Flavor: Google" \ "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=357036551735-kq8nt71d38hfqlcfb3n52ef7ala4meo.apps.googleusercontent.com&format=full") curl -si https://opax.vauco.no/opax/build-status \ -H "Authorization: Bearer $TOKEN" | head -5 # Forventet: HTTP/2 200 ``` ### 2. Synk emma/ til Gitea ```bash # emma/-modulene ble pushet til GitHub — sjekk om Gitea er oppdatert git -C ~/OSVauco log --oneline -3 # skal vise d2b0c6ac eller nyere # Hvis ikke: pull fra GitHub og push til Gitea git -C ~/OSVauco remote add github https://github.com/vauco-saas/OSVauco.git 2>/dev/null || true git -C ~/OSVauco fetch github main git -C ~/OSVauco merge github/main --ff-only git -C ~/OSVauco push origin main ``` --- ## 🏗 Arkitektur ``` Bruker └─► Jason (Vertex AI Agent Engine, Gemini 2.5 Pro) └─► osvauco-agent (Cloud Run) └─► opax-mcp (Cloud Run) └─► [IAP] opax.vauco.no └─► OPAX backend (GCP) osvauco-dev-vm └─► Emma (lokal MDP/MCoT-agent) ├─► Morfisk minne (SQLite, ~/OSVauco/emma/data/morphic.db) ├─► Guardrails (5-nivå, blokkerer HIGH/CRITICAL uten GO) ├─► OPAX-klient (identity token → opax.vauco.no) └─► Gitea-klient (alle repoer på 34.59.131.162:3000) ``` **Auth-flyt for opax-mcp → opax.vauco.no:** ``` opax-mcp container → GCE Metadata Service → identity token med audience = IAP_CLIENT_ID → Authorization: Bearer → IAP validerer token → Request videresendt til OPAX backend ``` **Emma-mønster:** ``` Input → Guardrails → MDP → Morphic Recall → MCoT → OPAX/Gitea → Flynn-tracker → Output ``` --- ## 📚 Relevante docs (les ved behov) | Dok | Innhold | |-----|---------| | `docs/LEARNINGS.md` | Append-only lærdomslogg — LEARNING-001 til 016 | | `docs/AGENT_RULEBOOK.md` | Boot-protokoll, korreksjonsregler, friction-regler | | `docs/MASTERPLAN.md` | Fase-oversikt og mål | | `docs/ROADMAP.md` | Prioritert oppgaveliste | | `docs/ARCHITECTURE.md` | Systemarkitektur | | `docs/DNS-OG-INFRASTRUKTUR.md` | DNS-kart, IAP-routing, forwarding rules | | `.gemini/GEMINI.md` | Instrukser til Gemini på VM (dette er deg) | | `emma/README.md` | Emma-dokumentasjon — filer, bootstrap, guardrails | | `emma/emma_identity.py` | Emmas identitet og ansettelsesforhold | | `emma/emma_guardrails.py` | Guardrails-logikk — risikonivåer og regler | | `emma/emma_gitea.py` | Gitea-klient — les/skriv repoer | | `emma/emma_seed.py` | Boot-minne frø — kjøres én gang | | `emma/setup.sh` | VM-bootstrap — klon, venv, install, seed |