Pineflight
Logo van Secret Desk

Open source van Pineflight

Secret Desk

Een lokaal portaal voor alle GitHub Actions-secrets en -variabelen van je repositories: het toont wat wanneer verloopt, geeft nieuwe tokens uit bij de providers, laat elke nieuwe waarde door een mens controleren en bevestigen en schrijft die pas dan rechtstreeks naar GitHub. Waarden worden nooit opgeslagen.

Overzichtspagina van Secret Desk in de demo, met verzonnen gegevens
Overzicht in de demo (verzonnen gegevens)De startpagina beantwoordt één vraag: wat heeft vandaag aandacht nodig? Bovenaan een melding (“1 controle wacht op je, er wordt niets naar GitHub geschreven tot je bevestigt”), daaronder vier tellers voor verlopen, bijna verlopen, ontbrekend en openstaande controles. Daaronder de lijst “Heeft aandacht nodig”, te filteren op fase (dev, staging, production, shared). In de demo staat daar een Cloudflare-token dat over vijf dagen verloopt en een Supabase-token zonder vervaldatum. Links de navigatie; onderaan een melding dat er een gesimuleerde GitHub draait.Alle afbeeldingen komen uit de ingebouwde demo met verzonnen gegevens. Onder elke afbeelding staat wat erop te zien is.

In één oogopslag

  • 01

    Eén plek voor alle secrets en variabelen

    Alle GitHub Actions-secrets en -variabelen van alle repositories in één overzicht, met fase, status, vervaldatum en eigenaar.

  • 02

    Uitgeven en vernieuwen bij de provider

    Voor Stripe, Cloudflare, Supabase, Grafana en meer maakt het portaal nieuwe tokens aan bij de provider, controleert ze automatisch en schrijft ze na jouw bevestiging naar GitHub. Waarden worden nooit opgeslagen.

  • 03

    Identiteitscontroles in het portaal

    Vraagt een provider tijdens een run om een bevestigingscode of wachtwoord, dan beantwoord je dat in het portaal in plaats van naar het browservenster te wisselen.

  • 04

    Fasen vergelijken

    Eén matrix over alle repositories toont wat in dev, staging en production ontbreekt, te veel is of afwijkt.

  • 05

    Integratie-API met OpenAPI

    Een OpenAPI 3.1-beschrijving voor tools als Jira, Confluence en Azure DevOps, gekoppeld via een job in je eigen netwerk. Ze lezen metadata en vragen vernieuwingen aan, maar zien nooit een waarde.

  • 06Nieuw

    Kant-en-klare ontwikkelomgeving

    Per repository een .env.local uit een sjabloon, met lokale adressen, testsleutels en vers gegenereerde lokale secrets.

Nieuw

Lokale ontwikkeling

Een kant-en-klare .env.local voor elke repository

Nieuwe computer, nieuw teamlid, nieuwe repository: in plaats van waarden uit chats en oude bestanden bij elkaar te zoeken, maakt Secret Desk het ontwikkelbestand aan uit een sjabloon van het team. Eén klik in het portaal of één commando, en de lokale omgeving start.

Lokale adressen
Het sjabloon vult localhost-adressen in, bijvoorbeeld voor de website en de lokale Supabase-stack.
Testsleutels, geen live-sleutels
Persoonlijke ontwikkeltokens, zoals een sleutel uit de Stripe-sandbox, vraagt het portaal bij het aanmaken.
Lokale secrets vers gegenereerd
Willekeurige waarden ontstaan bij de export en worden nergens opgeslagen.
Staging en live blijven waar ze zijn
Secretwaarden bestaan alleen voor ontwikkelfasen. Secrets uit staging of productie komen nooit op een laptop.
Veilig weggezet
Het bestand wordt met modus 600 geschreven. Het portaal toont alleen namen en waarschuwt als Git het bestand niet negeert.
.env.local
  • NEXT_PUBLIC_SITE_URL=http://localhost:3000# standaard
  • NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321# standaard
  • STRIPE_SECRET_KEY=rk_test_••••••••# testsleutel
  • RATE_LIMIT_SECRET=3f9a••••••••c41e# lokaal gegenereerd
