LinuxCommandLibrary
GitHubF-DroidGoogle Play Store

semsearch

Embedding-first search engine admin CLI for indie blogs

TLDR

Sync dependencies and start Postgres
$ uv sync
copy
$ docker compose up -d db
copy
Copy env and set EMBEDDING_API_KEY, then init the schema
$ cp .env.example .env
copy
$ uv run semsearch init-db
copy
Add a blog (feed is required; sitemap optional)
$ uv run semsearch site add https://[example.blog]/ --sitemap auto --feed auto
copy
List configured sites
$ uv run semsearch site list
copy
Remove a site
$ uv run semsearch site remove https://[example.blog]/
copy
Run the ingestion daemon (poll, crawl, embed)
$ uv run semsearch daemon
copy
Show index status and failed jobs
$ uv run semsearch status
copy

SYNOPSIS

semsearch command [options]

DESCRIPTION

semsearch is the Typer-based administration CLI for Semsearch, an embedding-focused indexing and search engine aimed at aggregating and promoting indie blogs. The stack pairs a FastAPI web frontend with PostgreSQL + pgvector storage. The CLI handles schema setup, site registry, background ingestion, and operational status; the HTTP app serves search (see uvicorn semsearch.web.app:app).Configuration comes from environment / .env (see .env.example): database URL, embedding API endpoint and key, model name, and embedding dimension. Chunking and embedding settings are shared between CLI and web. Changing chunking algorithm, embedding dimension, or model requires a full re-index.Typical local layout: Postgres via docker compose, Python tools via uv run semsearch …. Production runs the same binary inside the app container (docker compose exec app … semsearch …).

PARAMETERS

init-db

Create database schema for the configured embedding model and dimension. Prints the model name, vector size, and redacted DSN when ready.
site add url [--sitemap auto|none|url] [--feed auto|url]
Register or update a feed-backed site. --feed is mandatory in practice (auto-discovery or explicit URL). --sitemap defaults to auto.
site list
List configured sites.
site remove url
Remove a site from the index configuration.
daemon
Long-running process that polls feeds, fetches pages, chunks text, embeds, and writes to pgvector. Uses an advisory lock so only one daemon runs at a time.
status
Report index statistics and list failed ingestion jobs.

CAVEATS

Project status is proof-of-concept toward production. Requires a modern Python (upstream pins >=3.14), a running Postgres with pgvector, and a working embedding API key before indexing. Feed URLs are effectively required when adding sites. Not a general-purpose desktop search tool—it is the operator CLI for this specific blog-search service.

HISTORY

Semsearch is a small open-source project exploring agentic RAG-style embedding pipelines for independent blogs, with admin tooling under the semsearch console script.

SEE ALSO

curl(1), docker(1), uv(1)

RESOURCES

Braincup
Open source brain training for math, memory and focus
Braincup mini-games
41 mini-games · Apache-2.0
No ads · No tracking
Play in browser
Download Braincup on the App StoreGet Braincup on Google PlayGet Braincup on F-Droid
276 stars
From the maker of Linux Command Library
Copied to clipboard
Braincup
Open source brain training for math, memory and focus. 41 mini-games, from mental arithmetic to Sudoku, N-Back and Solo Chess.
Apache-2.0 licensed · No ads · No tracking · No account
From the maker of Linux Command Library
Download Braincup on the App StoreGet Braincup on Google PlayGet Braincup on F-Droid