feat: add development-only local mint server#1784
Conversation
Extract shared types and functions from internal/mint/main.go into internal/mintcore/: OIDC verification (OIDCVerifier interface with JWKSVerifier and STSVerifier implementations), JWT generation, GitHub API helpers, claims validation, and pattern constants. Refactor the GCP mint to import from mintcore instead of having inline code. External behavior is unchanged — same HTTP API, same env vars, same validation rules. Update the Cloud Function provisioner to bundle mintcore alongside the mint function for deployment. Add embed sync tests for mintcore files. This is the first half of the dev-mint feature — extracting shared code so it can be reused by a standalone development mint in a follow-up PR. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a standalone token mint (fullsend mint run) for local development and evaluation. The dev mint stores GitHub App PEMs on disk with fsnotify hot reload, verifies OIDC tokens via JWKS, and mints real installation tokens — no GCP infrastructure required. New CLI flags: - fullsend mint run --data-dir --port --tunnel --insecure-no-auth - fullsend admin install --mint-data-dir (writes PEMs to disk) The --tunnel flag starts a cloudflared quick tunnel so GitHub Actions runners can reach the local mint. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Site previewPreview: https://82f4fd4d-site.fullsend-ai.workers.dev Commit: |
ReviewFindingsMedium
Low
|
| ## Prerequisites | ||
|
|
||
| - **fullsend CLI** (v0.5.0+ or built from source): |
There was a problem hiding this comment.
This will available after 0.13.0.
Summary
Add a standalone token mint for local development and evaluation. This eliminates the need for GCP infrastructure (Secret Manager, WIF, Cloud Functions) to get started with fullsend.
Dev mint server (
internal/devmint/)--insecure-no-authflag for local dev)CLI changes
fullsend mint runcommand with--data-dir,--port,--tunnel,--insecure-no-auth,--oidc-audienceflags--mint-data-dirflag onfullsend admin install— writes PEMs directly to disk instead of Secret Manager--mint-urlvalidation (allowshttp://localhostfor dev mint)storePEMToDisk()for disk-based PEM persistence during installDocumentation
docs/guides/infrastructure/dev-mint.mdReview focus
storePEMToDisksafe against path traversal via role names?--insecure-no-authand--mint-data-dircompose correctly with existing flags?Test plan
go test ./internal/devmint/...— 22 tests passgo test ./internal/cli/...— CLI tests passgo vet ./...— cleanfullsend mint run→ tunnel →fullsend admin install→ agent runs🤖 Generated with Claude Code