{"id":14911855,"url":"https://github.com/frost-beta/sisi","last_synced_at":"2025-09-23T03:32:20.009Z","repository":{"id":257104595,"uuid":"857272396","full_name":"frost-beta/sisi","owner":"frost-beta","description":"Semantic Image Search CLI tool.","archived":false,"fork":false,"pushed_at":"2024-09-16T08:30:30.000Z","size":82,"stargazers_count":423,"open_issues_count":1,"forks_count":13,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-23T20:03:52.415Z","etag":null,"topics":["maching-learning","mlx","nodejs"],"latest_commit_sha":null,"homepage":"","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/frost-beta.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}},"created_at":"2024-09-14T07:56:56.000Z","updated_at":"2024-09-23T19:47:37.000Z","dependencies_parsed_at":"2024-09-14T21:56:52.053Z","dependency_job_id":"654e9fd6-4639-48b2-9ca5-aaa8470e0ac7","html_url":"https://github.com/frost-beta/sisi","commit_stats":null,"previous_names":["frost-beta/sisi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frost-beta%2Fsisi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frost-beta%2Fsisi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frost-beta%2Fsisi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frost-beta%2Fsisi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frost-beta","download_url":"https://codeload.github.com/frost-beta/sisi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233921129,"owners_count":18751180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["maching-learning","mlx","nodejs"],"created_at":"2024-09-22T20:01:16.857Z","updated_at":"2025-09-23T03:32:14.950Z","avatar_url":"https://github.com/frost-beta.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","\u003ca name=\"utility\"\u003e\u003c/a\u003eUtilities","Vision \u0026 Multimodal"],"sub_categories":[],"readme":"# Semantic Image Search CLI (sisi)\n\nCLI tool for semantic image search, locally without using third party APIs.\n\nPowered by [node-mlx](https://github.com/frost-beta/node-mlx), a machine\nlearning framework for Node.js.\n\nhttps://github.com/user-attachments/assets/66e6e437-c27b-48cf-80cc-a5a0c8c0bdfb\n\n## Supported platforms\n\nGPU support:\n\n* Macs with Apple Silicon\n\nCPU support:\n\n* x64 Macs\n* x64/arm64 Linux\n\n(No support for Windows yet, but I might try to make MLX work on it in future)\n\nFor platforms without GPU support, the index command will be much slower, and\nwill take many hours indexing tens of thousands of images. The index is only\nbuilt for new and modified files, so once your have done the initial building,\nupdating index for new images will be much easier.\n\n## Usage\n\nInstall:\n\n```console\nnpm install -g @frost-beta/sisi\n```\n\nCLI:\n\n```console\n━━━ Semantic Image Search CLI - 0.0.1-dev ━━━━━━━━━━━━━━━━\n\n  $ sisi \u003ccommand\u003e\n\n━━━ General commands ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n  sisi index \u003ctarget\u003e\n    Build or update index for images under target directory.\n\n  sisi list-index\n    List the directories in the index.\n\n  sisi remove-index \u003ctarget\u003e\n    Remove index for all items under target directory.\n\n  sisi search [--in #0] [--max #0] [--print] \u003cquery\u003e\n    Search the query string from indexed images.\n```\n\n## Examples\n\nBuild index for `~/Pictures/`:\n\n```console\nsisi index ~/Pictures/\n```\n\nSearch pictures from all indexed images:\n\n```console\nsisi search 'cat jumping'\n```\n\nSearch from the `~/Pictures/` directory:\n\n```console\nsisi search cat --in ~/Pictures/\n```\n\nSearch images with image:\n\n```console\nsisi search https://images.pexels.com/photos/45201/kitty-cat-kitten-pet-45201.jpeg\n```\n\nIt works with local files too:\n\n```console\nsisi search file:///Users/Your/Pictures/cat.jpg\n```\n\n## Under the hood\n\nThe index is built by computing the embeddings of images using the [CLIP\nmodel](https://github.com/openai/CLIP), and then stored in a binary JSON file.\n\nSearching the images is computing cosine similarities between the query string\nand the indexed embeddings. There is no database involved here, everytime you do\na search the computation is done for all the embeddings stored, which is very\nfast even when you have tens of thousands of pictures.\n\nThe JavaScript implementation of the CLIP model is in a separate module:\n[frost-beta/clip](https://github.com/frost-beta/clip).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrost-beta%2Fsisi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrost-beta%2Fsisi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrost-beta%2Fsisi/lists"}