[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-105337":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":41,"readmeContent":42,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":43,"lastSyncTime":44,"discoverSource":45},105337,"kensaku","yjid\u002Fkensaku","yjid","Search inside documents, code, and even screenshots - instantly and locally. A free, open-source file launcher with OCR, semantic search, and MCP agent access.","",null,"Rust",341,24,3,9,0,90,270,88.61,"MIT License",false,"master",true,[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"ai-agents","desktop","desktop-search","file-search","full-text-search","launcher","local-first","mcp","ocr","open-source","privacy","rust","search","semantic-search","tauri","windows","2026-11-01 00:14:32","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Ficon.png\" width=\"112\" height=\"112\" alt=\"Kensaku\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Kensaku \u003Cspan title=\"kensaku = search, in Japanese\">検索\u003C\u002Fspan>\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cb>Fast, light, and efficient. Find anything on your computer.\u003C\u002Fb>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  Search 100,000 file names in about a millisecond, using roughly 12 MB of memory.\u003Cbr\u002F>\n  Search inside documents, images, and code too. Nothing leaves your machine.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Freleases\u002Flatest\">\u003Cimg alt=\"Latest release\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fyjid\u002Fkensaku?style=for-the-badge\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Freleases\u002Flatest\">\u003Cimg alt=\"Downloads\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fyjid\u002Fkensaku\u002Ftotal?style=for-the-badge\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"MIT license\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-111111?style=for-the-badge\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg alt=\"CI\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fyjid\u002Fkensaku\u002Fci.yml?branch=master&style=for-the-badge\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#install\">Install\u003C\u002Fa> ·\n  \u003Ca href=\"#what-kensaku-does-that-the-others-dont\">Why Kensaku\u003C\u002Fa> ·\n  \u003Ca href=\"#features\">Features\u003C\u002Fa> ·\n  \u003Ca href=\"#performance\">Performance\u003C\u002Fa> ·\n  \u003Ca href=\"#connect-ai-agents-mcp\">MCP\u003C\u002Fa> ·\n  \u003Ca href=\"docs\u002FUSAGE.md\">Docs\u003C\u002Fa> ·\n  \u003Ca href=\"#contributing\">Contribute\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fhero.png\" width=\"100%\" alt=\"Kensaku — find anything on your computer\" \u002F>\n\u003C\u002Fp>\n\n---\n\n## Find it the way you remember it\n\nYou don't remember the filename. You remember what was in it.\n\n- The PDF about database indexing, saved as `notes-final-2.pdf`.\n- The log line from the failed deploy, somewhere in a folder of logs.\n- The screenshot with a CUDA error, which has no useful name at all.\n\nType what you remember. Kensaku searches names, text inside files, and meaning, and shows the match with the words highlighted. Open it with Enter.\n\n## What Kensaku does that the others don't\n\nFilename tools are everywhere. Reading *inside* your files — locally, instantly, and for free — is not.\n\n| | Kensaku | Everything | Listary | PowerToys Run |\n|---|---|---|---|---|\n| Filename search, milliseconds | ✅ | ✅ | ✅ | ✅ |\n| Full text inside PDF\u002FDOCX\u002FEPUB… | ✅ | ❌ | ❌ | ❌ |\n| Text inside screenshots & images (OCR) | ✅ | ❌ | ❌ | ❌ |\n| Find by meaning (\"the PDF about indexing\") | ✅ | ❌ | ❌ | ❌ |\n| Natural-language time (\"screenshots from last week\") | ✅ | ❌ | partial | ❌ |\n| Your AI agents can search it (MCP) | ✅ | ❌ | ❌ | ❌ |\n| Launcher behavior (summon, type, Enter) | ✅ | ❌ | ✅ | ✅ |\n| Open source (MIT) | ✅ | ❌ | ❌ | ✅ |\n\n*Spotlight and Raycast are excellent but macOS-only; Alfred's content search and AI are paid tiers. Kensaku is one app, three platforms, free and MIT-licensed.*\n\n**Three things worth trying on day one:**\n\n1. **Screenshot archaeology.** You know you saw that error in a screenshot. Kensaku read the pixels — search the error text.\n2. **Describe, don't recall.** \"big videos from last month\" is a valid query. No filters to click.\n3. **Give your AI agent eyes.** Claude or Cursor can search this same index over MCP — read-only, local, no cloud.\n\n## Features\n\n**Fast**\n- Filename search across ~100,000 files in a few milliseconds on a warm cache. Method and numbers are in [Performance](#performance).\n- Results update as you type. There is no separate search page.\n- Incremental indexing: changed files are picked up without rescanning the whole disk.\n\n**Finds more**\n- Names, full text, fuzzy matches that tolerate typos, and meaning, in one search.\n- Documents: PDF, DOCX, PPTX, XLSX, EPUB, ODT\u002FODS\u002FODP, RTF, plain text, code, and logs, including CJK text.\n- Images: text is read with PP-OCRv6 by default (no system install needed). An optional\n  higher-quality Indra engine (deskew, multi-script recognition, ~27 MB pack downloaded on\n  demand) and classic Tesseract are both selectable in Setup\u002FSettings.\n\n**Precise**\n- Filters and sort: Best match, Newest, Oldest, Largest, Name.\n- Time travel: \"last Tuesday\", \"3 days ago\", \"last week\", \"today\", \"yesterday\".\n- A query language when you want it (below).\n\n**A real launcher**\n- Starts hidden in the tray and summons with a keystroke. Recents are ranked by what you actually opened, and they survive restarts.\n- Space previews (Quick Look) for PDFs, images, and text. Grid or list layout. Full keyboard navigation.\n\n**Works with AI agents**\n- Compatible agents can search the same local index over MCP. Read-only by default. See [Connect AI agents](#connect-ai-agents-mcp).\n\n**Private**\n- No account, no telemetry, no cloud search. Your index stays in your OS config directory.\n\n**Pleasant to use**\n- Light and dark themes. Continuous-corner cards, a borderless search field, and hover details — a calm, native-feeling interface.\n- Right-click for open, show in folder, copy path, and details.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fsearch-dashboard.png\" width=\"100%\" alt=\"Kensaku search results\" \u002F>\n\u003C\u002Fp>\n\n### The query language\n\nFor scripts and precise searches:\n\n```\ntype:pdf invoice          ext:md in:\"~\u002FNotes\"       modified:7d\nsize:>10mb                path:\"client\u002F2026\"        lang:rust\nname:resume               content:\"timeout\"         re:\"fn \\w+_test\"\n-draft                    mode:exhaustive\n```\n\nFull reference: [docs\u002FUSAGE.md](docs\u002FUSAGE.md).\n\n## Install\n\nDownload the bundle for your system from the [latest release](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Freleases\u002Flatest).\n\n| Platform | Download |\n|---|---|\n| Windows | `Kensaku_\u003Cversion>_x64-setup.exe` or `.msi` |\n| macOS (Apple silicon and Intel) | `Kensaku_\u003Cversion>_universal.dmg` |\n| Linux | `.AppImage`, `.deb`, or `.rpm` |\n\nEvery release also ships `kensaku-cli` for the command line and a `SHA256SUMS` file so you can verify what you downloaded.\n\nBuilds are not yet code-signed, so macOS and Windows show a warning the first time. That is expected for an independent app, not a sign of a problem.\n\n- **Windows:** on the SmartScreen prompt, click **More info** → **Run anyway**.\n- **macOS:** open the app, then go to System Settings → Privacy & Security and click **Open Anyway**.\n\n[docs\u002FINSTALL.md](docs\u002FINSTALL.md) has the full steps.\n\n**First run:** choose the folders you want indexed, pick exclusions, and optionally download the OCR or model packs. Search works while the first scan runs.\n\n**Command line:** `kensaku-cli` ships with each release.\n\n```bash\nkensaku-cli search \"docker error\"\nkensaku-cli search \"invoice\" --ext pdf --since 30d\nkensaku-cli search \"resume\" --json\nkensaku-cli state\n```\n\n### Build from source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\ncd kensaku\nbun install\nbun run tauri build\n```\n\nYou need Rust (stable), Bun 1.1 or later, and your platform's webview libraries. See [docs\u002FINSTALL.md](docs\u002FINSTALL.md). A `Makefile` covers the common tasks: `make dev`, `make build`, `make test`, and `make reset`.\n\n## Connect AI agents (MCP)\n\nPoint an MCP client at the CLI:\n\n```json\n{\n  \"mcpServers\": {\n    \"kensaku\": { \"command\": \"kensaku-cli\", \"args\": [\"mcp\"] }\n  }\n}\n```\n\nFor clients that connect over HTTP, run `kensaku-cli serve`. It listens on loopback only and requires a bearer token stored in your config directory.\n\nResponses are budgeted in size, and file content is returned as data, never as instructions. Full guide: [docs\u002FAGENTS.md](docs\u002FAGENTS.md).\n\n## Performance\n\nSpeed is the point of Kensaku. Every number below was measured on a release build on Linux (8 vCPU, SSD) against a 100,000-file folder, and the harnesses are in [docs\u002FBENCHMARKS.md](docs\u002FBENCHMARKS.md).\n\n| What | Result |\n|---|---|\n| Name search, in memory (avg of 8 queries) | **1.3 ms** (best 0.5 ms, worst 2.4 ms) |\n| Index 101,101 files, first run | 184 s, peak 183 MB |\n| Re-index with nothing changed | **0.56 s** |\n| Memory for file names and metadata, 100k files | ~12 MB |\n\nSame folder, same machine, filename search, cold process each run:\n\n| Tool | \"invoice\" | \"deploy_error\" |\n|---|---|---|\n| Kensaku (in memory, no start-up) | 1.3 ms avg | 1.3 ms avg |\n| plocate | 34 ms | 6 ms |\n| fd | 109 ms | 98 ms |\n\nThe two rows aren't a perfect match: Kensaku's search is fuzzy and runs inside a running app, while plocate and fd start a new program for each search. Spotlight, Everything, and Listary haven't been measured yet, and these numbers come from Linux, not macOS or Windows.\n\n**On Windows (1.0.6, release build, Windows 11):** the installer is **9 MB**, and with a 24,500-file index loaded the app idles in the tray at **about 20 MB of private memory** — roughly 150 MB while you're actively browsing results. It trims back down the moment you hide it.\n\nIndexing is a single pass: each file is read once and feeds both the name and text indexes. Work is queued in bounded batches, so memory stays flat on large folders.\n\n## Privacy and security\n\n- **Local by default.** No telemetry, no account, no cloud search. Zero bytes leave your machine.\n- **You choose what is indexed.** Watched folders and exclusions are yours. Hidden files and common build folders are skipped by default, and credential files such as `.pem`, `.key`, and `.pfx` are excluded.\n- **Bounded processing.** Each file has a time limit and a size limit, so one bad file can't stall the index.\n- **Read-only agent access.** The agent tools cannot change files. `reindex` is off unless you enable it.\n- **Treat the index as sensitive.** It contains file names and extracted text. Don't sync it to a shared location.\n\nFull threat model: [SECURITY.md](SECURITY.md).\n\n## Status\n\n**Shipping now (1.0.6)**\n\n- Desktop app for Windows, macOS, and Linux: light and dark themes, grid and list results, infinite scroll, thumbnails, hover details, right-click actions\n- True launcher behavior: hidden-to-tray start, global summon keystroke, memory trimmed while hidden\n- Recents ranked by what you actually opened, persisted across restarts\n- Search by name, content, meaning, and typo-tolerant matches\n- Documents, code, and images (with OCR), CJK-aware\n- Incremental indexing that tracks renames and deletes\n- Agent access over MCP and loopback HTTP, with one-click setup for Claude and Cursor\n- `.gitignore` and `.cursorignore` respected by default\n\n**Known limitations**\n\n- Builds are not yet code-signed, and the auto-updater is not wired up yet.\n- OCR: PP-OCRv6 by default (bundled runtime, ~6 MB model pack downloaded on first run); optional Indra engine with\n  deskew and multi-script recognition (~27 MB pack, downloaded on demand). Intel Macs fall back to Tesseract.\n  JPEG 2000, fax and JBIG2 scans are not decoded yet.\n- Thumbnails cover image files only. Documents and code show type icons.\n- Visual search is a beta model download and is not part of search results yet.\n- Windows gets the most real-world testing today. macOS and Linux builds ship from CI and would benefit from more hands on them — see below.\n\n## What might come next\n\nKensaku is actively built, and the roadmap bends toward what people ask for. Some directions being explored:\n\n- **A glass theme — and more customization.** A translucent, vibrancy-style finish, with adjustable density, accents, and per-surface control. The current light\u002Fdark pair is the floor, not the ceiling. → [vote & discuss](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fdiscussions\u002F36)\n- **App search and launch.** Type \"term\", open Terminal. Installed applications join the same instant index, so the launcher stops where your files end and your tools begin. → [vote & discuss](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fdiscussions\u002F37)\n- **Internet quick search.** For the things your files can't answer — opt-in, off by default, clearly separated from local results so the local-first promise stays intact. → [vote & discuss](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fdiscussions\u002F38)\n- **Ask your files questions.** An answers layer on top of the index: \"what was the design retainer?\" answered from your own documents. Local-first by default, cloud models only if you opt in with a key. → [vote & discuss](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fdiscussions\u002F39)\n- **Auto-updater & in-app updates.** A \"check for updates\" button is in the app now; a signed auto-updater is the real answer and needs signing + infra first. → [vote & discuss](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fdiscussions\u002F40)\n\nNone of this ships on a promise — it ships in the order the community pushes. **You tell us:** open a [discussion](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fdiscussions) with your use case, or upvote an existing idea in the [issue tracker](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fissues). The loudest real-world need gets the next slot.\n\n## Contributing\n\nKensaku is young, MIT-licensed, and built by people who wanted a better launcher. Every kind of help moves it forward:\n\n- **Use it and break it.** Bug reports with steps to reproduce are the single most valuable contribution right now — especially from macOS and Linux users.\n- **Shape the roadmap.** Feature ideas land in [Discussions](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fdiscussions); the ones with real use cases behind them get built first.\n- **Good first issues.** Check the [issue tracker](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fissues) for tasks scoped for a first contribution.\n- **Search quality.** Ranking, typo tolerance, and new extractors ([docs\u002FEXTRACTORS.md](docs\u002FEXTRACTORS.md) shows how to add one).\n- **Agents and integrations.** MCP tooling and guides ([docs\u002FAGENTS.md](docs\u002FAGENTS.md)).\n- **Docs, translations, and screenshots.** [docs\u002FCONTRIBUTING.md](docs\u002FCONTRIBUTING.md) has the setup: `bun install`, `make dev`, `make test` (240+ Rust tests run on every push).\n- **Security.** Please report vulnerabilities privately via [SECURITY.md](SECURITY.md).\n\nIf Kensaku saves you ten minutes, [star the repository](https:\u002F\u002Fgithub.com\u002Fyjid\u002Fkensaku\u002Fstargazers) — it's the only marketing an independent app has, and it's how the next contributor finds us.\n",2,"2026-10-31 04:26:29","CREATED_QUERY"]