Compliance GRC Console (containerised)

Productivity

A self-hosted GRC (governance, risk and compliance) console: control-to-framework mappings, a risk register, vendor risk, audit projects and evidence management, brought up on your own machine with Docker Compose, where the first account registered is the administrator. Derived from a frozen snapshot of an open-source GRC platform under the MIT licence; the delivery holds a Dockerfile that builds the image from source, an orchestration file that binds the published ports to 127.0.0.1, a key generation script and a Traditional Chinese quick-start guide. That guide says plainly that this orchestration is a local evaluation configuration, not a deployment that can go live.

SubscriptionUS$49 per month
Last run2026-11-02
In practice
Readiness5 / 5
What you need
Few changes needed3 / 5

Who it is for

Small and mid-sized teams and consultants preparing for a SOC 2 / ISO 27001 / GDPR audit: this product is a self-hosted version running inside your own Docker, and once it is up you can start building control mappings, the risk register and evidence filing.

How to start

$ scripts/quickstart/init-env.sh
$ docker compose -f compose.quickstart.yaml up -d --build

Browse the files

Files in the product repository at the pinned commit. A few house files are left out of the zip.

File overview2,000+ paths
▸apps38
compliance-portal/
console/
▸assets3
fontconfig/
fonts/
▸cmd18
acme-keygen/
geoloc-import/
migrate-document-versions-markdown/
prb/
probo-agent/
proboctl/
probod-bootstrap/
probod/
▸compose7
caddy/
keycloak/
postgres/
prometheus/
seaweedfs/
step-ca/
tempo/
▸contrib56
claude/
helm/
lima/
merge-graphql-schema.sh
seed.sh
▸data1
mitigations.json
▸docs12
README.md
i18n/
security/
upstream-patches.md
▸e2e105
console/
internal/
mcp/
trust/
▸examples9
cookie-banner-react/
▸internal2
cmd/
test/
▸packages182
cookie-banner/
coredata/
emails/
eslint-config/
eslint-relay-plugin-types/
helpers/
hooks/
i18n/
n8n-node/
prosemirror/
…
▸pkg1457
accessreview/
agent/
agentrun/
awsconfig/
baseurl/
bearertoken/
bootstrap/
brand/
cachecontrol/
certmanager/
…
▸scripts18
delivery/
demo-seed/
i18n/
pdf-smoke/
quickstart/
security/
▫AGENTS.md
▫ATTRIBUTION.md
▫CHANGELOG.archive.md
▫CHANGELOG.md
▫CLAUDE.md
▫CONTRIBUTING.md
▫DCO.md
▫Dockerfile
▫Dockerfile.quickstart
▫GNUmakefile
▫LICENSE
▫LICENSE-99LL.md
▫PRODUCT.md
▫QUICKSTART.md
▫README.md
▫SECURITY.md
▫SECURITY_NOTES.md
▫THIRD-PARTY-NOTICES
▫compose.github-action.yaml
▫compose.prod.yaml
▫compose.quickstart.yaml
▫compose.yaml
▫delivery-manifest.txt
▫entrypoint.sh
▫eslint.config.mjs
▫go.mod
▫go.sum
▫package-lock.json
▫package.json
▫relay.config.json
▫trivy.yaml
▫turbo.json
▫Config and hidden files 60

Latest passing run

Clone → Checkout → Toolchain → Build images → Console signup and signin

Pre-purchase Disclosure

What you are buying

A self-hosted GRC (governance, risk and compliance) console: a risk register, control-to-framework mappings, vendor risk and evidence management. After running the key script you bring it up with Docker Compose, and the first account registered is the administrator.

Derived from an open-source GRC platform under the MIT licence, and not the original project itself. Our work: a Dockerfile that builds the image from source, an orchestration file that binds the published ports to 127.0.0.1, a key generation script and documentation in Traditional Chinese.

Delivery is a frozen snapshot: one zip, taken from the product repository at revision 3dc8cee.

Known limitations

  • The delivered configuration serves plain HTTP on port 8080, and the login cookie carries no Secure flag; TLS and a reverse proxy are yours to bring
  • The quick-start guide says plainly that this orchestration is a local evaluation configuration, not a deployment that can go live
  • The delivered configuration leaves registration open by default: anyone who can reach the console can register an account
  • The built-in mailbox has no authentication, and it receives the password reset mail the system sends
  • The database and the object storage use the fixed credentials in the environment variable template, the same set in every delivery
  • The optional demonstration data creates an account with administrative privileges, whose credentials are written in the documentation and in the script
  • The AI assistant feature only works once your own OpenAI key is filled in; the template gives a fake value
  • The data lives in Docker named volumes, and docker compose down -v clears it along with them
  • The first start builds the images from source, fetching from registries, the operating system package repositories, Go and npm during that time
  • The build steps include apt-get upgrade -y, so the system packages taken are the versions of the day of the build
  • The console front end’s stylesheet fetches fonts from Google Fonts with @import, and the delivered configuration does not change that
  • Pinned to the delivered snapshot; it does not follow upstream.

The liability cap, the scope of what is promised and the statutory floor are governed by the Terms of Service.

