2026-10-12 17:32:56 +02:00
|
|
|
# searchi
|
|
|
|
|
|
|
|
|
|
**Find what matters. Locally.**
|
2026-10-12 15:45:57 +02:00
|
|
|
|
|
|
|
|
Local desktop search for Windows, macOS and Linux. Under active development;
|
|
|
|
|
production readiness is tracked in [the roadmap](docs/ROADMAP.md).
|
|
|
|
|
|
|
|
|
|
## Architecture
|
|
|
|
|
|
|
|
|
|
`crates/searchi-core` owns persistent indexing and retrieval. `crates/searchi-cli`
|
|
|
|
|
provides a headless interface. `apps/desktop` hosts the Tauri desktop app.
|
2026-10-12 17:26:14 +02:00
|
|
|
Search combines indexed filenames, SQLite FTS5 keyword retrieval, and real
|
|
|
|
|
Google EmbeddingGemma 2 semantic search with a persistent HNSW index. PDF pages
|
|
|
|
|
and DOCX paragraphs retain source locations. Image, audio, and video search remain
|
|
|
|
|
planned; the provisioned media projector is not yet used. Granola is not required.
|
|
|
|
|
The desktop UI is primary; the CLI builds separately without GUI dependencies.
|
2026-10-12 15:45:57 +02:00
|
|
|
|
2026-10-12 17:26:14 +02:00
|
|
|
Production uses supported hardware acceleration with CPU fallback. All testing
|
|
|
|
|
in the Windows development VM uses CPU only. Indexed content stays
|
2026-10-12 15:45:57 +02:00
|
|
|
local. Treat the index as sensitive: it contains extracted document text.
|
|
|
|
|
|
2026-10-12 17:26:14 +02:00
|
|
|
The desktop automatically downloads and verifies missing Google artifacts
|
|
|
|
|
(approximately 865 MB), reuses its local cache, and warms the query session in
|
|
|
|
|
the background. Development builds must build and stage the native worker first;
|
|
|
|
|
production installers and signing remain release gates. First-query performance
|
|
|
|
|
is measured separately from repeated-query performance.
|
|
|
|
|
|
|
|
|
|
## Copy-and-paste setup prompt
|
|
|
|
|
|
|
|
|
|
Paste this into your coding agent:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Set up Searchi from https://tea.karlcom.de/karl/searchi.git in a new searchi
|
|
|
|
|
directory, or reuse the existing checkout without overwriting local changes.
|
|
|
|
|
Read AGENTS.md, SKILLS.md, docs/ROADMAP.md, and apps/desktop/README.md first.
|
|
|
|
|
Inspect the OS and installed tools. Install missing supported prerequisites:
|
|
|
|
|
Git, stable Rust, Node.js 24+, Python 3, CMake, native C/C++ tools and Tauri's
|
|
|
|
|
platform dependencies. Preserve existing credentials and never print secrets.
|
|
|
|
|
From the repository root, build and stage the pinned Google runtime:
|
|
|
|
|
python tools/embeddinggemma2/build_runtime.py --backend cpu --jobs 2
|
|
|
|
|
python tools/embeddinggemma2/stage_runtime.py --backend cpu
|
|
|
|
|
Run cargo test --workspace --locked, cargo fmt --all -- --check, and
|
|
|
|
|
cargo clippy --workspace --all-targets --locked -- -D warnings.
|
|
|
|
|
Run cargo test --manifest-path apps/desktop/src-tauri/Cargo.toml --locked.
|
|
|
|
|
In apps/desktop run npm ci, npm test, npm run format:check, and npm run build.
|
|
|
|
|
For Karl's Windows VM set SEARCHI_FORCE_CPU=1 and
|
|
|
|
|
WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--disable-gpu before tests or launch.
|
|
|
|
|
Launch the real app using npm run tauri dev from apps/desktop. Allow automatic
|
|
|
|
|
verified Google model setup; never substitute another model or mock results.
|
|
|
|
|
Ask which folders I want indexed; do not index my whole home automatically.
|
|
|
|
|
Verify filename and remembered-content searches on my selected files, including
|
|
|
|
|
persistence after restart. Report actual checks and blockers. Do not publish a
|
|
|
|
|
release or claim production readiness, GPU validation, or untested OS coverage.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This is developer setup, not an installer. See the [desktop guide](apps/desktop/README.md)
|
|
|
|
|
and [official Tauri prerequisites](https://v2.tauri.app/start/prerequisites/).
|
|
|
|
|
The worker builder also supports `auto`, `metal`, `vulkan`, and `cuda`; those
|
|
|
|
|
require platform SDKs and separate hardware validation.
|
|
|
|
|
|
2026-10-12 15:45:57 +02:00
|
|
|
## Development
|
|
|
|
|
|
|
|
|
|
Install stable Rust and the platform's C/C++ build prerequisites. Run:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
cargo test --workspace
|
|
|
|
|
cargo fmt --all -- --check
|
|
|
|
|
cargo clippy --workspace --all-targets -- -D warnings
|
|
|
|
|
cargo run -p searchi-cli -- --help
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Desktop development instructions live in `apps/desktop/README.md`.
|
2026-10-12 17:26:14 +02:00
|
|
|
Agent constraints and workflows live in [AGENTS.md](AGENTS.md) and
|
|
|
|
|
[SKILLS.md](SKILLS.md). Use Node.js 24+ for frontend state tests.
|
2026-10-12 17:32:56 +02:00
|
|
|
The approved visual identity and desktop direction live in [the brand guide](docs/BRAND.md).
|
2026-10-12 17:26:14 +02:00
|
|
|
|
|
|
|
|
For a headless build, run `cargo build --release --locked -p searchi-cli`.
|
|
|
|
|
No Node, Tauri, or WebView is needed. Semantic commands additionally need the
|
|
|
|
|
native worker and Google assets; `searchi setup` provisions the model cache.
|
2026-10-12 16:07:53 +02:00
|
|
|
Platform and CI details live in [the build guide](docs/BUILDING.md).
|
2026-10-12 15:45:57 +02:00
|
|
|
Native CI builds must pass on all supported systems before release. Cross-platform
|
|
|
|
|
source support does not imply signed macOS installers can be built on Windows.
|
|
|
|
|
|
|
|
|
|
## Release policy
|
|
|
|
|
|
|
|
|
|
Do not publish until the roadmap's release gates have evidence. Record benchmark
|
|
|
|
|
hardware, corpus size, cold/warm state and p95 latency. Signing credentials are
|
|
|
|
|
supplied through CI secrets, never source control.
|
2026-10-12 17:26:14 +02:00
|
|
|
|
|
|
|
|
Licensed under [MIT](LICENSE). Repository author: Karl.
|