This epic tracks the implementation of advanced discovery and grouping commands that leverage semantic embeddings and metadata to provide high-level views of the vault.
feat: similar command — find notes similar to a given note
There is no way to ask "find notes like this one" using an existing note as the seed instead of a query string. This is the most natural discovery action in a personal knowledge base.
Proposed solution:
Add secondbrain similar <slug>. Fetch all chunks for the seed note, average their stored embeddings to produce a centroid vector, then run col.Query(WithQueryEmbeddings(centroid)) excluding the seed note itself. Optionally restrict to the seed note's first chunk embedding with --chunk 0.
feat: timeline command — notes by recency with semantic clustering
There is no time-aware view of the vault. Users can not ask "what have I been writing about recently" or "show me notes from this month, grouped by topic".
Proposed solution:
Add secondbrain timeline. Fetch notes filtered by modified_ms range (via --since / --until accepting natural dates like 7d, 2026-06-01). Group results by k-means clustering on stored embeddings (k=5 default, configurable via --groups) and print each cluster with a synthesised label derived from the most common heading words across its members.
feat: cluster command — unsupervised topic map of the whole vault
Users have no high-level view of what topics their vault covers or how notes cluster together. Discovering unknown structure in a large vault requires browsing manually.
Proposed solution:
Add secondbrain cluster --groups 10. Fetch all chunk embeddings, run k-means (pure Go, no dependencies), and print each cluster as a named group with its top-5 member note titles and the most frequent heading words used as a label. Optionally output as JSON with --format json for piping into other tools.
This epic tracks the implementation of advanced discovery and grouping commands that leverage semantic embeddings and metadata to provide high-level views of the vault.
feat: similar command — find notes similar to a given note
There is no way to ask "find notes like this one" using an existing note as the seed instead of a query string. This is the most natural discovery action in a personal knowledge base.
Proposed solution:
Add
secondbrain similar <slug>. Fetch all chunks for the seed note, average their stored embeddings to produce a centroid vector, then runcol.Query(WithQueryEmbeddings(centroid))excluding the seed note itself. Optionally restrict to the seed note's first chunk embedding with--chunk 0.feat: timeline command — notes by recency with semantic clustering
There is no time-aware view of the vault. Users can not ask "what have I been writing about recently" or "show me notes from this month, grouped by topic".
Proposed solution:
Add
secondbrain timeline. Fetch notes filtered bymodified_msrange (via--since/--untilaccepting natural dates like7d,2026-06-01). Group results by k-means clustering on stored embeddings (k=5 default, configurable via--groups) and print each cluster with a synthesised label derived from the most common heading words across its members.feat: cluster command — unsupervised topic map of the whole vault
Users have no high-level view of what topics their vault covers or how notes cluster together. Discovering unknown structure in a large vault requires browsing manually.
Proposed solution:
Add
secondbrain cluster --groups 10. Fetch all chunk embeddings, run k-means (pure Go, no dependencies), and print each cluster as a named group with its top-5 member note titles and the most frequent heading words used as a label. Optionally output as JSON with--format jsonfor piping into other tools.