# run-llama/semtools

Semantic search and document parsing tools for the command line

Repository: https://github.com/run-llama/semtools
Canonical: https://ross.abutalabs.com/products/semtools
Language: Rust
License: MIT
License Family: permissive
Topics: cli, embeddings, parser, rust, search, semantic, semantic-search, static-embedding
Last push: 2026-03-11T14:30:50+00:00

## Health v2 (maintenance only)
Score: 63/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 71, release rhythm 74, longevity 26
- inputs: {"age_days": 375, "days_push": 175, "days_rel": 175, "gap_med": 3.0, "n_releases_24m": 17}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1858, forks 142 (observed 2026-08-28T04:05:45.100167+00:00)

## What it is
SemTools is a Rust command-line toolkit for parsing documents (PDF, DOCX, PPTX, etc.) into markdown via LlamaParse and running fast local semantic search over text using multilingual model2vec embeddings with cosine similarity. It also ships an 'ask' command, an AI agent with search/read tools for answering questions over document collections via OpenAI-compatible APIs, plus workspace management for large collections.

## Use cases
- parse pdfs and docx files to markdown from the command line
- run semantic search over local text files
- search documents by meaning instead of exact keywords like grep
- ask an LLM questions about a folder of documents
- bulk convert presentations and documents into markdown
- pipe parsed documents into search or an agent with unix tools
- set up local retrieval over a large document collection

## When to choose
- you want a fast, Unix-friendly CLI for document parsing and semantic search without running a server
- you need local semantic search using embeddings while keeping parsing delegated to LlamaParse
- you want to build quick RAG-style question answering over local document collections
- you already use the LlamaIndex/LlamaParse ecosystem and want terminal tooling

## When to avoid
- you need fully offline parsing, since the default parse backend requires a LlamaParse API key
- you need a GUI, a hosted search service, or a web interface rather than a command-line tool
- you only need exact keyword matching, where grep is sufficient
- you cannot use OpenAI or an OpenAI-compatible API, since the ask command depends on it

## Facets
- artifact type: cli-tool
- maturity: active
- function: search-engine, parser, pdf, rag, agent-framework, cli
- domain: artificial-intelligence, files, pdf, developer-tools
- platform: cross-platform, cli, windows, rust
- tags: semantic-search, embeddings, document-parsing, model2vec, llamaparse, llamaindex, multilingual-embeddings, unix-tools, document-qa, markdown-conversion, search, natural-language-processing, command-line, linux, macos

## Member repositories
- run-llama/semtools (main) score 63

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:45.100167+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:16:13.272414+00:00, confidence not recorded.
  - readme: https://github.com/run-llama/semtools (fetched 2026-08-28T04:05:45.100167+00:00, sha 376784ec2862)
  - registry_crates: https://crates.io/api/v1/crates/semtools (fetched 2026-08-29T10:55:12.237389+00:00, sha 06e1867701a7)
- Data as of 2026-08-30T08:39:29.467469+00:00.
