Kolofon

Hvordan det her blev bygget

De fleste sites forklarer ikke sig selv. Det her gør, for hvordan det blev lavet, er en del af, hvad det er: et bevidst eksperiment i at bygge godt, med usædvanlige medarbejdere, og et register værd at bevare.

CONCORD

Dette site blev designet og bygget gennem en protokol ved navn CONCORD: et struktureret samarbejde mellem ét menneske og tre forskellige AI-systemer, hver i sin egen rolle. Det er ikke et trick. Det er en fungerende metode, med sin egen styring, sit eget beslutningsregister og ét menneske ansvarlig for hvert valg, der blev publiceret.

Præmissen er enkel. Forskellige AI-modeller har forskellige styrker, og et svært problem vinder på mere end ét perspektiv holdt i spænding. Derfor blev arbejdet delt op efter rolle, og ét menneske sad i midten, gik som bro mellem dem, ratificerede det, der var solidt, og forkastede det, der ikke var.

CONCORD er ikke hentet noget sted fra. Det blev udformet af Rodolfo Nützmann til dette projekt ud fra et praktisk behov: hvordan man trækker på flere AI-systemer på én gang, hver især virkelig stærk til noget forskelligt, uden at opgive den ene tråd af menneskeligt ansvar, som rigtigt arbejde kræver. Svaret var at give hvert system et fast sæde, forhindre dem i at forhandle indbyrdes og lede hver udveksling gennem én person, der havde hele billedet. Den ordning har et ældre navn. AI-systemerne er agenter: de handler efter anvisning og på en andens vegne. PRIME er principalen: den, der faktisk beslutter, som udøver dømmekraften, og som bærer både følgerne og navnet.

Styrken ligger hos agenterne. Ansvaret ligger hos principalen, og det kan ikke overdrages.

Det begyndte uformelt som en måde at fordele arbejdet på og størknede undervejs i opbygningen til en navngiven metode: faste sæder, én overordnet regel om, at intet udgives, uden at PRIME ratificerer det, og en skriftlig optegnelse over, hvorfor hver beslutning blev truffet. Navnet udtrykker formålet: enighed, en aftale opnået med vilje gennem en proces, ikke hvad et uovervåget værktøj tilfældigvis frembringer.

Mekanikken, sagt enkelt

ForeslåHvert sæde fremlægger muligheder inden for sit eget område.
VideregivePRIME bærer forslag mellem sæderne; de forhandler aldrig direkte.
RatificerePRIME godtager det, der holder, og afviser det, der ikke gør. Ellers udgives intet.
AfgrænseEt fast sæt interne regler afgrænser hvert resultat, ved hvert sæde.
RegistrereEn skriftlig beslutningslog bevarer begrundelsen bag hvert valg.
HuskeKonteksten, de interne regler og den log består som filer, der føres fra den ene session til den næste, så metoden overlever enhver enkelt samtale.

Pladserne

  • PRIMERodolfo Nützmann
    Menneske

    Den eneste ratificerende. Hver beslutning, hver publiceret linje gik gennem et menneske, der havde hele billedet og bar det endelige ansvar. AI'erne foreslog; PRIME afgjorde.

  • ANVILTeknik
    Anthropic · Claude Opus 4.8

    Chefingeniørens plads. Arkitektur, kode, indholdsstruktur og selve byggeriet, forvandlet fra hensigt til et fungerende, testet og udrulningsklart site.

  • SCOUTStrategi og brand
    OpenAI · ChatGPT 5.5

    Strategiens og positioneringens plads. Spørgsmålene om, hvad det her er, hvem det er til, og hvordan det skal præsentere sig for verden.

  • PRISMDesign
    Google · Gemini 3.1 Pro

    Designets plads. Det visuelle sprog, typografien, farven og helhedens fornemmelse, formet til et sammenhængende system.

AI-modelversioner pr. juni 2026.

Hvordan det blev gjort

Nogle få principper gjaldt fra start til slut, og de er synlige, hvis du ved, hvor du skal kigge.

Beregn, gæt aldrig

Værktøjerne på dette site beregner svar lokalt og deterministisk. De kalder ikke en server med dine inddata, og de tilnærmer ikke. Det, der kører i din browser, bliver i din browser.

Åben i kernen

