{"id":51206717,"url":"https://github.com/raiderrobert/keyser","last_synced_at":"2026-06-28T03:30:36.321Z","repository":{"id":362598598,"uuid":"1259744144","full_name":"raiderrobert/keyser","owner":"raiderrobert","description":"Environment variables meet macOS Keychain — a Rust port of envchain.","archived":false,"fork":false,"pushed_at":"2026-06-05T02:27:16.000Z","size":42,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T04:07:42.863Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","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/raiderrobert.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":null,"dco":null,"cla":null}},"created_at":"2026-06-04T20:16:40.000Z","updated_at":"2026-06-05T02:27:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/raiderrobert/keyser","commit_stats":null,"previous_names":["raiderrobert/keyser"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/raiderrobert/keyser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiderrobert%2Fkeyser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiderrobert%2Fkeyser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiderrobert%2Fkeyser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiderrobert%2Fkeyser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raiderrobert","download_url":"https://codeload.github.com/raiderrobert/keyser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiderrobert%2Fkeyser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34876271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"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":[],"created_at":"2026-06-28T03:30:35.747Z","updated_at":"2026-06-28T03:30:36.313Z","avatar_url":"https://github.com/raiderrobert.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# keyser\n\n\u003e \"The greatest trick your secrets ever played was convincing the world they didn't exist.\"\n\nA Rust CLI that stores environment variables in macOS Keychain and injects them into subprocesses at runtime. A modern, maintained port of [envchain](https://github.com/sorah/envchain).\n\n## Why?\n\nPutting secrets in `.bashrc`, `.env` files, or shell history is a security risk. `keyser` stores them in macOS Keychain (encrypted, protected by your login password or Touch ID) and injects them only when you ask.\n\n## Install\n\n```sh\n# From source\ncargo install --path .\n\n# Or via the install script\ncurl -fsSL https://raw.githubusercontent.com/raiderrobert/keyser/main/install.sh | sh\n```\n\n## Usage\n\n### Save secrets\n\n```sh\nkeyser --set aws AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY\n# Prompts for each value interactively\n```\n\nPipe values for scripted use:\n\n```sh\necho \"my-secret-key\" | keyser --set aws AWS_SECRET_ACCESS_KEY\n```\n\nUse `--noecho` to hide input:\n\n```sh\nkeyser --set --noecho aws AWS_SECRET_ACCESS_KEY\n```\n\n### Run commands with secrets\n\n```sh\nkeyser aws terraform plan\nkeyser aws s3 ls\n```\n\nMultiple namespaces at once:\n\n```sh\nkeyser aws,github gh pr create\n```\n\n### List\n\n```sh\n# List all namespaces\nkeyser --list\n\n# List keys in a namespace\nkeyser --list aws\n\n# Show values too\nkeyser --list aws -v\n```\n\n### Remove\n\n```sh\nkeyser --unset aws AWS_ACCESS_KEY_ID\n```\n\n## How it works\n\nEach secret is stored as a generic password in your macOS login Keychain:\n\n- **Service:** `keyser-\u003cnamespace\u003e`\n- **Account:** the environment variable name\n- **Password:** the value\n\nItems are visible in Keychain Access.app and protected by your login password. iCloud sync is explicitly disabled.\n\n## Differences from envchain\n\n- Written in Rust (envchain is C)\n- Uses modern `SecItem*` APIs (envchain uses deprecated `SecKeychain*` APIs)\n- Own Keychain namespace (`keyser-` prefix, not `envchain-`)\n- Handles piped/multiline input correctly\n- No duplicate namespaces in `--list`\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraiderrobert%2Fkeyser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraiderrobert%2Fkeyser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraiderrobert%2Fkeyser/lists"}