tpt-finder

Rust

Modern file search & launcher (Everything/PowerToys Run alternative) — Rust engine (USN Journal / inotify) + Tauri UI, with an optional local semantic search layer via Ollama. Windows, Linux, and Archon.

0 stars0 forks0 watchersApache License 2.0

Languages

Rust77.9%TypeScript17.6%CSS4.4%HTML0.1%
README

tpt-finder

License: MIT OR Apache-2.0 CI

Instant file search with optional semantic understanding.

A modern Everything / PowerToys Run-style file search and launcher for Windows, Linux, and Archon.

  • Rust engine — USN Journal on Windows, inotify on Linux, in-memory index for instant prefix/substring/fuzzy matching.
  • Tauri UI — keyboard-first global-hotkey popup overlay + persistent main window.
  • Optional local semantic layer — Ollama-powered natural-language queries like "the PDF invoice from John last March", with all inference on localhost and no cloud calls.
  • Content extraction — plain text, code, PDF, and Office documents indexed for full-text and semantic search.

Part of the TPT Solutions ecosystem. Archon support integrates with tpt-archon-relational for SQL-style filesystem queries (SELECT path FROM files WHERE content SIMILAR TO 'invoice') with zero-copy memory access.

Scope

File search + launch only — no general app-launcher/plugin system (calculator, web search, etc.). See todo.md for the full roadmap.

Prerequisites

  • Rust (stable)
  • Node.js 20+
  • Platform tooling for Tauri 2:
    • Windows: WebView2 (usually preinstalled), MSVC toolchain
    • Linux: webkit2gtk-4.1, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-dev (Debian/Ubuntu package names)
  • Optional for semantic search: Ollama running locally on localhost:11434

Build

# Install JS dependencies
npm install

# Development (hot-reload frontend + Rust backend)
npm run tauri dev

# Production build
npm run tauri build

Frontend only

npm run dev        # Vite dev server
npm run build      # Type-check + production bundle

Rust engine only

cd src-tauri
cargo build
cargo test

Lint & format

# Rust
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings

# TypeScript / frontend
npm run lint
npm run format:check
npm run typecheck

Project layout

src/                 # Plain TypeScript + HTML frontend (Vite), no framework
src-tauri/           # Rust backend (indexing engine, IPC commands, Tauri host)
  src/
    main.rs          # Tauri entrypoint
    lib.rs           # Command registration / app setup
    index/           # Core indexing engine (Phase 1+)
todo.md              # Phased roadmap / checklist
spec.txt             # Original concept brief

Query syntax

Everything-style filters, wired to the Rust engine over IPC:

FilterExample
ext:ext:pdf report
size:size:>10MB
dated:dated:2026-03
path:path:Documents\invoices
fuzzy:/~~invc
is:dirdownloads is:dir

See the full query syntax reference. Natural-language queries are parsed via local Ollama into structured filters + semantic terms when the semantic layer is enabled.

Documentation

GuideContents
Install & buildprerequisites, build outputs, data locations, first run
Query syntaxfilters, operators, ranking, natural language
Ollama setupenabling local semantic search
Keybindingsglobal hotkey, popup and main window keys
Security reviewthreat model notes and hardening applied for v1

Privacy

  • Index and extracted content stay on-device.
  • Semantic search uses only local Ollama (localhost:11434); non-loopback URLs are rejected by the client and by settings validation.
  • No telemetry, no cloud inference; the error log is opt-in and local-only.

Platform status

PlatformStatus
WindowsPrimary target — USN Journal engine, installer builds
LinuxSupported — walk + inotify backend, AppImage/.deb/.rpm (X11/Wayland QA pending)
ArchonResearch-gated, blocked pending tpt-archon-relational public API

Contributing

SPDX dual-license header conventions and development workflow are documented in CONTRIBUTING.md.

License

Licensed under either of:

at your option. See NOTICE for attribution requirements under the Apache license.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.