SeaGOAT
kantord/SeaGOAT
local-first semantic code search engine
Overview
SeaGOAT leverages vector embeddings to enable local, semantic searching of a codebase.
Categories
Tags
Similar tools
ECC
affaan-m/ECC
affaan-m/ECC
ollama
ollama/ollama
Local inference runtime and CLI for open-weight large language models
prompts.chat
f/prompts.chat
f/prompts.chat
JavaGuide
Snailclimb/JavaGuide
Java guide for backend interviews & AI application development covering system design, LLMs, Agents, and RAG.
langflow
langflow-ai/langflow
Metadata derived from provided repository information.
dify
langgenius/dify
Production-ready platform for agentic workflow development.
Install
pip install SeaGOATREADME
[!TIP] Check out zeitgrep, another search tool I am working on!
SeaGOAT
A code search engine for the AI age. SeaGOAT is a local search tool that leverages vector embeddings to enable you to search your codebase semantically.
Getting started
Install SeaGOAT
In order to install SeaGOAT, you need to have the following dependencies already installed on your computer:
- Python 3.11 or newer
- ripgrep
- bat (optional, highly recommended)
When bat is installed,
it is used to display results as long as color is enabled. When SeaGOAT is
used as part of a pipeline, a grep-line output format is used. When color is
enabled, but bat is not installed, SeaGOAT will highlight the output using
pygments. Using bat is recommended.
To install SeaGOAT using pipx, use the following command:
pipx install seagoat
System requirements
Hardware
Should work on any decent laptop.
Operating system
SeaGOAT is designed to work on Linux (tested ✅), macOS (partly tested, help 🙏) and Windows (help needed 🙏).
Start SeaGOAT server
In order to use SeaGOAT in your project, you have to start the SeaGOAT server using the following command:
seagoat-server start /path/to/your/repo
Search your repository
If you have the server running, you can simply use the
gt or seagoat command to query your repository. For example:
gt "Where are the numbers rounded"
You can also use Regular Expressions in your queries, for example
gt "function calc_.* that deals with taxes"
Stopping the server
You can stop the running server using the following command:
seagoat-server stop /path/to/your/repo
Configuring SeaGOAT
SeaGOAT can be tailored to your needs through YAML configuration files,
either globally or project-specifically with a .seagoat.yml file.
For instance:
# .seagoat.yml
server:
port: 31134 # Specify server port
Check out the documentation for more details!
Development
Requirements:
Install dependencies
After cloning the repository, install dependencies using the following command:
poetry install
Running tests
Watch mode (recommended)
poetry run ptw
Test changed files
poetry run pytest . --testmon
Test all files
poetry run pytest .
Manual testing
You can test any SeaGOAT command manually in your local development
environment. For example to test the development version of the
seagoat-server command, you can run:
poetry run seagoat-server start ~/path/an/example/repository
FAQ
The points in this FAQ are indications of how SeaGOAT works, but are not a legal contract. SeaGOAT is licensed under an open source license and if you are in doubt about the privacy/safety/etc implications of SeaGOAT, you are welcome to examine the source code, raise your concerns, or create a pull request to fix a problem.
How does SeaGOAT work? Does it send my data to ChatGPT?
SeaGOAT does not rely on 3rd party APIs or any remote APIs and executes all functionality locally using the SeaGOAT server that you are able to run on your own machine.
Instead of relying on APIs or "connecting to ChatGPT", it uses the vector dat