SeaGOAT is a local code search engine for the AI era, whose core purpose is to let you perform semantic search in local codebases. It understands query intent through vector embedding technology, rather than merely matching keywords, so it can find code by meaning.
Main capabilities include: semantic search using vector embeddings; simultaneously combining ripgrep to provide regex-based and keyword-based matching results; providing optional generative search enhancement (through the --generative flag), using a local Ollama server by default, while also allowing configuration of a cloud LLM provider, but the cloud will send code snippets to a third party, is optional to enable, and this setting is read only from the global configuration file, not from the repository's .seagoat.yml; supporting global or project-level (.seagoat.yml) customization through YAML configuration files; and allowing use of the seagoat-server server-info command to view the storage locations of the database and cache.
How to use: First, install SeaGOAT. The prerequisites are Python 3.10 or newer, and optionally bat (strongly recommended). The command to install with pipx is: pipx install seagoat. After installation, start the SeaGOAT server, and then you can query repositories with the gt or seagoat commands, for example gt "your query". Regular expressions can be used in queries. There is also a corresponding command to stop the server. SeaGOAT also supports ignoring files, ignoring by default all files/directories listed in .gitignore, and you can additionally ignore files through the ignorePatterns property in the server configuration (while retaining them in git).
Use cases: Suitable for quickly finding code in local codebases, especially for developers who care about privacy and want data not to leave the local machine. It can run on Linux (tested), macOS (partially tested), and Windows (help needed), and is designed to work on an ordinary laptop.
Limitations and notes: Currently it is hardcoded to handle only specific file formats, including text files (.txt), Markdown (.md), Python (.py), C (.c, .h), C++ (.cpp, *.cc, .cxx, .hpp), TypeScript (.ts, .tsx), JavaScript (.js, .jsx), HTML (.html), Java (.java). Only text files are supported; binary files are ignored; UTF-8 encoding is preferred, but most other character encodings also work. It may be slow when processing large repositories, but it is designed to let you continue using your computer, and query performance is not affected; while files have not yet finished processing, queries will receive an accuracy estimate warning, but regex/full-text search results can be displayed from the start. SeaGOAT itself does not enforce any security measures and is primarily designed to run locally; if you want to host the server on another computer or in the cloud, you must ensure yourself that only trusted people can access it (for example, via VPN). SeaGOAT is a code search engine, not a code generator, and does not produce AI-derived works; however, it uses a language model to generate vector embeddings, currently using ChromaDB's default model. More details can be found in the official documentation.