{"id":49085709,"url":"https://github.com/un/better-vercel-env","last_synced_at":"2026-04-20T15:33:58.373Z","repository":{"id":338717301,"uuid":"1158254649","full_name":"un/better-vercel-env","owner":"un","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-16T01:44:49.000Z","size":499,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-16T08:54:53.890Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/un.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-15T03:32:01.000Z","updated_at":"2026-02-16T01:44:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/un/better-vercel-env","commit_stats":null,"previous_names":["un/better-vercel-env"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/un/better-vercel-env","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/un%2Fbetter-vercel-env","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/un%2Fbetter-vercel-env/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/un%2Fbetter-vercel-env/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/un%2Fbetter-vercel-env/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/un","download_url":"https://codeload.github.com/un/better-vercel-env/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/un%2Fbetter-vercel-env/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32053289,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-04-20T15:33:56.981Z","updated_at":"2026-04-20T15:33:58.350Z","avatar_url":"https://github.com/un.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vercel Better Env (OpenTUI)\n\nTerminal-first environment variable manager for Vercel projects.\n\n## Requirements\n\n- `vercel` CLI installed and authenticated.\n- Bun installed (runtime for OpenTUI launch path).\n\n## Auth Setup\n\n```bash\nvercel login\nvercel whoami\n```\n\nIf you work across teams:\n\n```bash\nvercel switch\n```\n\n## Quickstart\n\n### Run with npx\n\n```bash\nnpx vercel-better-env\n```\n\n### Run from source\n\n```bash\nnpm install\nnpm run tui\n```\n\n### Validate locally\n\n```bash\nnpm run verify\n```\n\n## Core Flow\n\n1. Auth status screen (`vercel whoami` backed).\n2. Scope and project picker.\n3. Matrix editor for keys, value pool, and assignments.\n4. Live change log + per-row undo.\n5. Confirm phrase gate before apply.\n6. Apply report with done/failed/skipped grouping.\n\n## Keyboard Controls\n\n- Global: `q` quit, `r` refresh auth, `?` help.\n- Picker: `tab` scope, `j/k` project, `enter` open editor.\n- Editor:\n  - Navigation: `j/k` row, `h/l` value, `[` / `]` environment.\n  - Edits: `e` key, `a` add value, `v` edit value, `x` delete value.\n  - Assignment: `s` set, `u` unset.\n  - Other: `z` undo row, `p` apply.\n- Confirm: type exact phrase, `enter` apply, `esc` cancel.\n- Report: `enter` back to editor.\n\n## Safety Behavior\n\n- Uses Vercel CLI reads/writes (`env pull`, `env add`, `env rm`).\n- Baseline hash is revalidated before writes.\n- In-flight apply lock prevents concurrent applies per project+scope.\n- Reserved runtime keys are hidden and ignored (`VERCEL_*`, `VERCEL`, `NX_DAEMON`, turbo keys).\n- Apply gate requires exact confirm phrase via shared validator.\n\n## Current Limitations\n\n- Custom environment writes are skipped in CLI apply path.\n- Branch-specific writes are capability-gated and may be read-only.\n- Retarget/rename planner kinds outside supported CLI actions are reported as skipped.\n\n## Troubleshooting\n\n- Unauthenticated screen: rerun `vercel login`, then press `r` in app.\n- Missing projects: verify scope with `vercel whoami` / `vercel switch`.\n- Apply conflict: reload snapshot by re-entering project, then apply again.\n- Runtime launch failure: confirm Bun is installed and available on `PATH`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fun%2Fbetter-vercel-env","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fun%2Fbetter-vercel-env","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fun%2Fbetter-vercel-env/lists"}