Make the dev loop crazy fast.
Kit is a software development tool designed to turbo-charge the software development process, with inspiration from several tools, including Foreman, Docker Compose, Podman, Tilt, Skaffold, and Garden. It combines key features and capabilities of these tools, while also offering additional functionality and flexibility.
It is designed to work seamlessly with both local-dev and cloud-dev environments, such as Codespaces and Gitpod.
Key features of Kit include:
Kit was written with extensive help from AI.
Like jq
, kit
is a tiny (8Mb) standalone binary. You can download it from the releases page.
If you're on MacOS, you can use brew
:
brew tap kitproj/kit --custom-remote https://github.com/kitproj/kit
brew install kit
Otherwise, you can use curl
:
curl -q https://raw.githubusercontent.com/kitproj/kit/main/install.sh | sh
We do not support go install
.
Apps are described by a DAG, for example:
---
title: Example of an app
---
flowchart LR
api(name: api\ncommand: java -jar target/api.jar\nworkingDir: ./api\nports: 8080):::host --> build-api(name: build-api\ncommand: mvn package\nworkingDir: ./api\nwatch: ./api):::host
api --> mysql(name: mysql\n image: mysql:latest):::container
processor(name: processor\ncommand: ./processor):::host --> build-processor(name: build-processor\ncommand: go build ./processor\nwatch: ./processor):::host
processor --> kafka(name: kafka\nimage: ./src/images/kafka):::container
processor --> object-storage(name: object-storage\nimage: minio:latest):::container
processor --> api
ui(name: ui\ncommand: yarn start\nworkingDir: ./ui\nports: 4000):::host --> build-ui(name: build-ui\ncommand: yarn install\nworkingDir: ./ui):::host
ui --> api
Create a tasks.yaml
file, e.g.:
apiVersion: kit/v1
kind: Tasks
metadata:
name: my-proj
spec:
tasks:
- command: go build -v .
name: build-bar
watch: demo/bar/main.go
workingDir: demo/bar
- command: ./demo/bar/bar
dependencies: build-bar
env:
- PORT=9090
name: bar
ports: "9090"
- dependencies: bar
name: up
Start:
kit up
You'll see something like this:
Logs are stored in ./logs
.