{"id":22760841,"url":"https://github.com/thevilledev/vault-plugin-secrets-vercel","last_synced_at":"2026-04-18T04:01:57.487Z","repository":{"id":178134457,"uuid":"660893939","full_name":"thevilledev/vault-plugin-secrets-vercel","owner":"thevilledev","description":"Ephemeral @vercel authentication tokens with @hashicorp Vault","archived":false,"fork":false,"pushed_at":"2025-11-20T02:03:24.000Z","size":357,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-01T17:27:56.363Z","etag":null,"topics":["ephemeral-credentials","hashicorp-vault","secrets","vault-plugins","vault-secrets","vercel"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thevilledev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-01T06:22:01.000Z","updated_at":"2025-08-17T05:52:59.000Z","dependencies_parsed_at":"2025-08-03T13:30:14.483Z","dependency_job_id":null,"html_url":"https://github.com/thevilledev/vault-plugin-secrets-vercel","commit_stats":null,"previous_names":["thevilledev/vault-plugin-secrets-vercel"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/thevilledev/vault-plugin-secrets-vercel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevilledev%2Fvault-plugin-secrets-vercel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevilledev%2Fvault-plugin-secrets-vercel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevilledev%2Fvault-plugin-secrets-vercel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevilledev%2Fvault-plugin-secrets-vercel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thevilledev","download_url":"https://codeload.github.com/thevilledev/vault-plugin-secrets-vercel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevilledev%2Fvault-plugin-secrets-vercel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31955919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ephemeral-credentials","hashicorp-vault","secrets","vault-plugins","vault-secrets","vercel"],"created_at":"2024-12-11T09:08:42.378Z","updated_at":"2026-04-18T04:01:57.465Z","avatar_url":"https://github.com/thevilledev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vault-plugin-secrets-vercel\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/thevilledev/vault-plugin-secrets-vercel.svg)](https://pkg.go.dev/github.com/thevilledev/vault-plugin-secrets-vercel)\n[![Go Report Card](https://goreportcard.com/badge/github.com/thevilledev/vault-plugin-secrets-vercel)](https://goreportcard.com/report/github.com/thevilledev/vault-plugin-secrets-vercel)\n[![build](https://github.com/thevilledev/vault-plugin-secrets-vercel/actions/workflows/build.yml/badge.svg)](https://github.com/thevilledev/vault-plugin-secrets-vercel/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/thevilledev/vault-plugin-secrets-vercel/branch/main/graph/badge.svg?token=BD9RMDI33W)](https://codecov.io/gh/thevilledev/vault-plugin-secrets-vercel)\n\n## What?\n\nVault Secrets Plugin for Vercel allows you to dynamically generate Vercel API tokens through Vault.\n\n## Why?\n\nIt is useful for more advanced CI/CD use cases where the common\n[Vercel git integration](https://vercel.com/docs/concepts/deployments/git/vercel-for-github) is not being utilised. That is, Vercel might not even have access to your VCS and you will need to push instead of pull.\n\nWith this plugin, the CI/CD pipeline should:\n\n- Authenticate to Vault through a number of means. See [hashicorp/vault-action docs](https://github.com/hashicorp/vault-action#authentication-methods) for full list of available methods, such as:\n    - AppRole\n    - JWT OIDC\n    - A pre-defined token\n- Call the plugin to generate a short-lived Vercel token. TTL and scope (Vercel team) for the token are user-configurable.\n- Run the actual deployment pipeline, such as [Github Actions for Vercel](https://vercel.com/guides/how-can-i-use-github-actions-with-vercel)\n- After token lifetime runs out, Vault revokes the token automatically.\n\n## Example\n\nHere's a full example of a Github Actions pipeline utilising this plugin:\n\n```\nname: Vercel Preview Deployment\nenv:\n  VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}\n  VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}\non:\n  push:\n    branches-ignore:\n      - main\n\njobs:\n  Deploy-Preview:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Import Secrets\n        id: secrets\n        uses: hashicorp/vault-action@65d7a12a8098b0aa7fcfdf22ad850c051f8b3ccb # v2.7.2\n        with:\n          url: ${{ secrets.VAULT_ADDR }}\n          method: approle\n          roleId: ${{ secrets.VAULT_ROLE_ID }}\n          secretId: ${{ secrets.VAULT_SECRET_ID }}\n          secrets: |\n            vercel-secrets/token bearer_token | VERCEL_TOKEN\n\n      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3\n\n      - name: Install Vercel CLI\n        run: npm install --global vercel@latest\n\n      - name: Pull Vercel Environment Information\n        run: vercel pull --yes --environment=preview --token=${{ steps.secrets.outputs.VERCEL_TOKEN }}\n\n      - name: Build Project Artifacts\n        run: vercel build --token=${{ steps.secrets.outputs.VERCEL_TOKEN }}\n\n      - name: Deploy Project Artifacts to Vercel\n        run: vercel deploy --prebuilt --token=${{ steps.secrets.outputs.VERCEL_TOKEN }}\n```\n\n## Project scope\n\nCurrently this project is scoped for \"Hobby\" and \"Pro\" Vercel accounts. This means you can create tokens that:\n\n- Hobby: have *full admin level access* to your Vercel account.\n- Pro: have project-level access only. Applicable when token creation request is provided with the Token ID parameter.\n\nEnterprise plan features, such as these, are currently scoped out:\n\n- Granular token-specific permissions\n\nI don't have an Enterprise plan at hand. Contributions are welcome, of course!\n\n## Getting started\n\nGet started by following the documentation:\n\n- [Running the plugin locally](./docs/development.md)\n- [Configuring and generating tokens with the plugin](./docs/configuration.md)\n- [Installing the plugin to an existing Vault installation](./docs/install.md)\n\n## Contributing\n\nAll contributions are welcome! Please see [contribution guidelines](./CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevilledev%2Fvault-plugin-secrets-vercel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthevilledev%2Fvault-plugin-secrets-vercel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevilledev%2Fvault-plugin-secrets-vercel/lists"}