Skip to content

v0.2.2 — first PyPI release of the daemon-auto-spawn line

Choose a tag to compare

@simonsysun simonsysun released this 19 Apr 16:51
· 68 commits to main since this release

TL;DR — Same functional improvements as v0.2.1 (daemon auto-spawn finally works; vault and model guards prevent stale-daemon silent wrongness; PyPI metadata / README / llms.txt polish), but this one actually made it to PyPI. Use pip install seeklink==0.2.2seeklink==0.2.1 is not on PyPI.

Why v0.2.2 and not v0.2.1?

v0.2.1's pyproject.toml declared the license twice — once as the SPDX expression license = "MIT" and once as the legacy License :: OSI Approved :: MIT License classifier — which modern setuptools rejects under PEP 639. The tag and GitHub release shipped, but the PyPI build failed. v0.2.2 removes the duplicate classifier (re-fixing what commit c0d261a did historically) and carries an inline comment pinning the lesson.

No functional diff from v0.2.1 — same daemon-first dispatch, same vault/model guards, same CLI behavior. Only pyproject.toml and CHANGELOG.md changed.

All user-facing improvements since v0.2.0

(Copied from the v0.2.1 notes, which are now superseded by this release.)

  • Daemon auto-spawn actually works. seeklink search / seeklink index without --vault auto-spawn the resident daemon and serve subsequent calls in ~10ms.
  • Vault- and model-safe daemon reuse. A stale daemon bound to a different vault / embedder / reranker is rejected via a preflight status probe, so switching SEEKLINK_VAULT or SEEKLINK_EMBEDDER_MODEL no longer silently returns results from the wrong DB. On non-Apple-Silicon where mlx_lm can't load, the daemon's self-disabled reranker is accepted so the daemon-first workflow still works there.
  • seeklink status stays cold-start. It never embeds or reranks, so routing it through the daemon was wasting up to a 700 MB MLX reranker download on first run just to print a few numbers. Now ~0.2s.
  • PyPI metadata. 21 keywords added, richer classifiers, Issues + Changelog URLs, description names Obsidian compatibility explicitly.
  • README restructure. New "Ideal for" tagline, "When to use / When not to use" sections, compact "How it compares" table (vs Obsidian core, Obsidian semantic plugins, ripgrep, build-your-own RAG), "Support & limitations" matrix, and a CI tests badge.
  • llms.txt at the repo root per llmstxt.org.
  • CI honest. || true dropped from Verify install; Python matrix now covers 3.11, 3.12, 3.13, 3.14.
  • Repo-wide improvements. New CHANGELOG.md (Keep a Changelog format), 19 GitHub topics for discoverability.

Install

pip install --upgrade seeklink
# or
uv tool install seeklink

Recommended usage

export SEEKLINK_VAULT=/path/to/vault
seeklink search "machine learning"

First call after a cold boot: ~2s (spawns the daemon, loads the embedder). Every call after that: ~10ms without reranker, ~0.5s with reranker.

Full changelog

See CHANGELOG.md.

Diff from v0.2.0: v0.2.0...v0.2.2