A unified open source DevOps platform combining Git hosting, CI/CD pipelines, cloud development environments, and artifact registries in a single self-hosted system.
Harness Open Source is a comprehensive developer platform that brings together source code management, automated CI/CD pipelines, hosted development environments (Gitspaces), and artifact registries under one roof. Built in Go and TypeScript, it is designed for engineering teams that want to eliminate tool sprawl and run their entire software delivery lifecycle on infrastructure they control.
Originating as the next generation of Drone CI, Harness expands well beyond continuous integration. It adds full Git repository hosting with pull requests, branch rules, code owners, and webhooks — giving teams a GitHub-like experience on their own servers. The CI/CD engine executes pipeline stages inside Docker containers using a YAML-based configuration format, with support for reusable templates and multi-platform language presets out of the box.
Gitspaces provide on-demand, containerized development environments that spin up pre-configured workspaces directly tied to repository branches. Developers connect their preferred IDE and get a reproducible environment without any local setup. The Artifact Registry completes the platform by offering a place to store, proxy, and govern Docker images, Helm charts, and other build artifacts — including controls over upstream open source dependencies.
Harness is deployable with a single Docker command and stores all data in SQLite by default, making it accessible to small teams while also providing the hooks needed for larger deployments through its modular Go architecture, Google Wire dependency injection, and Protocol Buffers-based internal APIs.
Architecture Harness is structured as a layered monolith with clear internal boundaries: HTTP handlers route requests to controllers, controllers coordinate domain logic through service interfaces, and services interact with storage abstractions that are fully swappable. Google Wire drives compile-time dependency injection throughout, ensuring every component declares its dependencies explicitly via provider functions rather than relying on global state. This design makes the codebase highly testable — mock implementations are straightforward to substitute — and has allowed the team to integrate fundamentally different subsystems (SCM, CI, Gitspaces, Registry) while keeping coupling low. Data flows unidirectionally from request parsing through validation, business logic, persistence, and response serialization, with event-driven side channels (via an internal pubsub system and SSE endpoints) handling async operations like pipeline progress and Gitspace lifecycle events.
Tech Stack
The backend is written in Go with a modular command structure under cmd/gitness, using Squirrel for SQL query building against SQLite (the default embedded database) with dbmate handling versioned schema migrations. Internal service boundaries use Protocol Buffers and gRPC contracts, while external REST APIs are defined via OpenAPI specifications with generated Go handler stubs. The web frontend is a React-based single-page application using Harness’s own @harnessio/uicore design system and CodeMirror for in-browser code editing, built with Yarn and embedded directly into the Go binary at compile time. Pipeline execution delegates to Docker through a negotiated API version connection, and multi-stage Docker builds with Alpine Linux produce minimal, cross-architecture production images via Go’s cross-compilation support. Cloud storage drivers (GCS, S3) are available for the artifact registry’s blob layer.
Code Quality
The repository contains an extensive test suite with over 240 Go test files spanning unit and integration layers, complemented by Cypress end-to-end tests in the web frontend and shell-script-based OCI registry conformance tests. Go interfaces are used pervasively as seams for testing, and the project enforces consistent code style through golangci-lint, goimports, and gci import sorting — all checked in a make check target. Error handling uses structured custom error types throughout the service and controller layers, though some HTTP handlers propagate generic error codes rather than fine-grained API errors. TypeScript in the frontend benefits from strict compiler settings. A CONTRIBUTING.md, git hooks for pre-commit checks, and a .gitmessage template round out the developer experience tooling.
What Makes It Unique Harness is one of very few open source projects that genuinely integrates the full SDLC — code, build, deploy, and development environment — in a single deployable binary with no external dependencies beyond Docker. The Gitspace system is architecturally distinctive: it ties ephemeral container provisioning directly to repository branches and user sessions through an event-driven orchestrator, so environments are created and destroyed as lifecycle events rather than as long-lived infrastructure. The migration subsystem ships a format-conversion layer for pipeline DSLs (Drone YAML → Harness YAML, GitHub Actions → Harness YAML) that lowers the switching cost meaningfully compared to manual rewrites. The artifact registry is built on the OCI Distribution Specification with a pluggable storage driver interface, giving teams flexibility from local filesystem to GCS or S3 without changing application code.
Harness Open Source is released under the Apache License 2.0, a permissive open source license with no copyleft requirements. You are free to use it commercially, modify the source, distribute modified versions, and embed it in proprietary systems without releasing your own changes. The only obligation is to include the original license notice and the NOTICE file in distributions. This makes it a straightforward choice for both internal platform teams and product companies building on top of it.
Running Harness yourself means you are responsible for the full operational stack. A minimal single-node deployment requires only Docker and a bind-mounted volume for persistent storage — the embedded SQLite database and local filesystem artifact storage require no external services. However, production workloads benefit from treating the database and artifact storage separately from the container, planning for backup schedules, and sizing the host for concurrent pipeline execution. Gitspaces add Docker container management to the operational surface, as each development environment runs as a container on the same host or a connected Docker daemon. Upgrades are performed by pulling a new image, which applies database migrations automatically on startup. There is no built-in high-availability mode in the open source edition.
The managed Harness SaaS platform (harness.io) adds capabilities that are absent from the open source edition: enterprise-grade SSO and RBAC, secrets management integrations, SLA-backed support, multi-cluster pipeline execution, advanced deployment strategies (canary, blue-green), feature flags, cloud cost management, and security testing orchestration. Teams self-hosting the open source version trade those features and operational hand-holding for full data sovereignty, no per-seat pricing, and the freedom to extend the platform. For small-to-medium engineering teams comfortable with Docker operations, the open source edition delivers substantial value without the managed service overhead.
No Code Platforms · AI Development · Developer Tools
Visual LLM workflow platform with RAG pipelines, agent capabilities, and model management for building production AI applications.
Developer Tools · Game Development · Design Tools
Free, MIT-licensed 2D and 3D game engine with one-click multi-platform export and no royalties.
Developer Tools · Databases · Search
The open-source Postgres development platform that replaces Firebase with authentication, real-time APIs, edge functions, storage, and vector embeddings — all built on PostgreSQL.