# HANDOFF-LOKAL-LLM-GITEA-MCP.md # EGEN HANDOFF – UFRAVIKELIG STYRINGSDOKUMENT # GJELDER FRA NÅ OG FREM TIL 100 % FERDIGSTILLELSE ## 0. STATUS OG KOMMANDO Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal LLM-fabrikk + OPAX-MCP + Gitea stabilisering + blueprinting til Gitea-VM". --- ## FREMDRIFT – OPPDATERT 2026-07-23 22:14 CEST ### ✅ FASE 0–5 — FERDIG ### ✅ FASE 6 – CPU-optimalisering — FERDIG ### ✅ FASE 6-TILLEGG – Boot-warming — FERDIG ### ✅ DNS – NS-bytte utført — FERDIG 2026-07-21 23:44 CEST ### ✅ OPAX-MCP – GITEA_URL permanent + deploy — FERDIG 2026-07-21 23:53 CEST ### ✅ SMOKE-TEST – Alle 37 tools — FERDIG 2026-07-22 00:25 CEST ### ✅ FASE 6.5 – VM-oppgradering + modellarkitektur — VERIFISERT 2026-07-22 ### ✅ DEV-SNAP UAVHENGIGHET – Verifisert 2026-07-22 19:30 CEST ### ✅ OSVauco arbeidskopi klonet til Gitea-VM — FERDIG 2026-07-22 19:25 CEST ### 🟡 FASE 7 – 14B-validering utført, arkitektur justeres — PÅGÅR ### ⏳ git.vauco.no HTTPS — PÅBEGYNT, blokkert av firewall ### ⏳ GPG-SIGNERING – Commits verified — PÅGÅR ### ⏳ FASE 8 – Backup / snapshot-strategi — PLANLAGT --- ## DEV-SNAP UAVHENGIGHET – VERIFISERT 2026-07-22 Alle 6 tester grønne: | Test | Status | Bevis | |------|--------|-------| | A — Gitea API | ✅ | list_commits svarer fra localhost:3000 | | B — Repo-innhold | ✅ | Klon hentet 3545 objekter direkte | | C — OPAX health | ✅ | opax_mcp_status: live | | D — MCP tools/list | ✅ | 37 verktøy live | | E — Git-sync | ✅ | nothing to commit, working tree clean | | F — Ollama | ✅ | 5 modeller bekreftet | **Viktig:** Bruk alltid `localhost:3000` (ikke `34.67.252.59:3000`) når du jobber fra Gitea-VM selv. GCP NAT-er ikke loopback-trafikk. --- ## git.vauco.no – STATUS OG NESTE STEG ### Hva er gjort - ✅ DNS: `git.vauco.no` A-record → `34.67.252.59` satt i Google Cloud DNS - ✅ nginx installert og kjører på Gitea-VM (port 80 lytter) - ✅ nginx konfig for `git.vauco.no` → proxy til `localhost:3000` opprettet - ✅ Firewall-regel `allow-http-https` opprettet i `propane-will-491900-m5` - ❌ certbot feiler — port 80 ikke nåbar eksternt (timeout) ### Rotårsak Firewall-regelen `allow-http-https` (prioritet 1000) blokkeres sannsynligvis av en annen regel med høyere prioritet. VM-taggen er `gitea-server`. ### Neste steg når du er hjemme **Steg 1 — GCP Console eller Cloud Shell:** Finn blokkerende regel: ```bash gcloud compute firewall-rules list \ --project=propane-will-491900-m5 \ --format="table(name,direction,priority,allowed,denied,targetTags,disabled)" ``` **Steg 2 — Lag ny regel med prioritet 500:** ```bash gcloud compute firewall-rules create allow-gitea-web \ --project=propane-will-491900-m5 \ --allow tcp:80,tcp:443 \ --direction INGRESS \ --priority=500 \ --target-tags=gitea-server \ --network=default \ --source-ranges=0.0.0.0/0 ``` **Steg 3 — Gitea-VM: kjør certbot på nytt:** ```bash sudo certbot --nginx -d git.vauco.no \ --non-interactive --agree-tos \ -m chris.christiansen@vauco.no ``` **Steg 4 — Verifiser:** ```bash curl -s https://git.vauco.no/api/v1/version ``` **Steg 5 — Google OAuth2 i Gitea:** - console.cloud.google.com → Credentials → OAuth 2.0 Client ID - Redirect URI: `https://git.vauco.no/user/oauth2/google/callback` - Legg til i Gitea: Site Administration → Authentication Sources → Add → OAuth2 → Google --- ## SIKKERHET – ÅPNE PUNKTER ⚠️ GITEA_TOKEN eksponert i chat: `278c0b41df7dc4e8c99d6c479a8603105e56a0a9` - Roter token i Gitea (localhost:3000 → Settings → Applications) - Oppdater GITEA_TOKEN i Cloud Run miljøvariabler etter rotasjon --- ## FASE 6.5 — OPPDATERT LOKAL LLM-STACK (2026-07-22) ### Bekreftet drift - `gitea-cpu-vm` er oppe i `us-central1-b` - VM kjører nå på `e2-highmem-4` (4 vCPU / 32 GB RAM) - Statisk IP beholdt: `34.170.51.84` - Gitea svarer på port `3000` - Ollama svarer på port `11434` ### Faktisk modeller lokalt per 2026-07-23 - `gemma3:4b` - `qwen2.5:3b` - `qwen2.5:7b` - `qwen2.5-coder:7b` - `qwen2.5-coder:14b` ### Revidert anbefalt modellarkitektur - **Frontmodell:** `gemma3:4b` — raske svar, enkel resonnering - **Lett tool-modell:** `qwen2.5:3b` — tool calling, responsivt - **Standard mellomlag:** `qwen2.5:7b` — kvalitet + brukbar latency - **Kode-modell:** `qwen2.5-coder:7b` — standard for repo/kodearbeid - **Backup coder:** `qwen2.5-coder:14b` — batch/asynkrone kodeoppgaver --- ## OPAX-MCP KONFIGURASJON – LÅST | Variabel | Verdi | |---|---| | `GITEA_URL` | `http://34.67.252.59:3000` | | `OLLAMA_BASE_URL` | `http://34.67.252.59:11434` | | `EMMA_MODEL` | `gemma3:4b` | | `EMMA_FAST_MODEL` | `gemma3:4b` | | `EMMA_LIGHT_MODEL` | `qwen2.5:3b` | | `OSVAUCO_AGENT_URL` | `https://osvauco-agent-357036551735.us-central1.run.app` | Deploy verifisert: `get_connector_status` → `live`, `gitea: online`, `tool_count: 37` --- ## DNS – FULLFØRT 2026-07-21 | Record | Type | Verdi | |---|---|---| | `vauco.no.` | A | `34.98.77.173` (LB) | | `www.vauco.no.` | A | `34.98.77.173` (LB) | | `opax.vauco.no.` | A | `34.98.77.173` (LB) | | `git.vauco.no.` | A | `34.67.252.59` | | MX / SPF / DKIM / DMARC | TXT/MX | Google Workspace komplett | --- ## ÅPNE PUNKTER 1. ⚠️ Roter GITEA_TOKEN (eksponert i chat) 2. `git.vauco.no` HTTPS — firewall prioritet 500 + certbot 3. Google OAuth2 innlogging i Gitea 4. GPG-signering — få commits verified 5. Test `qwen2.5-coder:7b` på konkret kode-/repo-oppgave 6. Mål RAM/swap under modell-last 7. Emma derivat-dokument (tilsvarende GEMINI.md) 8. Fase 8: Snapshot-policy aktiveres 9. opax.vauco.no domain mapping (Cloud Run → custom domain) ## FASTE SANNHETER - Gitea er source of truth - Lokale modeller er hovedretning - Gitea-VM (`34.67.252.59`) er permanent målmaskin — alltid-på - Bruk `localhost:3000` fra Gitea-VM, aldri ekstern IP mot seg selv - Dev-snap er ikke lenger nødvendig for kjerneflyten - CPU er primær flaskehals for tyngre lokale modeller ## DEFINITION OF DONE - ✅ Lokale modeller lever og kan brukes lokalt - ✅ OPAX-MCP bruker lokal modellbackend korrekt - ✅ Gitea read/write tools er grønne - ✅ GCP/Workspace-kjernen er fortsatt grønn - ✅ Smoke-test alle 37 tools — FERDIG - ✅ VM oppgradert til e2-highmem-4 (32 GB RAM) — FERDIG - ✅ Dev-snap uavhengighet verifisert — FERDIG - ✅ OSVauco arbeidskopi på Gitea-VM — FERDIG - ⏳ `git.vauco.no` live med HTTPS — neste - ⏳ Google OAuth2 innlogging Gitea — etter HTTPS - ⏳ GITEA_TOKEN rotert — kritisk - ⏳ GPG-signering verified — pågår - ⏳ Fase 7: lokal hjerne verifisert — pågår - ⏳ Fase 8: daglig snapshot-backup — planlagt ## OPPDATERINGSLOGG | Dato | Handling | |---|---| | 2026-07-21 | FASE 4–6: CPU-optimalisering, boot-warming fullført | | 2026-07-21 23:44 | DNS: NS-bytte utført hos Proisp | | 2026-07-21 23:53 | OPAX-MCP: GITEA_URL + OLLAMA_BASE_URL → 34.67.252.59, deployed | | 2026-07-22 00:25 | Smoke-test fullført — alle kategorier grønne | | 2026-07-22 03:55 | Handoff oppdatert etter 14B-validering | | 2026-07-22 19:25 | OSVauco klonet til Gitea-VM via localhost:3000 | | 2026-07-22 19:30 | Dev-snap uavhengighet bekreftet — alle 6 tester grønne | | 2026-07-22 19:45 | nginx installert, git.vauco.no konfig opprettet, certbot blokkert av firewall | | 2026-07-23 22:14 | Handoff oppdatert med full status, neste steg og sikkerhetsnotis om token |