{"id":50866387,"url":"https://github.com/la3rence/rist","last_synced_at":"2026-06-15T01:38:35.577Z","repository":{"id":363522827,"uuid":"1261870205","full_name":"la3rence/rist","owner":"la3rence","description":"Rist, a simple Redis GUI Client.","archived":false,"fork":false,"pushed_at":"2026-06-11T17:14:42.000Z","size":2389,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T01:37:53.328Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/la3rence.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-07T09:05:42.000Z","updated_at":"2026-06-11T17:14:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/la3rence/rist","commit_stats":null,"previous_names":["la3rence/rist"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/la3rence/rist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Frist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Frist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Frist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Frist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/la3rence","download_url":"https://codeload.github.com/la3rence/rist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Frist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34344440,"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-14T02:00:07.365Z","response_time":62,"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-15T01:38:34.840Z","updated_at":"2026-06-15T01:38:35.571Z","avatar_url":"https://github.com/la3rence.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rist\n\nA quiet cross-platform Redis desktop client built with Electron, React, TypeScript, ioredis, and ssh2.\n\n## Product Direction\n\n- Single-node and Redis Cluster connections.\n- Optional SSH Tunnel for private Redis instances.\n- Non-blocking key browsing with `SCAN` instead of `KEYS`.\n- Preview for strings, hashes, lists, sets, sorted sets, and streams.\n- Basic create, update, delete, and refresh flows.\n- Minimal UI with dense navigation, quiet colors, and production-safe confirmations.\n\n## Scripts\n\n```bash\npnpm install\npnpm dev\npnpm typecheck\npnpm build\n```\n\n## Architecture\n\n- `src/main`: Electron main process, Redis connections, SSH tunnel lifecycle, IPC handlers.\n- `src/preload`: Safe renderer bridge exposed as `window.redisGui`.\n- `src/renderer`: React UI for connections, key browsing, and value preview.\n- `src/shared`: Shared TypeScript contracts between processes.\n\n## Notes\n\nSaved connection profiles are stored locally and encrypted with Electron `safeStorage` when available.\n\n### macOS signing without Apple Developer ID\n\nOn macOS, `safeStorage` creates a `Rist Safe Store` item in Keychain. Pure ad-hoc signatures can make macOS ask for the login keychain password after every update because each build looks like a different app to Keychain.\n\nWithout an Apple Developer ID, keep using the same self-signed code-signing certificate for every macOS build:\n\n```bash\npnpm mac:make-cert\n```\n\nThen add these GitHub Actions secrets:\n\n- `MAC_CODESIGN_CERT_BASE64`: contents of `release/codesign/rist-local-codesign.p12.base64.txt`\n- `MAC_CODESIGN_CERT_PASSWORD`: the `.p12` password\n- `MAC_CODESIGN_CERT_NAME`: `Rist Local Code Signing`\n\nFor a local signed build:\n\n```bash\nCSC_LINK=\"file://$PWD/release/codesign/rist-local-codesign.p12\" \\\nCSC_KEY_PASSWORD=\"\u003cpassword\u003e\" \\\nCSC_NAME=\"Rist Local Code Signing\" \\\npnpm dist:mac\n```\n\nThe first upgrade from an ad-hoc build to the self-signed build may still ask once, or require deleting the old `Rist Safe Store` item from Keychain. Subsequent builds should keep a stable signing identity as long as the same `.p12` is reused.\n\nFor macOS users, try the command below to skip Gatekeeper for unsigned builds.\n\n```sh\nxattr -dr com.apple.quarantine /path/to/Rist.app\n```\n\nOr open the app and go to System Settings - Privacy \u0026 Security - Open Anyway.\nThis is an Open Souce app. Feel free to check the source code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fla3rence%2Frist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fla3rence%2Frist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fla3rence%2Frist/lists"}