Kit is a powerful workflow engine that simplifies complex software development environments by combining multiple tools into a single binary:
- Task execution (like Makefile or Taskfile)
- Service orchestration (like Foreman)
- Container management (like Docker Compose)
- Kubernetes resource management (like Tilt, Skaffold)
- Local development focus (like Garden)
With Kit, you can define and manage complex workflows in a single tasks.yaml file, making it ideal for projects that require running multiple components simultaneously.
- Single binary - Easy to install and use
- Dependency management - Define task dependencies in a DAG
- Multiple task types - Run commands, containers, Kubernetes resources
- Auto-restart - Automatically restart services on failure
- File watching - Re-run tasks when files change
- Port forwarding - Forward ports from services to host
- Web UI - Visualize your workflow and monitor task status
Download the standalone binary from the releases page:
# For Linux (amd64)
sudo curl --fail --location --output /usr/local/bin/kit https://github.com/kitproj/kit/releases/download/v1.1.0/kit_v1.1.0_linux_amd64
sudo chmod +x /usr/local/bin/kit
# For Linux (arm64)
sudo curl --fail --location --output /usr/local/bin/kit https://github.com/kitproj/kit/releases/download/v1.1.0/kit_v1.1.0_linux_arm64
sudo chmod +x /usr/local/bin/kit
# For MacOS (Intel)
sudo curl --fail --location --output /usr/local/bin/kit https://github.com/kitproj/kit/releases/download/v1.1.0/kit_v1.1.0_darwin_amd64
sudo chmod +x /usr/local/bin/kit
# For MacOS (Apple Silicon)
sudo curl --fail --location --output /usr/local/bin/kit https://github.com/kitproj/kit/releases/download/v1.1.0/kit_v1.1.0_darwin_arm64
sudo chmod +x /usr/local/bin/kit
# For Go users
go install github.com/kitproj/kit@v1.1.0- Create a
tasks.yamlfile in your project:
tasks:
build:
command: go build .watch: . # Auto-rebuild when files changerun:
dependencies: [build]command: ./myappports: [8080] # Define as a service that listens on port 8080- Start your workflow:
kit run # Run the 'run' task and its dependencies- Jobs: Run once and exit (default)
- Services: Run indefinitely and listen on ports
# Job examplebuild:
command: go build .# Service exampleapi:
command: ./api-serverports: [8080]Services automatically restart on failure. Configure restart behavior with restartPolicy (Always, Never, OnFailure).
Run commands on your local machine:
build:
command: go build .Run shell scripts:
setup:
sh: | set -eux echo "Setting up environment..." mkdir -p ./dataRun Docker containers:
database:
image: postgres:14ports: [5432:5432]env:
- POSTGRES_PASSWORD=passwordKit can also build and run containers from a Dockerfile:
api:
image: ./src/api # Directory with Dockerfileports: [8080]Deploy and manage Kubernetes resources:
deploy:
namespace: defaultmanifests:
- k8s/
- service.yamlports: [80:8080] # Forward cluster port 80 to local port 8080test:
dependencies: [build, database]command: go test ./...server:
command: ./serverenv:
- PORT=8080
- DEBUG=trueenvfile: .env # Load from filebuild:
command: go build .watch: src/ # Rebuild when files in src/ changeOrganize tasks visually in the UI:
tasks:
api:
command: ./apiports: [8080]group: backenddb:
image: postgresports: [5432]group: backendui:
command: npm startports: [3000]group: frontendContributions are welcome! Please see our contributing guidelines for more information.
