Kom hurtigt i gang
Fra en tom konto til en hukommelse, du kan søge i
Syv trin, cirka fem minutter, og ét af dem kan ikke gøres om. Trin to viser en hemmelighed præcis én gang — læs det, før du kører det.
Opret en konto
Opret dig med en e-mail, en adgangskode og et navn. Adressen skal bekræftes, før kontoen kan bruges, så dette kald returnerer ingen session — det sender et link i stedet. Åbn linket, og log derefter ind; det andet kald er det, der sætter den cookie, næste trin skal bruge.
POST /api/auth/sign-up/emailcurl -fsS -X POST https://pfmem-api.packagefactory.dk/api/auth/sign-up/email \ -H 'content-type: application/json' \ -c cookies.txt \ -d '{"email":"you@example.com","password":"a-long-passphrase","name":"Your Name"}'Indtil adressen er bekræftet, svarer login 403 med EMAIL_NOT_VERIFIED. Linket gælder i én time, og den side, det lander på, kan sende et nyt.
POST /api/auth/sign-in/emailcurl -fsS -X POST https://pfmem-api.packagefactory.dk/api/auth/sign-in/email \ -H 'content-type: application/json' \ -c cookies.txt \ -d '{"email":"you@example.com","password":"a-long-passphrase"}'Du kan også gøre det i browseren. Resultatet er den samme session-cookie. At oprette sig med en adresse, der allerede findes, giver det samme svar som en ny — svaret er bevidst ikke en måde at spørge om, hvilke adresser der er registreret.
Udsted master-nøglen
Dette ene kald opretter kontoen og udsteder dens første master-nøgle. Det autentificerer med session-cookien frem for en bearer-nøgle, og fordi en cookie følger med af sig selv, skal kaldet gentage sessionens CSRF-token i en header. Hent tokenet først, og udsted så nøglen.
GET /api/v2/account/csrf-tokencurl -fsS https://pfmem-api.packagefactory.dk/api/v2/account/csrf-token \ -b cookies.txtPOST /api/v2/account/master-keycurl -fsS -X POST https://pfmem-api.packagefactory.dk/api/v2/account/master-key \ -H 'content-type: application/json' \ -H 'x-csrf-token: <the token from the call above>' \ -b cookies.txt \ -d '{"label":"bootstrap master key","account_name":"Acme"}'Hemmeligheden vises præcis én gang
Svaret indeholder nøglens hemmelighed. Den hashes på serveren i samme øjeblik, den udstedes, og kan aldrig hentes frem igen — hverken af os eller af dig. Gem den i en adgangskodemanager, før du lukker terminalen.200 OK{ "request_id": "23ba77f0c6474ccb8dc5d65d1a44d069", "data": { "key": { "key_id": "key_01HQ", "tier": "master", "label": "bootstrap master key", "prefix": "mk_live_", "tenant_slug": null, "role": null, "verbs": ["read", "write", "delete"], "created_at": 1755640000000 }, "secret": "mk_live_<shown here and nowhere else, ever>" } }Et kald nummer to afvises, fordi en konto har én første master-nøgle, og der er intet at udstede igen. Er hemmeligheden væk, går vejen tilbage gennem rotation, ikke gennem et nyt forsøg.
Opret et arbejdsområde
Et arbejdsområde er en grænse omkring ét sæt hukommelser — ét pr. kunde, pr. miljø eller pr. projekt. Når du opretter det, får det sit eget private rum, hvor der ikke ligger andet, og hvor intet deles med noget andet arbejdsområde. Slug'en vælger du selv inden for den tilladte form; det interne navn udledes af den og returneres til dig, det sendes aldrig.
POST /api/v2/admin/tenantscurl -fsS -X POST https://pfmem-api.packagefactory.dk/api/v2/admin/tenants \ -H 'authorization: Bearer mk_live_...' \ -H 'content-type: application/json' \ -d '{"slug":"acme_prod","display_name":"Acme (production)", "active_embedding_version":"external_v1"}'Autentificér med master-nøglen som bearer-token herfra og frem. En slug består af små bogstaver, cifre og understreger, op til fyrre tegn — en bindestreg er en valideringsfejl, ikke en slug med en bindestreg i. Embedding-versionen navngiver en post, der allerede findes i registret; det er ikke en betegnelse, du finder på pr. arbejdsområde.
Udsted en nøgle afgrænset til det arbejdsområde
Master-nøgler er til administration. Daglig trafik bør bære den snævreste legitimation, der stadig virker, så udsted en nøgle afgrænset til ét arbejdsområde, og giv den til klienten. Niveauet og slug'en i bodyen herunder er det, der afgrænser den.
POST /api/v2/admin/keyscurl -fsS -X POST https://pfmem-api.packagefactory.dk/api/v2/admin/keys \ -H 'authorization: Bearer mk_live_...' \ -H 'content-type: application/json' \ -d '{"tier":"tenant","label":"acme_prod client","tenant_slug":"acme_prod"}'Request-bodyen valideres strengt: et ukendt felt er en valideringsfejl frem for et felt, der stille ignoreres, så et stavet forkert navn fejler højlydt i stedet for at udvide ingenting.
Installér klienten, og gem nøglen
Send nøglen ind på standard input frem for som et argument. Et argument er synligt i proceslisten for hver bruger på maskinen og skrives til din shell-historik; standard input er ingen af delene.
pfmem initcurl -fsSL https://pfmem-api.packagefactory.dk/install.sh | sh export PATH="$HOME/.pfmem/bin:$PATH" cat key.txt | pfmem initKonfigurationsfilen oprettes, så kun ejeren kan læse den, og den nøgle, den indeholder, sendes kun til et https-origin eller til loopback.
Gem en samtale
Indlæsningen er asynkron. Kaldet returnerer, så snart beskederne er persisteret, og giver et task-id tilbage; udtrækningen til søgbare hukommelser sker bagefter. Intet er søgbart i det øjeblik, kaldet returnerer, og det er præcis det, næste trin er til for.
pfmem addpfmem add --mode chat --user-id u_42 --session-id s_1 \ --idempotency-key batch-2026-08-18-01 \ --messages '[{"role":"user","content":"I moved to Berlin"}]'Idempotensnøglen gør et nyt forsøg efter en timeout sikkert: en gentagelse returnerer det første resultat i stedet for at indlæse den samme batch to gange.
Hent den frem igen
Fremtving den ventende udtrækning frem for at vente på baggrundspipelinen, og stil så et spørgsmål. Flush blokerer så længe, du tillader; søgningen holder dit spørgsmål op mod det, arbejdsområdet indeholder — både efter betydning og efter de præcise ord — og returnerer et rangeret sæt fakta, ikke et referat.
pfmem flush · pfmem searchpfmem flush --session-id s_1 --wait-ms 10000 pfmem search --memory-type user --user-id u_42 --query "where does he live now?"Brug den rangerede søgning, når du har et spørgsmål. Brug den almindelige visning, når du vil have alt, der er gemt om et subjekt, i en stabil rækkefølge og med rigtig paginering.
pfmem getpfmem get --memory-type user --user-id u_42 --limit 50
Hvor du går hen herfra
Kommandoreferencen dækker hvert flag, exit-koderne og logfilen. API-referencen dækker konvolutten, statuskoderne og de endpoints, disse kommandoer kalder.