From 56a8fab25686670d763d2f6db148ee63fec91e3b Mon Sep 17 00:00:00 2001 From: chris Date: Sat, 25 Jul 2026 06:43:52 +0000 Subject: [PATCH] chore: update docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md via opax-mcp --- docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md | 202 ++++++++++------------------ 1 file changed, 69 insertions(+), 133 deletions(-) diff --git a/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md b/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md index 1f0778b..f483663 100644 --- a/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md +++ b/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md @@ -7,7 +7,7 @@ Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal L --- -## FREMDRIFT – OPPDATERT 2026-07-25 08:15 CEST +## FREMDRIFT – OPPDATERT 2026-07-25 08:42 CEST ### ✅ FASE 0–5 — FERDIG ### ✅ FASE 6 – CPU-optimalisering — FERDIG @@ -23,17 +23,21 @@ Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal L ### ✅ Google OAuth2 innlogging Gitea — FERDIG 2026-07-25 ### ✅ SIKKERHETSHERDING – Uautoriserte brukere ryddet — FERDIG 2026-07-25 ### ✅ VM Access Scopes – cloud-platform satt — FERDIG 2026-07-25 +### ✅ GPG-SIGNERING – Commits verified — FERDIG 2026-07-25 08:42 CEST +### ✅ gitea-admin-password – Lagret i Secret Manager — FERDIG 2026-07-25 ### 🟡 FASE 7 – 14B-validering utført, arkitektur justeres — PÅGÅR -### ⏳ GPG-SIGNERING – Commits verified — PÅGÅR +### ⏳ automation-bruker i Gitea — NESTE ### ⏳ FASE 8 – Backup / snapshot-strategi — PLANLAGT --- ## SIKKERHETSHERDING (2026-07-25) -- ✅ Offentlig brukerregistrering i Gitea deaktivert (`DISABLE_REGISTRATION = true`, `ALLOW_ONLY_EXTERNAL_REGISTRATION = true`, `SHOW_REGISTRATION_BUTTON = false`) -- ✅ To uautoriserte brukere (`dev433f2c`, `dev1ba0ac`) deaktivert og deres tokens slettet +- ✅ Offentlig brukerregistrering i Gitea deaktivert +- ✅ To uautoriserte brukere (`dev433f2c`, `dev1ba0ac`) deaktivert og tokens slettet - ✅ Eksponert GITEA_TOKEN rotert — nytt token i Secret Manager, opax-mcp redeployet -- ✅ VM Access Scopes oppdatert til `cloud-platform` (VM stoppet/startet 2026-07-25) +- ✅ VM Access Scopes oppdatert til `cloud-platform` +- ✅ GPG-nøkkel (46209B07B3352AE9) lagt til i Gitea, git konfigurert for auto-signering +- ✅ gitea-admin-password lagret i Secret Manager (secret: `gitea-admin-password`) --- @@ -50,107 +54,49 @@ Alle 6 tester grønne: | 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. +**Viktig:** Bruk alltid `localhost:3000` fra Gitea-VM, aldri ekstern IP mot seg selv. --- ## git.vauco.no – FULLFØRT 2026-07-25 - -- ✅ DNS: `git.vauco.no` A-record → `34.67.252.59` -- ✅ nginx installert og konfigurert som proxy til `localhost:3000` -- ✅ Firewall-regel `allow-gitea-web` (prioritet 500) opprettet -- ✅ certbot fullført — HTTPS aktivt -- ✅ Google OAuth2 konfigurert og testet - ---- - -## SIKKERHET – ÅPNE PUNKTER -- ✅ GITEA_TOKEN rotert og fjernet fra eksponering — FERDIG 2026-07-25 +- ✅ DNS, nginx, certbot, HTTPS, Google OAuth2 — alt oppe --- ### Rollen "automation" og sikkerhets-sentinel for Gitea Status per 2026-07-25: -- Gitea kjører på https://git.vauco.no med HTTPS og riktig ROOTURL. -- Offentlig registrering er stengt (DISABLE_REGISTRATION = true, ALLOW_ONLY_EXTERNAL_REGISTRATION = true, SHOW_REGISTRATION_BUTTON = false). -- To uautoriserte brukere (dev433f2c, dev1ba0ac) er deaktivert, deres tokens er slettet. -- Ingen av stegene under er gjennomført ennå – de beskriver målbildet for neste iterasjon. +- Gitea kjører på https://git.vauco.no med HTTPS. +- Offentlig registrering stengt. +- Ingen av stegene under er gjennomført ennå – de beskriver målbildet. #### 1. Teknisk Gitea-bruker: `automation` +- Opprett Gitea-bruker `automation` (ikke admin) +- Gi tilgang kun til OSVauco-repo +- Generer token, lagre i Secret Manager som `gitea-automation-token` +- Konfigurer Cloud Run / OPAX MCP til å bruke dette tokenet +- Konfigurer git på Gitea-VM til å bruke `automation` for push/pull -Mål: -- Skille menneskelig admin (`chris`) fra automatiserte operasjoner. -- Sørge for at alle automatiske commits / API-kall identifiseres som `automation`, ikke `chris`. +#### 2. Sentinel-rolle +- Lokal LLM periodisk sikkerhetssjekk av Gitea +- Rapport i `protocols/security/SENTINEL-REPORT-YYYY-MM-DD.md` +- Kun lesetilgang, ingen mutasjoner uten godkjenning -Plan: -- Opprett Gitea-bruker `automation` (ikke admin). -- Gi `automation` kun tilgang til de repoene automasjon skal jobbe med (f.eks. OSVauco). -- Bruk CLI/API fra Gitea-VM til: - - Generere ett personal access token for `automation` med begrenset scope. - - Skrive tokenet direkte til Google Cloud Secret Manager (secret `gitea-automation-token`). - - Konfigurere Cloud Run / OPAX MCP til å lese tokenet via miljøvariabel (`GITEA_TOKEN`). -- Konfigurer git på Gitea-VM til å bruke `automation` for push/pull. - -Viktig: -- `automation` skal ikke være admin. -- `chris` skal ikke dele token med automasjon. -- Token-verdier lagres kun i Secret Manager og miljøvariabler, ikke i repo eller logs. - -#### 2. Sentinel-rolle for lokale LLM-modeller (Gitea Security Sentinel) - -Mål: -- Ha en lettvekts, lokal LLM-modell som periodisk opptrer som "cyber security sentinel" for Gitea og infrastruktur. -- Fange opp mønstre som ligner hendelsen 2026-07-11 (uautoriserte brukere, tokens laget rett etter signup, ukjente repo osv.). - -Rolle: `sentinel` (kun lesing + rapport) - -Input: -- Gitea-API: brukerliste, tokens, repo-oversikt -- Logger: gitea-app-logg, nginx-logg, journald -- Konfig: app.ini, firewall-regler, Secret Manager metadata - -Oppførsel: -- Kjør periodisk (hver time eller natt) fra Gitea-VM. -- Produser rapport i `protocols/security/SENTINEL-REPORT-YYYY-MM-DD.md`. -- Foreta ingen direkte mutasjoner uten eksplisitt godkjenning. - -Alarmsignaler: -- Nye lokale brukere som ikke matcher forventede mønstre. -- Tokens opprettet for ukjente brukere. -- Nye repo opprettet av ukjente brukere. -- app.ini endret slik at registrering åpnes igjen. - -#### 3. Samspill mellom `automation`, `sentinel` og `chris` - -- `chris`: Eneste Gitea-admin. Godkjenner større endringer. -- `automation`: Utfører godkjente tekniske endringer via CLI/API. -- `sentinel`: Kjører periodiske analyser, skriver rapporter, kun lesetilgang. +#### 3. Roller +- `chris`: admin, godkjenner +- `automation`: tekniske operasjoner via API +- `sentinel`: leser og rapporterer --- -## FASE 6.5 — OPPDATERT LOKAL LLM-STACK (2026-07-22) +## FASE 6.5 — LOKAL LLM-STACK -### Bekreftet drift -- `gitea-cpu-vm` er oppe i `us-central1-b` -- VM kjører på `e2-highmem-4` (4 vCPU / 32 GB RAM) -- Statisk IP: `34.170.51.84` -- Gitea svarer på port `3000` -- Ollama svarer på port `11434` - -### Faktisk modeller lokalt per 2026-07-25 -- `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 +### Modeller per 2026-07-25 +- `gemma3:4b` — frontmodell +- `qwen2.5:3b` — tool calling +- `qwen2.5:7b` — mellomlag +- `qwen2.5-coder:7b` — kode +- `qwen2.5-coder:14b` — batch/asynkron --- @@ -163,71 +109,61 @@ Alarmsignaler: | `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 +## DNS – FULLFØRT | 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) | +| `vauco.no.` | A | `34.98.77.173` | | `git.vauco.no.` | A | `34.67.252.59` | -| MX / SPF / DKIM / DMARC | TXT/MX | Google Workspace komplett | +| MX/SPF/DKIM/DMARC | TXT/MX | Google Workspace komplett | --- ## ÅPNE PUNKTER -1. GPG-signering — få commits verified -2. `automation`-bruker opprett i Gitea -3. Sentinel-implementering (lokal LLM periodisk sjekk) -4. Test `qwen2.5-coder:7b` på konkret kode-/repo-oppgave -5. Mål RAM/swap under modell-last -6. Emma derivat-dokument (tilsvarende GEMINI.md) -7. Fase 8: Snapshot-policy aktiveres -8. `opax.vauco.no` domain mapping (Cloud Run → custom domain) +1. `automation`-bruker opprett i Gitea — **NESTE** +2. Sentinel-implementering (lokal LLM periodisk sjekk) +3. Test `qwen2.5-coder:7b` på konkret kode-oppgave +4. Emma derivat-dokument (tilsvarende GEMINI.md) +5. Fase 8: Snapshot-policy aktiveres +6. `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å, STANDARD (ikke preemptible) +- Gitea-VM (`34.67.252.59`) er permanent målmaskin — alltid-på, STANDARD - 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 +- `gitea-admin-password` finnes i Secret Manager ## 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 — FERDIG -- ✅ Google OAuth2 innlogging Gitea — FERDIG -- ✅ GITEA_TOKEN rotert — FERDIG -- ✅ Sikkerhetsherding — FERDIG -- ✅ VM Access Scopes — FERDIG -- ⏳ GPG-signering verified — pågår -- ⏳ automation-bruker i Gitea — neste -- ⏳ Fase 7: lokal hjerne verifisert — pågår -- ⏳ Fase 8: daglig snapshot-backup — planlagt +- ✅ Lokale modeller lever +- ✅ OPAX-MCP korrekt konfigurert +- ✅ Gitea read/write tools grønne +- ✅ Smoke-test 37 tools +- ✅ VM oppgradert e2-highmem-4 +- ✅ git.vauco.no HTTPS +- ✅ Google OAuth2 +- ✅ GITEA_TOKEN rotert +- ✅ Sikkerhetsherding +- ✅ VM Access Scopes +- ✅ GPG-signering verified +- ✅ gitea-admin-password i Secret Manager +- ⏳ automation-bruker — neste +- ⏳ Fase 7: lokal hjerne verifisert +- ⏳ Fase 8: snapshot-backup ## 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 | -| 2026-07-25 08:15 | Full synkronisering: HTTPS ferdig, token rotert, OAuth2 fikset, sikkerhetsherding dokumentert, VM scopes fikset | +| 2026-07-21 | FASE 4–6 fullført | +| 2026-07-21 23:44 | DNS NS-bytte | +| 2026-07-21 23:53 | OPAX-MCP deployed | +| 2026-07-22 00:25 | Smoke-test grønn | +| 2026-07-22 19:25 | OSVauco klonet til VM | +| 2026-07-22 19:30 | Dev-snap uavhengighet bekreftet | +| 2026-07-23 22:14 | Handoff oppdatert | +| 2026-07-25 08:15 | HTTPS, token, OAuth2, sikkerhet, VM scopes ferdig | +| 2026-07-25 08:42 | GPG-signering ferdig, gitea-admin-password i Secret Manager |