C
CertaMesh/seyk
Local search for AI agents over private files: meaning, keywords and file names, with exact source locations
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
- Star count
- 0 ★ · CertaMesh/seyk · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- read directly from its GitHub page · type: open-source project
- Harvest history
- first seen 2026-10-27 · last seen 2026-11-14 · seen 20× · listed by 3 sources
- Score
- score 303 · 3 sources · repo
FAQ (answers come from our records)
Who is it for?
We filed it under these tags: 开源项目. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
CertaMesh/seyk;first catalogued 2026-10-27;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.Seyk is local search for AI agents over private files. It finds passages by
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
meaning, keywords and file names, and returns exact source locations: a line
range, a PDF page, an audio time window. Use it alongside grep: grep finds
every exact string, Seyk finds the passage that answers a question in other
words, including in PDFs and recordings.
When you extract a passage, Seyk re-checks the file and refuses text that
changed since indexing. It never writes answers; your agent reads the evidence
and decides what it means. Seyk runs as an MCP server, a CLI, and a Rust
library (pre-1.0).
> Status: pre-1.0. Install from source for now; the model is a 0.5 GB
> download. Indexing can use several GB of memory on dense files, and a fix is
> in progress (#95).
## What you can do with it
Let an agent cite your decision records. An agent asks "why did we pick
SQLite over Postgres?", gets 0007-storage-sqlite.md:13-18, and reads
exactly those lines. Try it on the
example decision records.
Search the files grep can't read well. Ask a question of notes, PDFs or
meeting recordings and get back a line range, a page, or a time window. For
code, Seyk complements grep; it does not parse functions yet.
Embed retrieval in a Rust application. Link the library, point it at a
folder, get hits with byte ranges, with no server to run. Pre-1.0 and not on
crates.io yet; see examples/embedsearch.rs.
## See it work
Three searches over the example decision records,
run from that folder. Results are trimmed to the top hit or two:
console
$ seyk search "how do we sign someone out right away?" decisions -n 1
0.908 decisions/0015-auth-sessions.md:6-10 § 0015. Use server-side sessions instead of JWTs for the web app > Context [meaning 0.72+words]
The web app stored a signed JWT in local storage. Logging a user out, or locking an account after a password reset, could not take effect until the token expired an hour later.
$ seyk search "Sunset header" decisions -n 1
1.000 decisions/0009-api-versioning.md:12-17 § 0009. Version the public API in the URL path > Decision [meaning 0.70+words]
Every public endpoint lives under a version prefix such as /api/v2/. A breaking change creates a new version. The previous version keeps working for at least twelve months after its replacement ships, and responses from a deprecated…
$ seyk search "0015-auth-sessions.md" decisions -n 1
1.000 decisions/0015-auth-sessions.md:1-4 § 0015. Use server-side sessions instead of JWTs for the web app [meaning 0.82+words+name]
Date: 2026-08-27 Status: Accepted. Supersedes the token section of 0003.
The first question shares only the word "out" with the record it found;
meaning ranked it first. The tag in brackets shows which signals found each
hit: meaning (with its similarity), words, or the file name. The score at the
start ranks hits within one search; 1.000 means first on every signal that
found anything.
To use a hit as evidence, extract it. Seyk re-hashes the whole file first and
fails instead of returning text from a file that changed since the search:
console
$ seyk search "why did we pick SQLite over Postgres?" decisions --json -n 1 | seyk extract --from-json -
## Decision
We store tickets in a single SQLite database file in write-ahead-log mode,
range, a PDF page, an audio time window. Use it alongside grep: grep finds
every exact string, Seyk finds the passage that answers a question in other
words, including in PDFs and recordings.
When you extract a passage, Seyk re-checks the file and refuses text that
changed since indexing. It never writes answers; your agent reads the evidence
and decides what it means. Seyk runs as an MCP server, a CLI, and a Rust
library (pre-1.0).
> Status: pre-1.0. Install from source for now; the model is a 0.5 GB
> download. Indexing can use several GB of memory on dense files, and a fix is
> in progress (#95).
## What you can do with it
Let an agent cite your decision records. An agent asks "why did we pick
SQLite over Postgres?", gets 0007-storage-sqlite.md:13-18, and reads
exactly those lines. Try it on the
example decision records.
Search the files grep can't read well. Ask a question of notes, PDFs or
meeting recordings and get back a line range, a page, or a time window. For
code, Seyk complements grep; it does not parse functions yet.
Embed retrieval in a Rust application. Link the library, point it at a
folder, get hits with byte ranges, with no server to run. Pre-1.0 and not on
crates.io yet; see examples/embedsearch.rs.
## See it work
Three searches over the example decision records,
run from that folder. Results are trimmed to the top hit or two:
console
$ seyk search "how do we sign someone out right away?" decisions -n 1
0.908 decisions/0015-auth-sessions.md:6-10 § 0015. Use server-side sessions instead of JWTs for the web app > Context [meaning 0.72+words]
The web app stored a signed JWT in local storage. Logging a user out, or locking an account after a password reset, could not take effect until the token expired an hour later.
$ seyk search "Sunset header" decisions -n 1
1.000 decisions/0009-api-versioning.md:12-17 § 0009. Version the public API in the URL path > Decision [meaning 0.70+words]
Every public endpoint lives under a version prefix such as /api/v2/. A breaking change creates a new version. The previous version keeps working for at least twelve months after its replacement ships, and responses from a deprecated…
$ seyk search "0015-auth-sessions.md" decisions -n 1
1.000 decisions/0015-auth-sessions.md:1-4 § 0015. Use server-side sessions instead of JWTs for the web app [meaning 0.82+words+name]
Date: 2026-08-27 Status: Accepted. Supersedes the token section of 0003.
The first question shares only the word "out" with the record it found;
meaning ranked it first. The tag in brackets shows which signals found each
hit: meaning (with its similarity), words, or the file name. The score at the
start ranks hits within one search; 1.000 means first on every signal that
found anything.
To use a hit as evidence, extract it. Seyk re-hashes the whole file first and
fails instead of returning text from a file that changed since the search:
console
$ seyk search "why did we pick SQLite over Postgres?" decisions --json -n 1 | seyk extract --from-json -
## Decision
We store tickets in a single SQLite database file in write-ahead-log mode,
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/certamesh-seyk/)
- Source
- github · https://github.com/CertaMesh/seyk
- Browse by field
- Open source
- Listed by
- 3 independent sources
- added
- today
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.