8.8 KiB
8.8 KiB
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.pyi rot — IKKJEagents/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:<TOKEN>@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:
# 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.dbeksisterer med > 20 mønstre- Gitea-tilkobling returnerer
status: okmed repo-liste - OPAX health returnerer
status: okellerunreachable(akseptabelt fra dev-vm uten metadata-server)
🔨 Gjenstår (prioritert)
- Bootstrap Emma på VM — kjør setup.sh (se NESTE OPPGAVE over)
- Verifiser IAP auth end-to-end — bekreft
HTTP/2 200fra opax.vauco.no - Synk Gitea ←→ GitHub — push emma/-modulene til Gitea (de er for øyeblikket kun på GitHub)
- DNS/TLS for Gitea (
git.vauco.no) - GPU VM-arbeid (planlagt)
🚀 Neste sesjon — start her
0. Boot-sjekk (kjør alltid først)
# 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)
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
# 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 <token>
→ 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 |