Skip to main content

Logo 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 to 3.14
  • 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

Generative search providers

The --generative flag uses an LLM to enhance search results. By default it uses a local Ollama server, but you can configure a cloud provider instead. Cloud providers send your code snippets to a third party, so they are opt-in. This setting is only read from the global config file, never from a repository's .seagoat.yml:

# global config file — use MiniMax as the generative provider
generative:
  provider: minimax        # ollama | openai | minimax
  model: MiniMax-M2.5      # optional, provider-specific default used otherwise
Provider Default model API key env var Base URL
ollama (default) deepseek-r1:8b — local
openai gpt-4o-mini OPENAI_API_KEY https://api.openai.com/v1
minimax MiniMax-M2.5 MINIMAX_API_KEY https://api.minimax.io/v1

If no provider is configured, SeaGOAT uses Ollama. API keys are read from the environment variables above; prefer them over putting apiKey in the config file.

Check out the documentation for more details!

Development

Requirements:

Install dependencies

After cloning the repository, install dependencies using the following command:

uv sync

Running tests

uv run ptw .

Test changed files

uv run pytest .  --testmon

Test all files

uv 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:

uv 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 database called ChromaDB, with a local vector embedding engine and telemetry disabled by default.

Apart from that, SeaGOAT also uses ripgrep, a regular-expression based code search engine in order to provider regular expression/keyword based matches in addition to the "AI-based" matches.

While the current version of SeaGOAT does not send your data to remote servers, it might be possible that in the future there will be optional features that do so, if any further improvement can be gained from that.

Why does SeaGOAT need a server?

SeaGOAT needs a server in order to provide a speedy response. SeaGOAT heavily relies on vector embeddings and vector databases, which at the moment cannot be replace with an architecture that processes files on the fly.

It's worth noting that you are able to run SeaGOAT server entirely locally, and it works even if you don't have an internet connection. This use case does not require you to share data with a remote server, you are able to use your own SeaGOAT server locally, albeit it's also possible to run a SeaGOAT server and allow other computers to connect to it, if you so wish.

Does SeaGOAT create AI-derived work? Is SeaGOAT ethical?

If you are concerned about the ethical implications of using AI tools keep in mind that SeaGOAT is not a code generator but a code search engine, therefore it does not create AI derived work.

That being said, a language model is being used to generate vector embeddings. At the moment SeaGOAT uses ChromaDB's default model for calculating vector embeddings, and I am not aware of this being an ethical concern.

What programming languages are supported?

Currently SeaGOAT is hard coded to only process files in the following formats:

  • Text Files (*.txt)
  • Markdown (*.md)
  • Python (*.py)
  • C (*.c, *.h)
  • C++ (*.cpp, *.cc, *.cxx, *.hpp)
  • TypeScript (*.ts, *.tsx)
  • JavaScript (*.js, *.jsx)
  • HTML (*.html)
  • Go (*.go)
  • Java (*.java)
  • PHP (*.php)
  • Ruby (*.rb)

Why is SeaGOAT processing files so slowly while barely using my CPU?

Since processing files for large repositories can take a long time, SeaGOAT is designed to allow you to use your computer while processing files. It is an intentional design choice to avoid blocking/slowing down your computer.

This design decision does not affect the performance of queries.

By the way, you are able to use SeaGOAT to query your repository while it's processing your files! When you make a query, and the files are not processed yet, you will receive a warning with an estimation of the accuracy of your results. Also, regular expression/full text search based results will be displayed from the very beginning!

What character encodings are supported?

The preferred character encoding is UTF-8. Most other character encodings should also work. Only text files are supported, SeaGOAT ignores binary files.

Where does SeaGOAT store it's database/cache?

Where SeaGOAT stores databases and cache depends on your operating system. For your convenience, you can use the seagoat-server server-info command to find out where these files are stored on your system.

Can I host SeaGOAT server on a different computer?

Yes, if you would like to use SeaGOAT without having to run the server on the same computer, you can simply self-host SeaGOAT server on a different computer or in the cloud, and configure the seagoat/gt command to connect to this remote server through the internet.

By default the server only accepts connections from the same computer. To accept remote connections, set host: 0.0.0.0 under server in the global configuration file of the computer running the server.

Keep in mind that SeaGOAT itself does not enforce any security as it is primarily designed to run locally. If you have private code that you do not wish to leak, you will have to make sure that only trusted people have access to the SeaGOAT server. This could be done by making it only available through a VPN that only your teammates can access.

Can I ignore files/directories?

SeaGOAT already ignores all files/directories ignored in your .gitignore. If you wish to ignore additional files but keep them in git, you can use the ignorePatterns attribute from the server configuration. Learn more

Metadata