Den deterministiske logik, hvert værktøj kører, er hele værktøjet: der er intet skjult servertrin, ingen konto og ingen telemetri. Alt kører i din browser.

Dokumenteret gennem konstruktion

Hver del af kodebasen er kommenteret og dokumenteret, ikke som en eftertanke, men som en stående regel. Byggeriet er tænkt til at være læsbart, for den, der vedligeholder det, og for den, der arver det.

Bygget til at vare og rejse

Sitet er en statisk eksport: hurtigt, cachebart og uafhængigt af noget ved kørselstid. Det er bygget op fra bunden til mange sprog, så det kan henvende sig til et globalt publikum uden at blive bygget om.

Stakken

For den, der går op i den slags, det tekniske fundament, klart angivet.

Framework
Next.js 15 og React 19, eksporteret som et fuldt statisk site
Internationalisering
next-intl, med 16 sprog og understøttelse af højre-mod-venstre
Designsystem
En tilpasselig, tokenbaseret temamotor; standardtemaet er Obsidian
Typografi
Inter til tekst, JetBrains Mono til data og koder
Værktøjsmotor
Et deterministisk beregningslag, der kører helt i browseren
Søgning
Statisk fuldtekstsøgning på klientsiden; ingen søgeserver

Hvordan oversættelser markeres

Engelsk og brasiliansk portugisisk skrives og gennemgås af en person. De fleste andre sprog er maskinoversat og markeret efter, hvor langt de er: ravgul, når et sprog dækker hele webstedet, gul, mens nyere indhold stadig er på engelsk og er ved at indhente. Sprog markeret med rødt har endnu ingen oversættelse og vises på engelsk indtil videre. Maskinoversatte sider har desuden en kort note, og du er velkommen til at hjælpe med at forbedre dem.

  • Gennemset af et menneske
  • Maskinel, fuldstændig
  • Maskinel, undervejs
  • Endnu ikke oversat

Standarder og frameworks

Hvert værktøj her implementerer en offentliggjort specifikation, ikke et gæt. Afkoderne og beregnerne bygges mod de dokumenter, der definerer deres formater, og fastgøres til de testvektorer, dokumenterne offentliggør, så hvert svar tjekkes mod sandhedskilden i stedet for mod sig selv.

Specifikationerne

JSON Web Tokens følger RFC 7519, med signaturer og algoritmer i RFC 7515 og 7518; PKCE er RFC 7636; Base64 og dens slægtninge er RFC 4648; UUID'er er RFC 9562 (der erstattede RFC 4122 i 2024 og har egne testvektorer); HMAC er RFC 2104, over SHA-familien standardiseret i FIPS 180-4 og FIPS 202; X.509-certifikater er RFC 5280; IPv4 og CIDR-notationen er RFC 4632; IPv6-adressering og dens kanoniske tekstform er RFC 4291 og RFC 5952; og cipher suite-afkoderen drives af det officielle IANA TLS Cipher Suites-register, krydstjekket med TLS 1.3- og 1.2-specifikationerne (RFC 8446 og 5246), registeropdateringsreglerne, der fastsætter kolonnen “Recommended” (RFC 8447), og RC4-forbuddet (RFC 7465). Hvor et register er autoriteten, indlejres dets data direkte i stedet for at blive tastet ind igen.

Referencevektorer

Hvert værktøj leveres med et sæt referencevektorer: kendte input parret med kendt korrekte output, hentet fra de relevante RFC'er og standardiseringsorganer. De kører ved hvert build, så en refaktorering, der stille ændrer et svar, får buildet til at fejle i stedet for at gå i luften.

OWASP

Sikkerhedsværktøjerne er defineret ud fra OWASP's frameworks, ikke samlet ad hoc. Krypto- og TLS-værktøjerne svarer til områderne Cryptographic Failures og Security Misconfiguration i OWASP Top 10 og til de tilsvarende tjek i Application Security Verification Standard; token-værktøjet følger OWASP's vejledning til at inspicere og validere JWT'er. OWASP's prevention cheat sheets fastsætter også hårde regler for, hvad der bygges som det næste: enhver XML- eller SAML-håndtering, der tilføjes her, skal hærdes mod XXE, før den går i luften.

Rødt og blåt