Voorbeeld van een aangemaakt bestand met verzonnen waarden

Hoe het werkt

  1. 01

    Elk project verzamelt tokens, API-sleutels en webhook-secrets, en elk daarvan verloopt ooit. Secret Desk toont ze met eigenaar, fase en vervaldatum, zodat niets onopgemerkt verloopt op een vrijdagavond.

  2. 02

    Moet er iets vernieuwd worden, dan maakt het portaal de nieuwe waarde bij de provider aan: via de API of, waar die ontbreekt, doordat een zichtbare Chrome het formulier doorloopt terwijl jij zelf inlogt. Daarna controleert het de nieuwe waarde: werkt ze, kloppen de rechten, wanneer verloopt ze, zijn de doelen bereikbaar. Een controlerapport met bewijsafbeelding gaat naar een mens, die bevestigt of afwijst.

  3. 03

    Pas na die bevestiging wordt de waarde versleuteld in GitHub-secrets en -variabelen geschreven en de oude ingetrokken. Afwijzen verwijdert de nieuwe waarde bij de provider weer. Een waarde staat hooguit 15 minuten in het geheugen en wordt nooit opgeslagen.

  4. 04

    Eromheen: vrij te definiëren fases, een vergelijkingsmatrix voor secrets en variabelen over fases en repositories, een dev-.env-export met modus 600, een teambestand zonder waarden en een optionele versleutelde kluis voor integratietokens waarvan de sleutel in de sleutelhanger van het besturingssysteem staat. In plaats van een token te plakken kun je naar een omgevingsvariabele of een 1Password-verwijzing verwijzen.

Wat Secret Desk doet

Zien wat wanneer verloopt

Elk secret en elke variabele staat per fase en status in een overzicht, met eigenaar, beschrijving en links. Een token verloopt niet meer ongemerkt op vrijdagavond.

De volledige lijst van items, in de demo 8 secrets en 4 variabelen. Bovenaan filters voor soort, repository, fase, status, aanbieder en ontbrekende parameters, plus groeperen en sorteren. Elke rij in de tabel toont de naam met beschrijving en tags, de doelwaarde of vervaldatum, de doelen in GitHub en de status: “OK”, “Verlopen” (het Cloudflare-token, al drie dagen), “Vervaldatum onduidelijk” of “Niet vergeleken”. Rechts heeft elke rij actiepictogrammen. Een klik opent de detailweergave.

Secret Desk Items in de demo, verzonnen gegevens

Nieuwe tokens via API's

Heeft een aanbieder een API, dan geeft het portaal de nieuwe waarde zelf uit. Geen handmatig kopiëren en plakken meer.

De pagina “Integraties” toont waarmee het portaal mag werken. Onder de kop staat dat inloggegevens in het geheugen blijven of, als je dat wilt, versleuteld in de lokale kluis. De aanbieders zijn per categorie gegroepeerd: code en CI (GitHub), hosting en edge (Cloudflare), database (Supabase), betalingen (Stripe), e-mail (Resend). Elke kaart toont de status “Verbonden”, een korte beschrijving en, waar van toepassing, hoe lang het opgeslagen secret geldig is. Rechtsboven staat “Integratie toevoegen”, naast “Alles uitklappen”.

Secret Desk Integraties in de demo, verzonnen gegevens

Controleren, bevestigen, dan schrijven

De nieuwe waarde wordt gecontroleerd en samengevat in een controlerapport. Een mens bevestigt elk punt. Pas daarna wordt ze naar GitHub geschreven.

Het controlescherm voor een net gegenereerde waarde. Links het bewijsblad: secret, fase, aanbieder, doelrepository en een vingerafdruk waarmee je de waarde later kunt vergelijken zonder hem te onthullen. Daaronder de automatische controles, elk met “OK”, zoals een plausibele lengte en “doel bereikbaar met schrijfrechten”. Rechts een checklist die een mens zelf afvinkt (dezelfde waarde in alle doelen, alle gebruikers na het schrijven opnieuw uitgerold), een notitieveld en twee knoppen: “Bevestigen en naar GitHub schrijven” wordt pas actief als alles is afgevinkt, “Afwijzen en nieuwe waarde verwijderen” ruimt bij de aanbieder op. Een teller rechtsboven toont hoe lang de waarde nog in het geheugen blijft (hier 14:52).