Release files for seagoat 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for seagoat 1.6.0
File Size Uploaded Provenance Actions
seagoat-1.6.0.tar.gz 96.0 kB With provenance Details for seagoat-1.6.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for seagoat 1.6.0
File Actions
seagoat-1.6.0-cp311-abi3-win_arm64.whl CPython 3.11 abi3 Windows ARM64 Details for seagoat-1.6.0-cp311-abi3-win_arm64.whl
seagoat-1.6.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details for seagoat-1.6.0-cp311-abi3-win_amd64.whl
seagoat-1.6.0-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details for seagoat-1.6.0-cp311-abi3-musllinux_1_2_x86_64.whl
seagoat-1.6.0-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details for seagoat-1.6.0-cp311-abi3-musllinux_1_2_aarch64.whl
seagoat-1.6.0-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details for seagoat-1.6.0-cp311-abi3-manylinux_2_28_x86_64.whl
seagoat-1.6.0-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details for seagoat-1.6.0-cp311-abi3-manylinux_2_28_aarch64.whl
seagoat-1.6.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for seagoat-1.6.0-cp311-abi3-macosx_11_0_arm64.whl
seagoat-1.6.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details for seagoat-1.6.0-cp311-abi3-macosx_10_12_x86_64.whl

Total release size: 2.5 MB

Release files / seagoat-1.6.0.tar.gz

Download URL seagoat-1.6.0.tar.gz
Size 96.0 kB
Tags Source
SHA-256 checksum
How to use checksums
876ec6ff509872f17f44f6264876be83c3178b6664070ee521173db97ebc7f6a
BLAKE2b-256 checksum
How to use checksums
fdb99f9bd5adef9183e07141dbf923bbbbc647ad3a4900e26316c6ba7e6ed5f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-win_arm64.whl

Download URL seagoat-1.6.0-cp311-abi3-win_arm64.whl
Size 158.9 kB
Tags CPython 3.11 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
6f6c1a588d493bc7ecf7fc5c823c9409ff81ab6684c24b9e0dd8c612588c67be
BLAKE2b-256 checksum
How to use checksums
3530d3501b09c177073d4224ffc29eac99b21650df024f2ed520f2b547686e50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-win_amd64.whl

Download URL seagoat-1.6.0-cp311-abi3-win_amd64.whl
Size 160.7 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
9ed43f3cd5ee4c294b7d44778a14391f6e45625726e982f4fda3fa26f7c081e9
BLAKE2b-256 checksum
How to use checksums
2abfd116429efaf81abab1f623c5815a18be7a43ac65c7e5f8af64a04682c67d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL seagoat-1.6.0-cp311-abi3-musllinux_1_2_x86_64.whl
Size 497.7 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
0ef47ef95e31ae32bd4dc8615b2bd976792af0a2ed57228ac69f3beabedfdec7
BLAKE2b-256 checksum
How to use checksums
edc5fc300fdfb9d29057301384ae73b8caf5dbfe32ae5816457db6bfc7d2b916
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL seagoat-1.6.0-cp311-abi3-musllinux_1_2_aarch64.whl
Size 468.0 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
2374887defcdc64204c0b61a2e9cee00dba3aded7f86aa9a1143a96e2e0ede6a
BLAKE2b-256 checksum
How to use checksums
bee5b348e36c2d459903ba161f0703643bf81d6b0680e06ce89ea0bd4847f31e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL seagoat-1.6.0-cp311-abi3-manylinux_2_28_x86_64.whl
Size 297.2 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
dc819af9a382551ef8d73b0072ed7feab4cbdc49d660330bbb179f38b482a9a4
BLAKE2b-256 checksum
How to use checksums
076f2ebc444fa5ad08bd8c0a919b118560fc3fd45f2eceb09f0ec72e42155dfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL seagoat-1.6.0-cp311-abi3-manylinux_2_28_aarch64.whl
Size 290.5 kB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
b0b76af47237d6a6ee9f30f0c3599695a64ebcf901f35fdbeed628cef885e3f8
BLAKE2b-256 checksum
How to use checksums
2d5c9f8454202fccd0382f12cb53bfb89938471938e8257c4772541e954280da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL seagoat-1.6.0-cp311-abi3-macosx_11_0_arm64.whl
Size 256.8 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4a8e41659db2764adc8e3895c57815e09770585ecb482e2ed3dedde40e8a4fd8
BLAKE2b-256 checksum
How to use checksums
2f09de48161f5d355d8f87ec0d2cab44b7de6f48c3edcb880c153ec975e71b09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / seagoat-1.6.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL seagoat-1.6.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 264.0 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
4b1d0b009fd11b00b165c678e86f5837100d8107cca7d2d71e21b9587421810f
BLAKE2b-256 checksum
How to use checksums
e039914538bd3f6c8b9c4b1c9b686eff26e9667a04d2414e071fe5d01f1cd62d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for seagoat 1.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 9 files in this release have been uploaded with provenance metadata.

Select from 9 files

Attestation for seagoat-1.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.6.0 This release

9 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page