This document walks you through submitting an integration to the registry. Read the bounty call (Sections 5–8a) first if you're participating in a funded round — the bounty document is the binding scope.
- Ship your integration in your own repository.
- Publish a release to npm (or docker, for
kind: serviceintegrations). - Fork this registry, copy
integrations/TEMPLATE.jsontointegrations/<your-slug>.json, fill it out. - Open a PR here.
- CI runs; the committee reviews; your integration lands in the registry.
Your slug is the canonical identifier for your integration. It must:
- match
^[a-z][a-z0-9]*(-[a-z0-9]+)*$ - be 3–60 characters
- be unique across the registry
- follow the DKG look-before-mint normalization rule: lowercase → ASCII-fold → strip stopwords (the/a/an/of/for/and/or/to/in/on/with) → hyphenate
Before minting a slug, search the registry (rg '"slug":' integrations/) to see if something analogous already exists; reuse converges the graph, divergence fragments it.
One of:
mcp— your integration is an MCP server. The installer wires it into Cursor / Claude Code / Claude Desktop / the DKG node via their respective MCP configs.service— your integration is a long-running process (docker, npm-global daemon, or a downloadable binary).cli— your integration is a one-shot CLI tool. The installer installs it globally; the operator invokes it on demand.agent-plugin— your integration plugs into a specific agent framework (OpenClaw, ElizaOS, Hermes, AutoResearch).manual— your integration's install is complex enough that automation doesn't help; the installer links out to your docs.
Pick the one that most closely matches reality. If none fits, open an issue before submitting.
The security block in your entry is not marketing copy. It is a contract between your integration and the operators installing it. Lying here is grounds for removal and, for bounty submissions, disqualification.
security.networkEgress— every external host your integration contacts. The local DKG node on127.0.0.1does not count.security.writeAuthority— every DKG endpoint (or CLI command) your integration invokes that mutates state. List by path (POST /api/assertion/create, etc.). If you call any Curator-authority operation (PUBLISH, SHARE, endorse, verify), they must appear here.security.credentialsHandled— third-party credentials the installer will prompt the user for. Do not list the DKG auth token here; the installer handles it.security.notes— freeform prose covering anything the structured fields don't capture. If your package has anypostinstallbehavior, explain it here; default posture is "no install scripts."
Your entry carries:
commit— full 40-character git SHA of the state your submission represents.- For
kind: cliandkind: service(npm-global), a published npmpackageat a specificversion. - For
kind: service(docker), animageandversion, and ideally adigest(sha256). - For
kind: mcp, typically an npx invocation that pins the package version in the args.
Pin to a specific version. "latest" is not a pin. Updates require a new registry PR (this is intentionally cheap — small diff, fast review).
Use integrations/TEMPLATE.json as a starting point. Submit the PR with:
- Title:
Add <your-integration-name>(orUpdate <slug> to v<version>). - The PR checklist filled in (it's applied automatically from
.github/PULL_REQUEST_TEMPLATE.md). - A link to your design brief (bounty submissions — see bounty doc Section 8).
- A link to your demo (bounty submissions — recorded walkthrough or live endpoint).
- CI runs. Schema + structural checks via
scripts/validate.mjs; security checks viascripts/security-checks.mjsagainst the declared npm package. - Committee review. Fit, quality, and trust tier are assigned by humans, not CI.
- Merge and tier. The committee may merge your entry as
community,verified, orfeatured. You submit ascommunity; upgrades are decided by the committee.
To ship a new version of your integration:
- Release it in your own repo (new git SHA, new package version).
- Open a small registry PR bumping
commitand the relevantinstall.*.version(orargs). - Re-declare any changed security posture if your integration touches new endpoints, domains, or credentials.
git clone https://github.com/OriginTrail/dkg-integrations.git
cd dkg-integrations
npm install
npm run validate # runs the schema + structural checks on every entry
npm run security-checks # runs the security checks on the two seed entries- Bounty scope: see the v10 bounty document on the OriginTrail official channel.
- Registry mechanics: open an issue in this repo.
- General DKG v10 questions: Discord or the main
OriginTrail/dkgrepository.