Controleweergave van Secret Desk in de demo: controlerapport met checklist om te bevestigen of af te wijzen, verzonnen gegevens

Waarden worden nooit opgeslagen

Een waarde blijft hooguit 15 minuten in het geheugen en wordt op precies twee plaatsen doorgegeven: de API van de aanbieder en, versleuteld, GitHub.

Meer weergaven

Detailweergave van één secret met geschiedenis en doelen

De pagina van één secret, hier het verlopen Cloudflare-token. Bovenaan de status en drie vervolgstappen: “Nieuwe waarde genereren” (automatisch via de API van de aanbieder), “Waarde plakken” en “Alleen plan tonen”. Daaronder kaarten met de beschrijving, de verantwoordelijke en een link naar het dashboard van de aanbieder, de parameters, de feiten (dienst, aanbieder, vervaldatum, laatst vernieuwd, laatst bevestigd) en de doelen in GitHub. Helemaal onderaan de geschiedenis van alle controles.

Secret Desk Detailweergave van één secret met geschiedenis en doelen in de demo, verzonnen gegevens

Vergelijken: live matrix van namen tegen fases

De vergelijkingsmatrix. Bovenaan kies je de fasen die worden vergeleken (hier production en staging) en kun je faseteksten zoals STAGING of PRODUCTION uit namen halen, zodat bijbehorende rijen samenvallen. Daaronder een kaart per fase met de tellers verwacht, aanwezig, ontbreekt, onverwacht en fouten (staging: 7 verwacht, 5 aanwezig, 1 ontbreekt). De knop “Alles naar GitHub schrijven” vult hiaten aan. Verderop een tabel per repository: rijen zijn namen, kolommen zijn fasen, elke cel toont “OK” of “Fout”.

Secret Desk Vergelijken in de demo, verzonnen gegevens

Variabelen: verwachte waarde tegenover GitHub

Dezelfde lijst, gefilterd op variabelen. Anders dan secrets hebben variabelen een doelwaarde die het portaal bewaart en met GitHub vergelijkt. De demo toont vier items, bijvoorbeeld een project-ID met de waarde proj_demo_123 en twee stagingadressen van websites. De kolom “Status” laat zien of de waarde al met GitHub is vergeleken; elke rij heeft actiepictogrammen om te vergelijken, te uploaden, te downloaden en te verwijderen.

Secret Desk Variabelen in de demo, verzonnen gegevens

Providerkeuze met logo's, per categorie

Het dialoogvenster “Integratie toevoegen”, verder naar beneden gescrold. Elke aanbieder heeft een eigen kaart met logo, korte beschrijving en status (“Verbonden” of “Niet ingesteld”). De categorieën zijn observability (Grafana Cloud), AI (Anthropic, OpenAI), data-API's (VesselAPI), print en fulfilment (Peecho) en overig (een met de hand toegevoegde voorbeeldaanbieder). Helemaal onderaan opent “Eigen aanbieder toevoegen” een formulier voor diensten die nog ontbreken.

Secret Desk Providerkeuze met logo's, per categorie in de demo, verzonnen gegevens

Instellingen: vrij te configureren fases

De instellingen, hier het tabblad “Fasen” (ernaast “Beleid & agents”, “Opslag & automatisering”, “Taal” en “Ontwikkelaar”). Fasen kun je vrij benoemen; hun gedrag hangt af van de soort: lokaal (dev), test (sandbox), live (productie) of gedeeld. De tabel toont per fase de gekoppelde GitHub-omgeving, hoeveel secrets en variabelen erop staan, en pijlen om te herordenen, een potlood en een prullenbak. Nieuwe fasen maak je met “Fase toevoegen”.

Secret Desk Instellingen in de demo, verzonnen gegevens

