The ToolHive development documentation provides guidelines and resources for
developers working on the ToolHive project. It includes information on setting
up the development environment, contributing to the codebase, and understanding
the architecture of the project.
For user-facing documentation, please refer to the
ToolHive docs website.
Contents
Explore the contents of this directory to find more detailed information on
specific topics related to ToolHive development including architectural details
and design proposals.
For information on the ToolHive Operator, see the
ToolHive Operator README and
DESIGN doc.
Getting started
ToolHive is developed in Go. To get started with development, you need to
install Go and set up your development environment.
Prerequisites
-
Go: ToolHive requires Go 1.24. You can download and install Go from the
official Go website.
-
Task (Recommended): Install the Task tool to run
automated development tasks. You can install it using Homebrew on macOS:
brew install go-task
To build the ToolHive CLI (thv
), follow these steps:
-
Clone the repository: Clone the ToolHive repository to your local machine
using Git:
git clone https://github.com/stacklok/toolhive.git
cd toolhive
-
Build the project: Use the task
command to build the binary:
task build
-
Run ToolHive: The build task creates the thv
binary in the ./bin/
directory. You can run it directly from there:
./bin/thv
-
Optionally, install the thv
binary in your GOPATH/bin
directory:
task install
Running tests
To run the linting and unit tests for ToolHive, run:
task lint
task test
ToolHive also includes comprehensive end-to-end tests that can be run using:
task test-e2e
Other development tasks
To see a list of all available development tasks, run:
task --list
Contributing
We welcome contributions to ToolHive! If you want to contribute, please review
the contributing guide.
Contributions to the user-facing documentation are also welcome. If you have
suggestions or improvements, please open an issue or submit a pull request in
the docs-website repository.