{"id":50216392,"url":"https://github.com/rogerchappel/pastevault","last_synced_at":"2026-05-26T09:04:35.432Z","repository":{"id":355524403,"uuid":"1227130026","full_name":"rogerchappel/pastevault","owner":"rogerchappel","description":"Local-first TypeScript CLI for searchable clipboard and snippet history with secret redaction by default.","archived":false,"fork":false,"pushed_at":"2026-05-04T02:28:28.000Z","size":43,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-04T04:23:38.281Z","etag":null,"topics":["cli","clipboard","developer-tools","local-first","redaction","snippets","typescript"],"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/rogerchappel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"ROADMAP.md","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-05-02T08:45:17.000Z","updated_at":"2026-05-04T02:27:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rogerchappel/pastevault","commit_stats":null,"previous_names":["rogerchappel/pastevault"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rogerchappel/pastevault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fpastevault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fpastevault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fpastevault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fpastevault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rogerchappel","download_url":"https://codeload.github.com/rogerchappel/pastevault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fpastevault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33512350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: 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":["cli","clipboard","developer-tools","local-first","redaction","snippets","typescript"],"created_at":"2026-05-26T09:04:23.420Z","updated_at":"2026-05-26T09:04:35.413Z","avatar_url":"https://github.com/rogerchappel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pastevault\n\n`pastevault` is a local-first TypeScript CLI for keeping developer clipboard history and reusable snippets close at hand. It is intentionally boring about privacy: snippets live in a JSON file on your machine, secret-looking values are detected, and command output hides them unless you explicitly ask to reveal them.\n\nIt is useful for prompt fragments, PR text, shell commands, review notes, deploy checklists, and any other small text you copy often.\n\n\u003e MVP note: pastevault is fixture/import friendly today. It does not install a background clipboard watcher yet; use `pastevault add`, `pastevault add --stdin`, `pastevault capture-file`, or `pastevault import` to feed it text.\n\n## Install\n\n```bash\nnpm install -g pastevault\n```\n\nFor local development:\n\n```bash\nnpm install\nnpm run build\nnode dist/cli.js --help\n```\n\n## Quickstart\n\n```bash\n# Import deterministic fixture history\npastevault import fixtures/sample-history.json --store ./.pastevault/vault.json\n\n# Add snippets manually\npastevault add \"npm run check \u0026\u0026 npm test\" --tag ci --pin\nprintf 'Ship note: keep it local-first' | pastevault add --stdin --tag notes\n\n# Search and list\npastevault search deploy --store ./.pastevault/vault.json\npastevault list --limit 10 --json\npastevault palette\n\n# Pin, show, and remove\npastevault pin abc123\npastevault show abc123\npastevault rm abc123\n```\n\n## Secret-safe by default\n\nSecret-looking content is stored locally so you can recover what you copied, but output is redacted unless `--reveal` is supplied for that command.\n\n```bash\npastevault add \"export API_KEY=super-secret-value-12345\"\npastevault list          # export [redacted:generic-secret-assignment]\npastevault list --reveal # shows the original text\n```\n\nDetected patterns include GitHub tokens, Slack tokens, AWS access key IDs, private keys, bearer tokens, JWT-like values, and common `api_key=...` / `password=...` assignments.\n\n## Commands\n\n| Command | Purpose |\n| --- | --- |\n| `add \u003ctext\u003e` / `add --stdin` | Add a snippet from args or standard input. |\n| `import \u003cfile.json\u003e` | Import fixture-friendly arrays or `{ \"items\": [...] }`. |\n| `list` | Show recent snippets; pinned items float first. |\n| `search \u003cquery\u003e` | Search text, notes, and tags. |\n| `palette` | Compact quick-paste style listing. |\n| `show \u003cid\u003e` | Show one snippet. |\n| `pin` / `unpin` | Toggle pin status. |\n| `rm` | Remove one snippet. |\n| `secrets` | Audit snippets with secret findings, redacted. |\n| `stats` | Print count, pins, secret count, and tags. |\n| `export` | Emit a redacted JSON export unless `--reveal` is used. |\n| `redact \u003ctext\u003e` | Redact text without storing it. |\n| `capture-file \u003cpath\u003e` | Add a text file as a clipboard-like capture. |\n\nGlobal options include `--store \u003cpath\u003e`, `--json`, `--limit \u003cn\u003e`, `--tag \u003cname\u003e`, `--pinned`, and `--reveal`.\n\n## Local-first guarantees\n\n- No telemetry.\n- No background network calls.\n- No cloud sync.\n- No password-manager claims.\n- The default store is `$XDG_DATA_HOME/pastevault/vault.json` or `~/.local/share/pastevault/vault.json`.\n- Writes are atomic and create the vault file with user-only permissions where the platform honors POSIX modes.\n\n## Development\n\n```bash\nnpm test\nnpm run check\nnpm run build\nnpm run smoke\nbash scripts/validate.sh\n```\n\nA real CLI smoke is also easy to run:\n\n```bash\ntmp=\"$(mktemp -d)\"\nnode dist/cli.js import fixtures/sample-history.json --store \"$tmp/vault.json\"\nnode dist/cli.js search deploy --store \"$tmp/vault.json\"\n```\n\n## What pastevault is not\n\nIt is not a password manager, secret vault, or cross-device sync product. If you paste real credentials into it, treat the local vault file with the same care as any other sensitive developer artifact.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogerchappel%2Fpastevault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frogerchappel%2Fpastevault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogerchappel%2Fpastevault/lists"}