2026-10-13 12:48:02 +02:00
|
|
|
# searchi on a Linux server
|
|
|
|
|
|
|
|
|
|
Use the headless version to search your local files from a terminal or connect
|
|
|
|
|
an AI agent through read-only MCP. It includes the Google EmbeddingGemma 2
|
|
|
|
|
worker, automatic CPU/GPU selection with CPU fallback, and FFmpeg helpers.
|
|
|
|
|
There is no desktop shell in this package.
|
|
|
|
|
|
|
|
|
|
## Install and prepare search
|
|
|
|
|
|
|
|
|
|
This initial x86-64 preview was checked on Ubuntu 24.04 in WSL. It requires
|
|
|
|
|
GLIBC 2.39, GLIBCXX 3.4.32 and CXXABI 1.3.13 or compatible newer runtime
|
|
|
|
|
versions. Older Linux distributions should build from source; this archive is
|
|
|
|
|
not an all-distribution compatibility claim.
|
|
|
|
|
|
|
|
|
|
Download into a new dedicated directory and verify before extracting:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
mkdir -p "$HOME/Applications/searchi"
|
|
|
|
|
cd "$HOME/Applications/searchi"
|
2026-10-13 22:42:06 +02:00
|
|
|
curl -A "Mozilla/5.0" -fLO https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-headless_0.1.6_linux-x86_64.tar.xz
|
|
|
|
|
curl -A "Mozilla/5.0" -fLO https://tea.karlcom.de/karl/searchi/releases/download/v0.1.7/searchi-headless_0.1.6_linux-x86_64.tar.xz.sha256
|
|
|
|
|
sha256sum -c searchi-headless_0.1.6_linux-x86_64.tar.xz.sha256
|
|
|
|
|
tar -xf searchi-headless_0.1.6_linux-x86_64.tar.xz
|
2026-10-13 12:48:02 +02:00
|
|
|
./searchi --help
|
|
|
|
|
./searchi setup --model-dir ./models
|
|
|
|
|
```
|
|
|
|
|
|
2026-10-13 22:42:06 +02:00
|
|
|
The package is approximately 109 MB. First model setup downloads approximately
|
2026-10-13 12:48:02 +02:00
|
|
|
865 MB and reuses verified cached assets. Keep the runtime libraries and media
|
|
|
|
|
helpers alongside the CLI. To use graphics acceleration, the system needs a
|
|
|
|
|
compatible Vulkan loader and graphics driver; otherwise search uses CPU.
|
|
|
|
|
|
|
|
|
|
Choose your own folder by replacing `/path/to/your/files` below:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
./searchi index --db ./searchi.sqlite --root /path/to/your/files
|
|
|
|
|
./searchi embed --db ./searchi.sqlite --model-dir ./models --embedding-worker ./searchi-gemma-worker
|
|
|
|
|
./searchi search --db ./searchi.sqlite 'what you remember' --model-dir ./models --embedding-worker ./searchi-gemma-worker
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Indexing names/content and embedding meaning are separate CLI steps. After
|
|
|
|
|
changing files, run both again to refresh their local index. Add `--code-only`
|
|
|
|
|
to search source implementations. For filenames/content without model inference,
|
|
|
|
|
omit both model arguments. `--json --performance` reports basic measurements;
|
|
|
|
|
`--debug-performance` enables detailed traces.
|
|
|
|
|
|
2026-10-13 22:42:06 +02:00
|
|
|
### Search spoken passages
|
|
|
|
|
|
|
|
|
|
Version 0.1.6 includes experimental local speech search. Download the additional
|
|
|
|
|
recognition assets (about 149 MB), then encode recognized passages alongside
|
|
|
|
|
Google's media embeddings:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
./searchi setup --speech --model-dir ./speech-models
|
|
|
|
|
./searchi embed --db ./searchi.sqlite --model-dir ./models --embedding-worker ./searchi-gemma-worker --speech-worker ./speech-runtime/searchi-speech-worker --speech-model-dir ./speech-models
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Use the same `search` command above. Spoken passages include estimated timestamps;
|
|
|
|
|
recognition can miss words, and results can be irrelevant when no matching content
|
|
|
|
|
exists. After changing files, repeat `index` and this speech-enabled `embed` command.
|
|
|
|
|
|
2026-10-13 12:48:02 +02:00
|
|
|
## Connect your local agent
|
|
|
|
|
|
|
|
|
|
Configure a stdio MCP client to run the absolute path to `searchi`, with these
|
|
|
|
|
arguments using absolute paths:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
mcp --db /absolute/path/searchi.sqlite --model-dir /absolute/path/models --embedding-worker /absolute/path/searchi-gemma-worker
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
MCP searches the prepared index and reads only its cited excerpts. It does not
|
|
|
|
|
index or mutate files. See [agent integration](AGENT-INTEGRATION.md).
|
|
|
|
|
|
|
|
|
|
## Recorded package evidence, 2026-10-13
|
|
|
|
|
|
2026-10-13 22:42:06 +02:00
|
|
|
Current package: [Linux headless 0.1.6](LINUX-SPEECH-0.1.6.md), including genuine
|
|
|
|
|
packaged Google/speech CPU retrieval and public download verification. The
|
|
|
|
|
following records retain older release evidence.
|
2026-10-13 17:25:37 +02:00
|
|
|
|
2026-10-13 12:48:02 +02:00
|
|
|
Headless component version 0.1.0 is supplied alongside desktop release 0.1.1.
|
|
|
|
|
All 89 selected engine/CLI and workspace lock/manifest files matched current
|
|
|
|
|
Git archive bytes before a locked offline native release rebuild. Runtime source
|
|
|
|
|
and recipe bytes were also compared; current worker SHA-256:
|
|
|
|
|
`b52d50a1e676bd4bf64124daff1c4ce83d86a8bde01e4eaf09838cbb24a4c28f`.
|
|
|
|
|
CLI SHA-256:
|
|
|
|
|
`0a169112aab66f6b80d3696e6eb06bbd2a8ab8d1a845956353c897ab36691cdb`.
|
|
|
|
|
|
|
|
|
|
Sixteen packaging tests passed in normal and optimized Python modes, including
|
|
|
|
|
XZ member/checksum/mode equality and reproducibility. Actual extracted archive
|
|
|
|
|
checks verified 29 files, relocated paths containing spaces, automatic media
|
|
|
|
|
helper discovery, three newly encoded Google chunks (two documents plus one
|
|
|
|
|
audio), German semantic document search, Code-scope source citation and strict
|
|
|
|
|
extension filtering. A separate genuine CPU MCP preflight passed with this
|
|
|
|
|
worker. No GPU provider was exercised.
|
|
|
|
|
|
|
|
|
|
Archive: 103,295,132 bytes, SHA-256
|
|
|
|
|
`940c1f871a8775723fc571018fd2f9f946f48528dac3fdea0888a3d90cacc8a6`.
|
|
|
|
|
Public unauthenticated full-byte archive and checksum downloads matched local
|
|
|
|
|
files. Ignored final report `.searchi/qa/linux-xz-current-runtime-smoke.json`,
|
|
|
|
|
SHA-256 `35d4795469e6c22f778218161a97d160a3148a3a30a55435ef0c7f775601846b`.
|
|
|
|
|
|
|
|
|
|
An earlier candidate used a historical staged worker and failed query startup
|
|
|
|
|
with `Unknown worker option`. It was never published. The old archive remains
|
|
|
|
|
locally as `searchi-headless-legacy-worker.tar.xz`; captured failure evidence is
|
|
|
|
|
`.searchi/qa/linux-xz-release-diagnostic.json`. The corrected package uses the
|
|
|
|
|
current runtime and passed the same full archive check.
|
|
|
|
|
|
|
|
|
|
WSL CPU deployment proof does not establish broad distribution compatibility,
|
|
|
|
|
clean-machine installs, real GPU fallback/parity, Linux desktop behavior or
|
|
|
|
|
general media relevance. Those checks remain open.
|
2026-10-13 15:45:18 +02:00
|
|
|
|
|
|
|
|
## Updated archive alongside Windows 0.1.3
|
|
|
|
|
|
|
|
|
|
Shared component version remains 0.1.0. Source `9ce6099` was rebuilt on Ubuntu
|
|
|
|
|
WSL; the archive now includes the required extraction helper. All 31 recorded
|
|
|
|
|
file hashes/sizes matched; relocated normal CLI indexing extracted PDF page 1
|
|
|
|
|
and DOCX paragraph 1 with zero failures. Genuine Google CPU inference encoded
|
|
|
|
|
two chunks and semantic search returned both documents with their locations.
|
|
|
|
|
This is a two-document smoke check, not a general relevance benchmark.
|
|
|
|
|
|
|
|
|
|
Archive: 104201084 bytes, SHA-256
|
|
|
|
|
`4daf58a5fd6f538f72a1aef9b2f58f3cad0ef9a6bdc69f649b98b6a09ffa029b`.
|
|
|
|
|
Public full-byte archive and checksum downloads matched. GPU and broader
|
|
|
|
|
distribution tests remain open. Earlier evidence above describes the old archive.
|