# Run

> Udgiv en færdig webapp på sin egen adresse på komplai.run, for organisationen eller for alle, og lad den bruge komplai gennem appens SDK.

Run udgiver en færdig browserapp på sin egen adresse, fx `navn.komplai.run`. Du uploader de færdige filer, en HTML-fil, en ZIP-fil eller en mappe som `dist`, og den nye version er live med det samme. Run ligger i hubbens menu på [hub.komplai.dk/publish](https://hub.komplai.dk/publish), når det er slået til for jeres organisation.

Apps kører i den besøgendes browser, og Run kører ikke serverkode. Med appens SDK kan en app vise, hvem der er logget ind, bruge AI og Redact med den enkeltes egen adgang, gemme data i komplai og skrive i Hændelsesloggen, når en administrator har godkendt hver del for appen.

## Hvem kan åbne en app

| Adgang | Hvem kan åbne appen |
| --- | --- |
| Kun organisationen | Alle nuværende medlemmer af organisationen, når de har logget ind i komplai. Gæster kan ikke åbne den. |
| Offentlig | Alle, uden login og uden at have fået linket. Alle filer i den version, der er live, kan hentes, også filer, som ingen side linker til. |

En ny app har adgangen **Kun organisationen**. Skal den være offentlig, åbner du appens side i Run, vælger **Skift adgang** og **Offentlig**, skriver appens navn og vælger **Gør appen offentlig**. Hold fortrolige oplysninger ude af en offentlig app: filer, som nogen allerede har hentet, kan ikke trækkes tilbage, hvis du begrænser appen til organisationen igen.

En app, der bruger identitet, AI, Redact, gemte data, hændelser eller fejlrapporter fra komplai, kan kun have adgangen **Kun organisationen**. Fra komplai må en offentlig app kun tælle anonymt og sende forespørgsler til de adresser, manifestet angiver.

Kun den, der oprettede appen, og organisationens administratorer kan ændre den, udgive nye versioner og oprette udgivelsesnøgler. Organisationens andre medlemmer kan se appen i Run.

## Sådan kan du udgive

På appens side under **Udgiv en ny version** (eller **Udgiv den første version**) vælger du, hvordan:

- **Upload fil**: vælg eller træk en HTML-fil eller en ZIP-fil med `index.html` øverst eller inde i én mappe.
- **Terminal**: opret en udgivelsesnøgle, og kør den kommando, Run viser. Den pakker mappen med de færdige filer, viser, hvilken app de skal til, og spørger, før den uploader. [Udgiv med Run](https://developers.komplai.dk/da/guides/run) fører dig igennem det.
- **AI-kodeassistent**: hent guiden til Claude Code, Codex eller en anden assistent, opret en udgivelsesnøgle, og lad assistenten bygge og udgive appen. Du indsætter selv nøglen, når terminalen spørger.

Du kan også lade AI skrive appen i Run. Under **Ny app** åbner **Byg med AI** Byg en app: beskriv appen, prøv den i en forhåndsvisning med testdata, og udgiv den som en ny app. På en apps side fortsætter **Byg videre med AI** fra den version, der er live, når den er én HTML-fil på højst 1 MB. Byg en app bruger din adgang til Chat. Det, du skriver, og appens kode sendes til den AI-model, du vælger, i komplais EU-cloud inden for organisationens loft for AI-forbrug eller gennem en af organisationens egne AI-forbindelser. Det bruger aldrig lokal infrastruktur.

## Versioner og adresser

Hver version er komplet: filer fra tidligere versioner bliver ikke taget med. Run gemmer de 5 nyeste versioner af hver app, så når du udgiver den sjette, slettes den ældste. Under **Versioner** på appens side gør **Brug denne version** en tidligere version live igen. **Tag appen offline** forhindrer alle i at åbne appen og beholder de gemte versioner. Appen beholder sin adresse hele vejen igennem.

Hver app har sin egen adresse på komplai.run. En læsbar adresse har 3 til 40 tegn, a-z, 0-9 og bindestreger, og starter og slutter med et bogstav eller et tal. Bogstaver som æ, ø og å kan ikke bruges, og nogle ord, fx admin og www, er reserveret. Når du skifter adresse, sender den gamle videre til den nye i et år. Derefter kan andre tage den. En adresse er ikke hemmelig, så brug ikke fortrolige ord i den.

## Det kan en app bruge fra komplai

En app angiver i sit manifest, `komplai.json`, hvad den bruger, med en begrundelse for hver del. En administrator godkender hver del på appens side under **Det må appen**. Appen får aldrig mere, end den, der bruger den, selv har adgang til.

| Del | Navn | Det får appen |
| --- | --- | --- |
| Identitet | `identity` | Et medlems-id, der er det samme i hele organisationen, og de felter, du beder om: navn, organisation, rolle, grupper, afdeling, stillingsbetegnelse eller mailadresse |
| AI | `ai.chat` | Svar gennem personens egen adgang til Chat, i komplais EU-cloud eller gennem organisationens egne AI-forbindelser |
| Redact | `redact.text` | Fund og pseudonymiseret tekst gennem personens egen adgang til Redact. Listen over betegnelser bliver i browseren |
| Gemte data | `data` | Op til 20 samlinger, hver enten kun for den enkelte, delt i appen eller delt mellem apps |
| Hændelser | `log.events` | Navngivne hændelser i Hændelsesloggen med personen og appen |
| Fejlrapporter | `log.errors` | Fejl fra browseren, vist på appens side i Run |
| Anonyme tællinger | `log.counters` | Antal pr. dag uden adresse eller identitet. En offentlig app må bruge det |
| Udgående kald | `connect` | Præcise `https://`-adresser, appen må sende forespørgsler til. En offentlig app må bruge det |

I `komplai.json` ligger delene under `uses`, og hændelser, fejlrapporter og tællinger ligger samlet under `log`. `connect` er en liste over adresser i manifestets øverste niveau.

En version, der beder om det samme eller mindre, beholder godkendelsen. En version, der beder om mere, venter på en ny godkendelse, og resten virker imens. For AI vælger administratoren, hvor appen må bruge det, og sætter appens egen månedlige grænse. For Redact vælger administratoren, om appen også må bruge Redacts sprogmodel i komplais EU-cloud. [Udgiv med Run](https://developers.komplai.dk/da/guides/run) viser manifestet og SDK'ets kald.

## Grænser

| Grænse | Værdi |
| --- | --- |
| Én upload | 10 MB |
| Én version, udpakket | 50 MB |
| Én fil | 10 MB |
| Filer i én version | 2.000 |
| Gemte versioner pr. app | 5 |
| Aktive udgivelsesnøgler pr. app | 10 |
| En udgivelsesnøgles levetid | 7 dage |
| Ét gemt dokument | 64 KB som JSON |

Run regner 1 MB som 1.024 × 1.024 byte. Alle gemte versioner tæller med i organisationens plads, og hver fil fylder mindst 8 kB.

På servere, der deles med andre organisationer, har en organisation op til 10 apps, 5 GB gemte appfiler og 100 GB trafik om måneden. På en server, der kun bruges af jeres organisation, er standarden 1.000 apps, 40 GB gemte appfiler og 1 TB trafik om måneden. Trafik er det, apps sender til de besøgende, opgjort pr. kalendermåned i UTC. Når månedens trafik er brugt, kan organisationens apps ikke åbnes, før næste måned begynder. Run viser organisationens plads og trafik under **Kapacitet og grænser**.

Understøttede filtyper: html, htm, css, js, mjs, json, txt, csv, png, jpg, jpeg, gif, webp, avif, svg, ico, woff, woff2, ttf, otf, pdf, mp3, mp4, webm, ogg, wav og wasm. Skjulte stier og source maps afvises. At udgive en fil er ikke en sikkerhedsgennemgang af appen.

## Hvor data behandles og gemmes

- **Appfiler** ligger på komplais server hos Hetzner i EU, i Falkenstein eller Nürnberg i Tyskland eller i Helsinki i Finland, på en server, der deles med andre organisationer, eller som kun bruges af jeres. Run viser stedet under **Kapacitet og grænser**.
- **AI** fra en app går til komplais EU-cloud eller til en AI-forbindelse, administratoren har godkendt, aldrig til lokal infrastruktur. Forbrug i EU-cloud tæller med i organisationens loft for AI-forbrug og i appens egen månedlige grænse. Run har ikke sin egen AI-kvote.
- **Redact** fra en app kører mønstre og NER på komplais servere hos Hetzner i Tyskland. Redacts sprogmodel i komplais EU-cloud bruges kun, hvis administratoren har godkendt det.
- **Gemte data** ligger krypteret i komplais database hos Hetzner i Tyskland og kommer med i den daglige backup. En samling kan slette dokumenter, der ikke er ændret i et fastsat antal dage. Administratorer kan hente en apps data, også det, hver person har gemt kun for sig selv, og slette en samlings data.
- **Hændelser** i Hændelsesloggen rummer kun hændelsens navn, hvem, hvornår, appen og eventuelt et id.
- **Fejlrapporter** ligger krypteret i komplais database i 30 dage, uden hvem der fik fejlen.
- **Anonyme tællinger** gemmer kun antallet pr. dag, uden adresse eller identitet, i 400 dage.
- **Data, en app gemmer i browseren**, bliver på den enhed, medmindre appen selv sender dem til en anden tjeneste.

---

https://developers.komplai.dk/da/tools/run
