跳到正文

josiah-nelson

eidos

Windows-first filesystem catalog, content indexer, storage analyzer, and search service (Rust, SQLite, Tantivy, React)

README 已保存到本站,可直接阅读

Documentation snapshot

README 快照

这篇是英文原文

下面正文是项目自己的英文 README。想读全文就用浏览器自带的整页翻译: Chrome / Edge 点地址栏右侧的翻译图标,或用右键菜单里的「翻译成中文」; 手机浏览器一般在菜单里。

本页保存的是公开项目资料快照,阅读过程不需要连接 GitHub。

eidos

A Windows-first, eventually cross-platform filesystem catalog, content indexer, storage analyzer, and search service.

eidos (εἶδος, “form”) is the thing itself as distinct from where it happens to sit: the project keeps a canonical catalog of file objects with stable identity, and treats paths, search indexes, aggregates, hashes, and snippets as rebuildable projections of that catalog.

Status: early development. The first release target (v0.5, a trustworthy single-Windows-host indexer) is partly implemented: the catalog, native NTFS enumeration and USN change feed, catalog search, and the web UI are working; streaming literal-text content indexing is in progress. There is no packaged release yet, and schemas, APIs, and the query syntax can still change. See docs/roadmap.md.

What it is for

Existing tools each solve part of the problem: Everything is superb at names and metadata on one Windows host, dtSearch at content, WinDirStat and friends at size. eidos combines them behind one catalog and one query language:

  • Everything-class responsiveness for names and metadata: batched native NTFS enumeration, the USN journal for live changes (sub-second visibility), and a Tantivy catalog index with millisecond metadata queries.
  • Trustworthy catalog: object identity is separate from path identity, so renames, moves, and hard links never look like new content; scans publish atomically; interrupted or offline sources are preserved, never silently emptied; every search response states per-source completeness.
  • Storage analytics: apparent and allocated subtree sizes, file counts, and sparse per-directory extension counts, maintained incrementally; a treemap and tree browser in the web UI.
  • Directory-aware search: directories are first-class results, with predicates over descendants (has:idb has:cs, files:>1000, subtree:>1G) and a documented ranking rule.
  • Exact and lexical search: case-insensitive by default, case-sensitive exact and substring modes verified against original text, glob, and regex over names and paths; literal-text content search with line-aware snippets (in progress).
  • Generic SMB crawling with explicit, weaker freshness semantics for roots that have no change feed.
  • Web UI, CLI, and HTTP API sharing one typed query AST.

Planned later: ZIP member inventory, multi-host agents with offline preservation, macOS and Linux agents, recursive archives and Office/PDF text, exact directory copies and diffs, MCP tools, natural-language query compilation, and directory similarity. See the roadmap for sequencing and the non-goals of each release.

Quick start (Windows)

Prerequisites: Rust stable (MSVC target), Visual Studio Build Tools with the Windows SDK, Node.js 24+. Details in docs/development.md.

cargo build --release
cd web; npm ci; npm run build; cd ..

# Register a source and run the service (API + web UI on http://127.0.0.1:7700)
.\target\release\eidos.exe source add projects D:\Projects
.\target\release\eidos.exe serve --data-dir data --web-dir web\dist

# In another shell: search through the running service
.\target\release\eidos.exe search "readme ext:md mtime:>=30d"
.\target\release\eidos.exe search --mode directories "has:idb has:cs" --explain
.\target\release\eidos.exe search --json "ext:dmp size:>100M"

The service scans registered sources, keeps NTFS sources live through the USN journal, rescans feed-less sources periodically, and serves the web UI. The CLI exits with status 2 when any requested source was incomplete, so scripts never mistake a partial answer for a complete one.

Everything eidos does to a source is read-only.

Documentation

DocumentContents
docs/overview.mdGoals, product thesis, representative scenarios, functional and reliability requirements
docs/architecture.mdInvariants, identity model, catalog and search architecture, scheduler, evolution to a fleet
docs/roadmap.mdReleases, milestones, acceptance gates, non-goals
docs/query-syntax.mdThe query language accepted by the UI, CLI, and API
docs/development.mdToolchain, build/test/lint commands, benchmarks, layout
docs/releasing.mdSigned Windows release workflow and Azure Artifact Signing configuration
docs/benchmarks.mdMeasured results on the reference corpus
docs/adr/Architecture decision records

Layout

crates/
  eidos-domain    IDs, states, query AST, result/completeness contracts, bench format
  eidos-scanner   enumeration contracts, Windows lister, parallel walker, USN journal
  eidos-catalog   SQLite catalog: scan generations, change application, aggregates, jobs
  eidos-content   bounded sniffing, decoding, line-aware chunking, BLAKE3
  eidos-search    Tantivy catalog index, projection follower, query executor
  eidos-query     query syntax parser and renderer
  eidos-service   Axum HTTP API, watchers, reconciler, composition
  eidos-cli       the `eidos` binary
web/              Vite + React + TypeScript UI
docs/             public documentation and ADRs

Contributing

The project is developed in the open but is still at the stage where the architecture is being proven milestone by milestone; expect churn. Bug reports with reproducible synthetic fixtures are welcome. Run .\scripts\check.ps1 before opening a pull request — it runs formatting, clippy with warnings denied, all tests, and the web build.

License

eidos is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. If you run a modified version as a network service, the AGPL requires you to offer its source to the users of that service.

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

Official distribution

获取与安装

暂未发现可确认的官方软件包地址

当前 README 快照没有出现 npm、PyPI、Crates.io、pub.dev 等官方包页链接。本站不会根据仓库名称猜测下载地址。

本站不托管项目文件;需要安装时,请以项目维护者发布的官方文档为准。

使用前核验

本站保存公开资料用于阅读,不代表安全审计或功能背书。安装前请核对许可证、依赖来源和发布签名,不要直接运行来源不明的二进制文件或高权限脚本。