chore: update docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md via opax-mcp
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run

This commit is contained in:
chris 2026-07-25 06:43:52 +00:00
parent de22ae642a
commit 56a8fab256

View File

@ -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 05 — FERDIG ### ✅ FASE 05 — FERDIG
### ✅ FASE 6 CPU-optimalisering — 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 ### ✅ Google OAuth2 innlogging Gitea — FERDIG 2026-07-25
### ✅ SIKKERHETSHERDING Uautoriserte brukere ryddet — FERDIG 2026-07-25 ### ✅ SIKKERHETSHERDING Uautoriserte brukere ryddet — FERDIG 2026-07-25
### ✅ VM Access Scopes cloud-platform satt — 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 ### 🟡 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 ### ⏳ FASE 8 Backup / snapshot-strategi — PLANLAGT
--- ---
## SIKKERHETSHERDING (2026-07-25) ## SIKKERHETSHERDING (2026-07-25)
- ✅ Offentlig brukerregistrering i Gitea deaktivert (`DISABLE_REGISTRATION = true`, `ALLOW_ONLY_EXTERNAL_REGISTRATION = true`, `SHOW_REGISTRATION_BUTTON = false`) - ✅ Offentlig brukerregistrering i Gitea deaktivert
- ✅ To uautoriserte brukere (`dev433f2c`, `dev1ba0ac`) deaktivert og deres tokens slettet - ✅ To uautoriserte brukere (`dev433f2c`, `dev1ba0ac`) deaktivert og tokens slettet
- ✅ Eksponert GITEA_TOKEN rotert — nytt token i Secret Manager, opax-mcp redeployet - ✅ 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 | | E — Git-sync | ✅ | nothing to commit, working tree clean |
| F — Ollama | ✅ | 5 modeller bekreftet | | 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 ## git.vauco.no FULLFØRT 2026-07-25
- ✅ DNS, nginx, certbot, HTTPS, Google OAuth2 — alt oppe
- ✅ 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
--- ---
### Rollen "automation" og sikkerhets-sentinel for Gitea ### Rollen "automation" og sikkerhets-sentinel for Gitea
Status per 2026-07-25: Status per 2026-07-25:
- Gitea kjører på https://git.vauco.no med HTTPS og riktig ROOTURL. - Gitea kjører på https://git.vauco.no med HTTPS.
- Offentlig registrering er stengt (DISABLE_REGISTRATION = true, ALLOW_ONLY_EXTERNAL_REGISTRATION = true, SHOW_REGISTRATION_BUTTON = false). - Offentlig registrering stengt.
- To uautoriserte brukere (dev433f2c, dev1ba0ac) er deaktivert, deres tokens er slettet. - Ingen av stegene under er gjennomført ennå de beskriver målbildet.
- Ingen av stegene under er gjennomført ennå de beskriver målbildet for neste iterasjon.
#### 1. Teknisk Gitea-bruker: `automation` #### 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: #### 2. Sentinel-rolle
- Skille menneskelig admin (`chris`) fra automatiserte operasjoner. - Lokal LLM periodisk sikkerhetssjekk av Gitea
- Sørge for at alle automatiske commits / API-kall identifiseres som `automation`, ikke `chris`. - Rapport i `protocols/security/SENTINEL-REPORT-YYYY-MM-DD.md`
- Kun lesetilgang, ingen mutasjoner uten godkjenning
Plan: #### 3. Roller
- Opprett Gitea-bruker `automation` (ikke admin). - `chris`: admin, godkjenner
- Gi `automation` kun tilgang til de repoene automasjon skal jobbe med (f.eks. OSVauco). - `automation`: tekniske operasjoner via API
- Bruk CLI/API fra Gitea-VM til: - `sentinel`: leser og rapporterer
- 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.
--- ---
## FASE 6.5 — OPPDATERT LOKAL LLM-STACK (2026-07-22) ## FASE 6.5 — LOKAL LLM-STACK
### Bekreftet drift ### Modeller per 2026-07-25
- `gitea-cpu-vm` er oppe i `us-central1-b` - `gemma3:4b` — frontmodell
- VM kjører på `e2-highmem-4` (4 vCPU / 32 GB RAM) - `qwen2.5:3b` — tool calling
- Statisk IP: `34.170.51.84` - `qwen2.5:7b` — mellomlag
- Gitea svarer på port `3000` - `qwen2.5-coder:7b` — kode
- Ollama svarer på port `11434` - `qwen2.5-coder:14b` — batch/asynkron
### 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
--- ---
@ -163,71 +109,61 @@ Alarmsignaler:
| `EMMA_MODEL` | `gemma3:4b` | | `EMMA_MODEL` | `gemma3:4b` |
| `EMMA_FAST_MODEL` | `gemma3:4b` | | `EMMA_FAST_MODEL` | `gemma3:4b` |
| `EMMA_LIGHT_MODEL` | `qwen2.5:3b` | | `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 | | Record | Type | Verdi |
|---|---|---| |---|---|---|
| `vauco.no.` | A | `34.98.77.173` (LB) | | `vauco.no.` | A | `34.98.77.173` |
| `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` | | `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 ## ÅPNE PUNKTER
1. GPG-signering — få commits verified 1. `automation`-bruker opprett i Gitea — **NESTE**
2. `automation`-bruker opprett i Gitea 2. Sentinel-implementering (lokal LLM periodisk sjekk)
3. Sentinel-implementering (lokal LLM periodisk sjekk) 3. Test `qwen2.5-coder:7b` på konkret kode-oppgave
4. Test `qwen2.5-coder:7b` på konkret kode-/repo-oppgave 4. Emma derivat-dokument (tilsvarende GEMINI.md)
5. Mål RAM/swap under modell-last 5. Fase 8: Snapshot-policy aktiveres
6. Emma derivat-dokument (tilsvarende GEMINI.md) 6. `opax.vauco.no` domain mapping (Cloud Run → custom domain)
7. Fase 8: Snapshot-policy aktiveres
8. `opax.vauco.no` domain mapping (Cloud Run → custom domain)
## FASTE SANNHETER ## FASTE SANNHETER
- Gitea er source of truth - Gitea er source of truth
- Lokale modeller er hovedretning - 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 - 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 - CPU er primær flaskehals for tyngre lokale modeller
- `gitea-admin-password` finnes i Secret Manager
## DEFINITION OF DONE ## DEFINITION OF DONE
- ✅ Lokale modeller lever og kan brukes lokalt - ✅ Lokale modeller lever
- ✅ OPAX-MCP bruker lokal modellbackend korrekt - ✅ OPAX-MCP korrekt konfigurert
- ✅ Gitea read/write tools er grønne - ✅ Gitea read/write tools grønne
- ✅ GCP/Workspace-kjernen er fortsatt grønn - ✅ Smoke-test 37 tools
- ✅ Smoke-test alle 37 tools — FERDIG - ✅ VM oppgradert e2-highmem-4
- ✅ VM oppgradert til e2-highmem-4 (32 GB RAM) — FERDIG - ✅ git.vauco.no HTTPS
- ✅ Dev-snap uavhengighet verifisert — FERDIG - ✅ Google OAuth2
- ✅ OSVauco arbeidskopi på Gitea-VM — FERDIG - ✅ GITEA_TOKEN rotert
- ✅ git.vauco.no live med HTTPS — FERDIG - ✅ Sikkerhetsherding
- ✅ Google OAuth2 innlogging Gitea — FERDIG - ✅ VM Access Scopes
- ✅ GITEA_TOKEN rotert — FERDIG - ✅ GPG-signering verified
- ✅ Sikkerhetsherding — FERDIG - ✅ gitea-admin-password i Secret Manager
- ✅ VM Access Scopes — FERDIG - ⏳ automation-bruker — neste
- ⏳ GPG-signering verified — pågår - ⏳ Fase 7: lokal hjerne verifisert
- ⏳ automation-bruker i Gitea — neste - ⏳ Fase 8: snapshot-backup
- ⏳ Fase 7: lokal hjerne verifisert — pågår
- ⏳ Fase 8: daglig snapshot-backup — planlagt
## OPPDATERINGSLOGG ## OPPDATERINGSLOGG
| Dato | Handling | | Dato | Handling |
|---|---| |---|---|
| 2026-07-21 | FASE 46: CPU-optimalisering, boot-warming fullført | | 2026-07-21 | FASE 46 fullført |
| 2026-07-21 23:44 | DNS: NS-bytte utført hos Proisp | | 2026-07-21 23:44 | DNS NS-bytte |
| 2026-07-21 23:53 | OPAX-MCP: GITEA_URL + OLLAMA_BASE_URL → 34.67.252.59, deployed | | 2026-07-21 23:53 | OPAX-MCP deployed |
| 2026-07-22 00:25 | Smoke-test fullført — alle kategorier grønne | | 2026-07-22 00:25 | Smoke-test grønn |
| 2026-07-22 03:55 | Handoff oppdatert etter 14B-validering | | 2026-07-22 19:25 | OSVauco klonet til VM |
| 2026-07-22 19:25 | OSVauco klonet til Gitea-VM via localhost:3000 | | 2026-07-22 19:30 | Dev-snap uavhengighet bekreftet |
| 2026-07-22 19:30 | Dev-snap uavhengighet bekreftet — alle 6 tester grønne | | 2026-07-23 22:14 | Handoff oppdatert |
| 2026-07-22 19:45 | nginx installert, git.vauco.no konfig opprettet, certbot blokkert av firewall | | 2026-07-25 08:15 | HTTPS, token, OAuth2, sikkerhet, VM scopes ferdig |
| 2026-07-23 22:14 | Handoff oppdatert med full status, neste steg og sikkerhetsnotis om token | | 2026-07-25 08:42 | GPG-signering ferdig, gitea-admin-password i Secret Manager |
| 2026-07-25 08:15 | Full synkronisering: HTTPS ferdig, token rotert, OAuth2 fikset, sikkerhetsherding dokumentert, VM scopes fikset |