Den samme afkod-og-forklar, der lader en red-teamer læse et opfanget token, lader en blue-teamer forstå, hvad ens egen stak udsender. Platformen står bevidst på analysesiden af den linje: den identificerer, afkoder, konverterer og forklarer, og går ikke så vidt som at forfalske, injicere eller omgå kontroller. Den grænse er et designvalg, ikke en forglemmelse; disse værktøjer findes for at lære fra sig og diagnosticere, ikke for at blive et våben.

Lokalt og deterministisk

Alt kører i browseren. Værktøjet kalder en ren funktion: med samme input giver den samme output, holder ingen tilstand og sender intet til en server. Ingen cookies, ingen analytics, som Privatlivssiden beskriver fuldt ud.

The ceiling, stated plainly

This site runs as a single Cloudflare Worker serving static assets, and that platform has hard, published limits worth being honest about. A Worker version may carry at most 20,000 static files on the free plan and 100,000 on the paid plan (raised from 20,000 in September 2025, and only when deploying with Wrangler 4.34 or newer), with no single file over 25 MiB. Requests for static assets themselves are free and unlimited; only invocations of the Worker script, such as the API, are metered.

Those numbers matter because this architecture multiplies content deliberately. Every rendered page ships as roughly three files: its HTML, the framework's navigation payload, and a search-index fragment, across all sixteen languages, and the English and Portuguese pages add machine-readable Markdown twins. In practice one tool costs about fifty files and a tool with its companion article about a hundred, so the current site stands at a little over eighteen thousand files. Under the paid ceiling that leaves room for hundreds more tools; the build is measured against these limits, and if the toolbox ever truly outgrows a single Worker, the expansion path is already mapped: splitting routes across additional Workers, each with its own allowance, and ultimately object storage with no count limit at all.

Er dette vibe coding?

Koden er 100 % syntetiseret af Claude.

Det er et rimeligt spørgsmål, som fortjener et klart svar. Vibe coding er et begreb, som AI-forskeren Andrej Karpathy opfandt i begyndelsen af 2025 for en måde at bygge software på, hvor man beskriver, hvad man vil, for en sprogmodel, accepterer det, den skriver, uden at læse det nøje, og styrer efter resultater frem for efter selve koden. Han beskrev det som at give efter for stemningen og glemme, at koden overhovedet findes, og var klar i mælet om, at det egnede sig bedre til hurtige engangsprojekter end til systemer, som folk er afhængige af.

Efter den definition blev en del af dette websted bygget sådan, og det er bedre at vedkende sig end at skjule. Applikationens overflade, frameworkets ledningsføring, komponenterne, stylingen, de rør, der holder siderne sammen, blev fremstillet hurtigt med en AI-ingeniør og styret efter udfald og efter et fast sæt interne regler, ikke skrevet i hånden linje for linje. For det lag, hvor en fejl er synlig og let at rette, var hastighed hele pointen.

De dele, der betyder mest, holdes op mod en anden standard. Alt, der beregner dine data, verificeres, ikke laves på fornemmelse: kernen i hvert værktøj holdes op mod den offentliggjorte standard, det implementerer, de relevante RFC'er og specifikationer, og dets output bekræftes mod uafhængige referencer, før det udgives. Som en ofte citeret bemærkning fra programmøren Simon Willison lyder, er kode, du har gennemgået, testet og forstået, slet ikke vibe coding. Karpathy selv kalder nu den disciplinerede version agentic engineering: at beholde AI'ens løftestang uden at give køb på resultatets kvalitet. Det er den linje, dette projekt trækker. Hurtigt, hvor hastighed er gratis, grundigt, hvor det tæller, og ét menneske ansvarligt for det hele.

Særlig tak

Mariana, Ulli, Richard, Ocyrema, Felisberto, Regine, Eduardo, Ricardo, Pedro, Liliane, Tereza, Cezar, Leonardo, Eduardo, Victor, Miu, Nina, Luna, Tux, Kiki, Greg and Theo.

En note om metoden

At bygge software med AI-medarbejdere er nyt nok til, at det ærlige er at være åben om det. Intet her blev publiceret, uden at et menneske besluttede, at det skulle være sådan. AI'erne var værktøjer, dygtige værktøjer, men værktøjer. Dømmekraften, ansvaret og navnet på arbejdet er menneskelige.

/dev/fun