Repositories: mappen op deze computer koppelen

Alle repositories uit de inventaris en uit GitHub in één tabel, met het aantal secrets en variabelen per repository. De kolom “Gekoppelde map” toont welke map op deze computer erbij hoort (in de demo nog geen, dus “Niet gekoppeld”); “Koppelen” legt de koppeling vast en “.env exporteren” maakt het ontwikkelbestand van die repository. Bovenaan vindt “Lokaal zoeken” mappen automatisch en leest “Vergelijken met GitHub” de repositories opnieuw in.

Secret Desk Repositories in de demo, verzonnen gegevens

Gekoppelde integraties

Waarmee Secret Desk nu communiceert. Sommige eindpunten zijn tegen de echte diensten gecontroleerd, andere tot nu toe alleen tegen mocks: de documentatie noemt de stand per provider.

Via API

Het portaal maakt deze waarden zelf aan, controleert en trekt ze in, met een token dat je eenmalig koppelt.

  • GitHub

    Schrijft secrets, variabelen en environment-secrets versleuteld. Leest welke namen bestaan.

  • Cloudflare

    API-tokens, Access-servicetokens en R2-inloggegevens.

  • Cloudflare Turnstile

    Site keys en secrets voor botbescherming.

  • Supabase

    API-sleutels, de service-role-sleutel en het databasewachtwoord.

  • Stripe

    Webhook-secrets, per account en in test- of livemodus.

  • Resend

    API-sleutels voor het versturen van e-mail.

  • Grafana Cloud

    Serviceaccounttokens en access-policytokens.

  • OpenAI

    Serviceaccountsleutels per project, via een beheerderssleutel van de organisatie.

  • RevenueCat

    Leest project- en app-ID's voor variabelebronnen.

  • Lokaal gegenereerd

    Willekeurige waarden (hex, base64, UUID) en VAPID-sleutelparen voor webpush.

Via browser

Voor providers zonder sleutel-API doorloopt een zichtbare Chrome het formulier volgens een YAML-recept. Inloggen, 2FA en CAPTCHA blijven bij jou.

  • GitHub

    Fine-grained personal access tokens.

  • Supabase

    Access tokens.

  • Stripe

    Beperkte sleutels voor één account en modus.

  • OpenAI

    API-sleutels en de beheerderssleutel van de organisatie.

  • Anthropic

    API-sleutels per workspace en de optionele beheerderssleutel.

  • Grafana Cloud

    Access policies met token.

  • VesselAPI

    API-sleutels.

  • RevenueCat

    Geheime API-sleutels met één toegangsniveau per onderdeel.

  • Peecho

    Leest merchantsleutel en secret, maakt niets aan.

Voor AI-agents

Een MCP-server met 24 tools, een skill en een HTTP-agent-API met OpenAPI-beschrijving. Agents onderhouden metadata, vragen de status op en vragen vernieuwingen aan. Ze zien nooit een waarde en bevestigen nooit.

Volledige lijst en stand

De kerngegevens

Licentie
MIT, vrij te gebruiken en aan te passen
Werking
Lokaal op de eigen computer, niets draait in de cloud van een ander
Systemen
macOS, Linux en Windows
Interface
Duits en Engels
Lokale omgeving
Het portaal maakt de .env.local per repository aan uit een sjabloon: lokale adressen, testsleutels en lokaal gegenereerde secrets, modus 600. Secrets uit staging of productie worden nooit geëxporteerd.
Team
De configuratie staat in een teambestand zonder waarden. Deel het, zodat iedereen in het team dezelfde inrichting gebruikt.
AI-agents
Een MCP-server, een skill en een HTTP-API koppelen AI-agents sneller. Ze zien nooit een waarde.

Eerlijke stand

Secret Desk is een vroege versie (0.1.0). Meerdere aanbiederskoppelingen zijn tot nu toe alleen tegen nabootsingen getest, en de praktijktests vonden plaats op macOS. De projectpagina op GitHub noemt de beperkingen precies.

Zelf proberen

De broncode, de documentatie en een demo zonder accounts staan op GitHub.

Secret Desk op GitHub