Harness Open Source is a self-hostable developer platform that bundles source code hosting, CI/CD pipelines, hosted development environments (Gitspaces), and artifact registries into one system. It's built for teams who want an end-to-end DevOps stack they can run themselves instead of stitching together separate tools for git hosting, CI, and registries. It's the successor to Drone, extending Drone's CI focus into a fuller platform while pipeline parity with Drone is still being built out (Drone itself lives on in a separate feature branch for continued development).
/swagger (and /openapi.yaml), usable with personal access tokens generated via the CLI.gitness): command-line tool to run the server, log in, generate PATs, and manage the service; a full list of operations is available via --help.Harness Open Source fits teams that want to self-host their entire dev pipeline (git hosting, CI/CD, and artifact storage) under one roof, especially if they're already comfortable with Docker-based deployments. It suits developers migrating off Drone who want more platform features without adopting a fully hosted SaaS, and organizations that need Apache-2.0-licensed, auditable infrastructure for compliance or air-gapped environments.
It's not the right fit if you need feature parity with mature platforms like GitLab or GitHub Enterprise right now, since some pipeline capabilities are still catching up to Drone. It's also not ideal if you want a hosted, zero-maintenance solution or need Windows-native Docker pipeline support without extra socket configuration. Teams with heavy existing investment in another CI system may find migration friction outweighs the consolidation benefit at this stage.
The fastest way to try Harness is with Docker:
docker run -d \
-p 3000:3000 \
-p 3022:3022 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/harness:/data \
--name harness \
--restart always \
harness/harness
After the container starts, open http://localhost:3000 in a browser. Use a bind mount or named volume for /data in production, otherwise data is lost when the container stops.
For local development, install Node and Go 1.20+, plus protobuf (v3.21.11) and the protoc-gen-go and protoc-gen-go-grpc Go tools. Then run:
make dep
make tools
Build the UI first:
pushd web
yarn install
yarn build
popd
Then build the Harness binary:
make build
Start the server locally with:
./gitness server .local.env
If you're using an alternative Docker runtime like Rancher Desktop or Colima, symlink its socket to /var/run/docker.sock or set GITNESS_DOCKER_HOST in .local.env so pipeline execution can reach the Docker daemon. To generate an API token for testing, log in via CLI (default admin/changeit) and create a PAT:
./gitness login
./gitness user pat "my-pat-uid" 2592000