Aurélien Sibiril e18ecdda8b Consolidate connector provider dispatch behind a typed *Registry
The console previously dispatched per-provider logic through a fan of
init()-side-effect maps (driver names, OAuth2 metadata, probe URLs,
display names, settings switches), spread across pkg/connector,
pkg/accessreview/drivers and the console v1 resolvers. Adding a new
provider required edits in every one of those places and a corresponding
switch arm in CreateConnectorRequest. The same per-provider knowledge
also leaked into Helm templates as hand-rolled environment-variable
blocks per connector.

This commit collapses the dispatch surface into a single typed
*provider.Registry. The registry is constructed once by
NewBuiltinRegistry at probod startup and threaded as an explicit
dependency into every consumer (accessreview service, console v1
resolver, OAuth2 wiring). There is no package-level state. Each
provider lives in one file under pkg/connector/provider/ that exposes
a private xxxRegistration() *Registration constructor; NewBuiltinRegistry
enumerates them.

CreateConnectorRequest loses its per-provider settings fields and
takes a single RawSettings json.RawMessage produced by the
per-provider MarshalSettings closure. The 1Password SCIM bridge URL
is validated at create time (http(s) scheme + non-empty host) so a
malformed value fails fast at the resolver boundary. The Helm chart
gains probo.connectorEnv and probo.connectorSecretEntries templates
so adding a connector requires zero Helm changes. Access-review name
resolution moves into the same Registration value to keep one
authoritative dispatch table.

Tests cover every Registration (DisplayName, NewDriver wired),
Register error paths (nil, empty Provider, empty DisplayName,
duplicate), All / ProviderDisplayName / ProviderOAuth2Scopes /
ProbeURL hit and miss paths, the ApplyOAuth2Defaults templating and
PKCE branches, and ConnectorSettings[T] round-trip plus malformed-JSON
error path. The pre-refactor ApplyProviderDefaults test in
pkg/connector is replaced by the equivalent in
pkg/connector/provider.

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
2026-05-27 00:34:39 +02:00
2026-05-26 15:22:27 -07:00
2026-05-26 18:06:54 +02:00
2026-05-26 13:59:17 -07:00
2026-04-15 16:42:56 +02:00
2025-04-09 21:19:53 -07:00
2025-11-25 11:29:54 +01:00
2026-05-19 14:10:39 +04:00
2025-12-24 08:46:21 +01:00
2026-05-25 15:01:35 -07:00
2026-03-13 16:55:23 +01:00
2026-05-25 16:52:09 -07:00
2026-05-26 18:06:41 +02:00
2025-01-13 12:56:14 +01:00
2026-05-25 15:01:35 -07:00
2026-05-26 13:45:55 -07:00
2026-05-26 13:45:55 -07:00
2025-04-10 21:04:27 -07:00
2026-05-20 12:57:30 +00:00
2026-05-26 13:45:33 -07:00
2025-01-10 16:31:34 +01:00
2025-12-26 17:33:03 +01:00

Probo

License Build Discord

Open-source GRC platform for engineers.

Probo is a self-hostable governance, risk, and compliance (GRC) platform built for engineering and security teams. It covers the full GRC lifecycle: risk identification, control tracking, vendor risk, data privacy, access reviews, audit programs, and document approval workflows. Every entity is accessible through a web console, a CLI, a Model Context Protocol (MCP) API, and a GraphQL API, so you can automate compliance work from code, scripts, or any LLM agent.

Why Probo?

  • AI-native by design. 270+ MCP tools expose every entity and operation. Any MCP-compatible LLM agent can read and write your GRC data, draft policies, run risk assessments, and generate evidence packs.
  • Full GRC coverage. Risk management, controls, vendor risk, data privacy (DPIA/TIA), access reviews, audit programs.
  • Multiple interfaces. Web console, prb CLI (44+ command groups), MCP API, GraphQL, and an n8n community node for no-code automation.
  • Open source and self-hostable. ISC licensed. Run it on your own infrastructure with Docker.
  • Audit-ready. Policy-based RBAC, immutable audit logs, electronic document sign-off workflows, and evidence chains.

Capabilities

Domain Features
Risk Management Risk register, inherent/residual scoring, treatment strategies (mitigate, accept, avoid, transfer), threat-based risk assessments
Controls & Frameworks Control library with maturity levels, custom framework import/export, Statement of Applicability (SoA)
Vendor / Third-Party Risk Vendor inventory, automated website risk assessment, DPA/BAA tracking, subprocessor discovery
Data Privacy DPIA, Transfer Impact Assessments, processing activity records, data inventory, rights requests (SAR/erasure)
Access Reviews Campaign management, per-entry access decisions, integration with SaaS, cloud infra, and source code sources
Audit Programs Audit scoping, control mapping, finding tracking, report generation
Evidence & Measures Evidence collection (files and URLs), implementation state tracking, task assignment
Document Management Versioned documents, approval quorums, electronic signatures, PDF export, bulk operations
Compliance Page Public compliance portal, NDA management, certification publishing, custom domain support
Cookie & Consent Cookie banner management, tracker detection, consent records

Interfaces

Web console

The primary interface for day-to-day GRC work. Runs at http://localhost:8080 in development.

CLI (prb)

A fully-featured command-line client for scripting, automation, and CI/CD integration. Covers all 44+ resource types available in the web console.

# Authenticate
prb auth login

# List open risks
prb risk list

# Create a measure and link evidence
prb measure create --name "MFA enforced on all production systems"
prb evidence create --measure <id> --file screenshot.png

# Manage vendor compliance
prb thirdpartymgmt vendor list
prb thirdpartymgmt risk-assessment create --vendor <id>

Run prb help for the full command reference.

MCP API

Probo exposes 270+ MCP tools covering every entity and operation in the platform. Any MCP-compatible LLM agent (Claude, Cursor, Continue, and others) can connect directly and interact with your compliance data.

The full MCP specification is at pkg/server/api/mcp/v1/specification.yaml.

n8n node

The @probo/n8n-nodes-probo community node brings Probo into n8n workflows for no-code automation of compliance tasks over the GraphQL API.

Quick Start

Prerequisites

Tool Version
Go 1.26+
Node.js 22+
Docker latest
mkcert latest

Steps

# 1. Clone with submodules
git clone --recurse-submodules https://github.com/getprobo/probo.git
cd probo

# 2. Install dependencies
go mod download
npm ci

# 3. Start infrastructure services (PostgreSQL, object storage, etc.)
make stack-up

# 4. Build
make build

# 5. Generate the local dev config
make dev-config

# 6. Run the server
bin/probod -cfg-file cfg/dev.yaml

The web console is available at http://localhost:8080.

See CONTRIBUTING.md for the full development environment walkthrough, including the frontend dev server and code generation steps.

Tech Stack

Layer Technologies
Backend Go, PostgreSQL
API GraphQL, MCP
Frontend React, TypeScript, Relay, TailwindCSS
Infrastructure Docker, GitHub Actions
Observability OpenTelemetry, Grafana, Prometheus, Loki, Tempo

Contributing

Contributions are welcome. Read CONTRIBUTING.md before opening a pull request. All commits require a Developer Certificate of Origin (DCO) sign-off (git commit -s). No CLA required.

To report a security vulnerability, email security@getprobo.com rather than opening a public issue. See SECURITY.md for the full disclosure policy.

Community

License

Probo is ISC licensed.

Description
No description provided
Readme MIT 72 MiB
Languages
Go 67%
TypeScript 31.7%
Shell 0.5%
CSS 0.2%
Makefile 0.2%
Other 0.3%