Vetting record

Everything below was checked against the pinned commit 5c5f60d. Every verdict carries its full reasoning, an evidence link and the checker; failures are published, not hidden — do not take our word for it, verify it yourself.

5 PASS0 WARN0 FAIL

Source ReviewPASS

The execution surface of the delivery was reviewed item by item: the files we added were read line by line (compose.quickstart.yaml, Dockerfile.quickstart, scripts/quickstart/init-env.sh) — both published ports (the console on 8080 and the built-in mailbox on 8025) are bound to 127.0.0.1, and the database, the object storage and the headless browser communicate only on the compose internal network; the four sets of keys needed to start are generated at random by the script and left empty in the environment variable template. The credentials for the database and the object storage, on the other hand, are fixed values in the template, the same set in every delivery, and the template itself notes that they are safe only on the premise that those two ports are not published externally. init-env.sh guards against overwriting: replacing the encryption key would make existing data impossible to decrypt, so it refuses to run once it detects an existing file. Upstream's Go / TypeScript source was not read file by file; the basis here is the MIT licence, container isolation and the evaluation-configuration warning stated plainly in the quick-start guide.

Evidence is in our private repository (not publicly accessible):https://github.com/dev-zillio-cc/dsp-021-compliance-grc-console/blob/a4e8c7211bf5583d11e4bad350c650f3c00b9979/compose.quickstart.yamlChecked in 2026Checked by claude-code build-product session B
Script SafetyPASS

The scripts that run on the buyer's delivery path were each examined: init-env.sh was written by us (read line by line: openssl produces four sets of keys, it writes one .env.quickstart only, and it guards against overwriting); the build goes through Dockerfile.quickstart (read line by line: go mod download, npm ci, merging the GraphQL schema and go generate, and apt installing run-time dependencies, with no shape of the form "download and feed straight into a shell"); the database migration runs automatically when the container starts, along upstream's own official path. The optional demonstration data script scripts/demo-seed/seed.mjs creates its data through the console's own API and creates a demonstration account with administrative privileges, whose credentials are written in that script and in the quick-start guide.

Evidence is in our private repository (not publicly accessible):https://github.com/dev-zillio-cc/dsp-021-compliance-grc-console/blob/a4e8c7211bf5583d11e4bad350c650f3c00b9979/Dockerfile.quickstartChecked in 2026Checked by claude-code build-product session B
RecencyPASS

This product is a frozen snapshot and does not follow upstream: upstream's source is pinned at the commit 5c5f60d5 as it stood at the time of vetting (see the evidence link), and the product repository consists of that snapshot plus the commits of our own work. At the time of vetting the upstream repository was public and not archived.

Evidence ↗Checked in 2026Checked by claude-code build-product session B
LicensePASS

SPDX:LicenseRef-99LL-Product

Upstream's LICENSE was checked word for word (the evidence link points at the file itself at the pinned commit, and it was compared against the same file inside the product repository and found consistent): the standard full text of the MIT licence, Copyright (c) 2025 Probo Inc — permitting commercial use, modification, derivative works, redistribution and sale, with the obligation of retaining the copyright notice and the full text of the licence (LICENSE, THIRD-PARTY-NOTICES and ATTRIBUTION.md are delivered with the zip). This is not a judgement made from GitHub's licence field. For the product as a whole, the 99LL product licence template is attached: upstream's LICENSE and THIRD-PARTY-NOTICES are kept as they stand, and LICENSE-99LL.md is placed alongside them as the sale and liability terms for the parts we added, with spdx recorded as LicenseRef-99LL-Product.

Evidence ↗Checked in 2026Checked by claude-code build-product session B
Dependency LicensesPASS

What is recorded here is the declaration surface, not the result of a scan: the Go dependencies are declared in go.mod / go.sum and the front end is locked by package-lock.json, with the packages themselves fetched from their own registries when the buyer builds; the run-time base images (postgres, seaweedfs, chromedp headless-shell, mailpit) are likewise pulled from registries by the buyer. The licences of those dependency trees were not scanned package by package. The third-party material that does enter the tree under version control and is distributed with the zip is recorded in ATTRIBUTION.md as three items: two datasets (disposable-email-domains and country-ip-blocks, both CC0-1.0) and one font (Noto Sans TC, OFL-1.1), each with its own licence file kept in its own directory. The THIRD-PARTY-NOTICES upstream maintains is kept with the delivery as it stands.

Evidence is in our private repository (not publicly accessible):https://github.com/dev-zillio-cc/dsp-021-compliance-grc-console/blob/a4e8c7211bf5583d11e4bad350c650f3c00b9979/THIRD-PARTY-NOTICESChecked in 2026Checked by claude-code build-product session B
HEALTH VERIFIED

Last verified passing: 2026-11-02

Subscribe for everything
US$49/ monthwas US$99

A subscription unlocks the whole catalogue; you do not buy this one separately.See what is included

Sign in with Google first; if you are signed out you will be sent to the sign-in page. Your subscription is billed to that same email address.

Already subscribed? This downloads straight away. Otherwise you are sent to the pricing page, or to sign in first.