The Open-Source Data Operating System
An open, cloud-native operational data platform for building data products with datasets, ontologies, applications, AI/ML, governance, and observability from one monorepo.
Documentation Β· Architecture Β· Contributing Β· Security Β· Issues
OpenFoundry is an open-source operational data platform inspired by the capability model of Palantir Foundry, implemented as auditable, extensible software. It combines 42 Go microservices, 33 shared libraries, Protobuf/OpenAPI contracts, generated SDKs, a React 19 + Vite + TypeScript web console, and declarative infrastructure for Kubernetes.
The goal is to provide a reproducible foundation for teams that need to connect sources, version datasets, model an ontology, expose APIs, automate workflows, govern access, and operate analytical or AI workloads with end-to-end traceability.
Working with this codebase as an AI agent? Start at
CLAUDE.md. It is the canonical onboarding guide for commands, conventions, security-critical zones, and what not to read by default.
- Cloud-native architecture: small Go services, one entrypoint per service, and delivery through Helm, ArgoCD, and Terraform.
- Ontology at the core: object types, actions, functions, object views, lineage, and stable contracts for building applications on operational data.
- Contracts first: Protobuf as the source of truth, generated OpenAPI, and synchronized TypeScript, Python, and Java SDKs.
- Integrated governance: authentication, authorization, Cedar policies, audit, tenancy, SSO/MFA, and egress controls.
- Observability by default:
/healthz,/metrics, Prometheus, Grafana, Mimir, structured logs, and OTel traces. - Developer platform: CLI tooling, SDK generation, service templates, VitePress docs, and unit/integration test paths.
| Capability | Status | Capability | Status |
|---|---|---|---|
| Datasets & versioning | β Available | Ontology services | β Available |
| React web console | β Available | Generated SDKs | β Available |
| Protobuf/OpenAPI contracts | β Available | AuthN/AuthZ foundations | β Available |
| Observability stack | β Available | Helm/ArgoCD delivery | β Available |
| Kafka/NATS integrations | β Available | Lakehouse/Iceberg paths | Under active development |
| AI/agent runtime services | Under active development | Production hardening | In progress |
| Area | OpenFoundry | Closed platforms |
|---|---|---|
| Control | Auditable code, contracts, and infrastructure in one monorepo. | Strong provider dependency and less implementation visibility. |
| Extensibility | Services, libraries, SDKs, and docs can evolve with your needs. | Extensions are limited by external APIs and vendor roadmaps. |
| Deployment | Kubernetes, Helm, ArgoCD, Terraform, and Compose for reproducible environments. | Usually SaaS or managed deployments with less operational control. |
| Governance | Policies, audit, and tenancy live beside the platform code. | Governance is coupled to the product and its commercial boundaries. |
| Developer workflow | Standard Go, TypeScript, Python, Java, Protobuf, and Makefile workflows. | Proprietary tooling or local workflows that are harder to automate. |
git clone https://github.com/openfoundry/openfoundry-go.git
cd openfoundry-gomake toolsThis installs the Go tools used by the monorepo into ./bin, including buf, golangci-lint, sqlc, and gofumpt.
make cimake ci runs tidy, vet, lint, contract checks, and unit tests. For faster iteration, use:
make test
make build
make contracts-checkpnpm install
pnpm --filter @open-foundry/web devThe web application lives in apps/web/ and uses React 19, Vite, and TypeScript.
docker compose -f infra/compose/docker-compose.yml up -dFor development, there is also:
docker compose -f infra/compose/docker-compose.dev.yml up -dmake gitops-bootstrap
make gitops-statusDelivery assets live in infra/: Helm charts, ArgoCD apps, Terraform, Compose, and operational runbooks.
openfoundry-go/
βββ apps/web/ React 19 + Vite + TypeScript frontend
βββ services/ Go microservices; copy services/template/ for new services
βββ libs/ Shared Go packages for auth, observability, kernels and more
βββ proto/ Protobuf source of truth; Go generated into libs/proto-gen/
βββ sdks/ Generated TypeScript, Python and Java SDKs
βββ infra/ Helm, ArgoCD, Terraform, Compose and operational runbooks
βββ docs/ VitePress capability-oriented documentation site
βββ tools/ CLIs and lint/helper tools
βββ images/ Project branding assets, including this README logo
βββ go.mod Single Go module for the entire monorepo
βββ Makefile Canonical local task runner
Per-service shape:
services/<svc>/
cmd/<svc>/main.go entrypoint
internal/server/ chi router (/healthz, /metrics, /api)
internal/handlers/ HTTP handlers
internal/domain/ pure logic
internal/repo/ data access, sqlc-generated when relevant
internal/repo/migrations/ goose-style SQL migrations
internal/models/ wire types
internal/config/ koanf-backed config
OpenFoundry uses a single Go module (go.mod at the root) instead of a multi-module go.work setup because it:
- Keeps
libs/andservices/synchronized without version drift. - Simplifies dependency resolution, caching, and builds.
- Makes contract generation and compatibility tests more direct.
- Follows a familiar pattern for large infrastructure monorepos.
Splitting specific services into their own modules remains possible if the project needs it.
Run these commands from the repository root:
make help # list available targets
make tools # install tools into ./bin
make ci # tidy + vet + lint + contracts-check + test
make test # unit tests with race detector and coverage
make test-integration # tests with the integration build tag; requires Docker
make gen # regenerate proto Go, sqlc, OpenAPI, and SDKs
make contracts-check # verify OpenAPI and SDK drift
make build # compile all packages
make build-services # compile one binary per service into ./bin/
make lint # golangci-lint
make fmt # gofumpt + gciFrontend:
pnpm --filter @open-foundry/web dev
pnpm --filter @open-foundry/web check
pnpm --filter @open-foundry/web testdocs/β capability-oriented technical documentation.docs/index.mdβ VitePress site entrypoint.ARCHITECTURE.mdβ high-level architecture overview.docs/architecture/adr/β dated architectural decisions.CLAUDE.mdβ concise onboarding for AI agents.CONTRIBUTING.mdβ PR process, RFC requirements, and DCO policy.SECURITY.mdβ how to report vulnerabilities.
Some contracts are pinned by golden tests and must not change without an explicit migration:
/healthzpayload shape (status,service,version,timestamp).- JWT claim names and JSON tags.
- Dataset RID format:
ri.foundry.main.dataset.<uuid-v7>. - Transaction state/type tokens:
open|committed|abortedandsnapshot|append|update|delete. - Marking source and schema field type discriminators.
- Media reference camelCase keys (
mediaSetRid,mediaItemRid,branch,schema).
- Open a bug report or feature request in GitHub Issues.
- Review the documentation in
docs/before changing services or contracts. - For new capabilities, start from
services/template/and the existing ADRs.
Contributions are welcome. See CONTRIBUTING.md for the PR process, RFC requirements, and DCO policy. Security reports follow SECURITY.md.
OpenFoundry is licensed under AGPL-3.0-only. See LICENSE.