---
title: Registry schema
scope: 3dmk
type: schema
subject: registry
status: current
updated: "2026-10-31"
source: https://3dmk.com/documentation#registry-schema
author: Nick Olson
contact:
  email: 3dmk@3dmk.com
  site: https://3dmk.com
license: CC BY 4.0
license_url: https://creativecommons.org/licenses/by/4.0/
attribution: Nick Olson, 3dmk.com
tags:
  - registry
  - json-schema
  - inventory
---

# Registry schema

The Registry is the inventory of a development environment. It records the themes, projects, source repositories, dependencies, and machines that make up the environment. This file describes a new Registry with no records in it yet.

The developer keeps the Registry's source in GitHub. The data is available through an API, and every agent and tool reads and writes it there.

## Records

- **Theme:** a top-level grouping of projects, with a name and a description.
- **Project:** one unit of work inside a theme, with a type and a short context tag.
- **Source:** the one repository of a project: language, repository URL, default branch, release tags, and development host.
- **Libraries:** the dependencies read from a source's manifest files, each with a version and a scope.
- **Host:** a machine in the environment, with its operating system, address, and role.
- **Meta:** the development base path, the time of the last change, and the schema version.

## Schema

Each field holds a description of its value in place of data.

```json
{
  "meta": {
    "dev_base": "<string> 1-120 character ASCII",
    "last_updated": "<ISO 8601> UTC",
    "schema_version": "1.2"
  },
  "theme": [
    {
      "theme_id": "<base62> 6 character",
      "theme_name": "<string> 2-20 character a-z0-9",
      "theme_display_name": "<string> 2-30 character ASCII",
      "description": "<string> 0-256 character ASCII",
      "theme_base": "<string> 1-20 character ASCII",
      "status": "<enum> active/inactive"
    }
  ],
  "project": [
    {
      "theme_id": "FROM theme.theme_id",
      "project_id": "<base62> 6 character",
      "project_name": "<string> 2-30 character a-z0-9-",
      "project_display_name": "<string> 2-30 character ASCII",
      "context": "<string> 2-20 character a-z0-9",
      "project_type": "<enum> service/library/application/tool/plugin/infrastructure/documentation/assets/website-static/website-dynamic",
      "status": "<enum> active/inactive"
    }
  ],
  "source": [
    {
      "project_id": "FROM project.project_id",
      "source_id": "<base62> 6 character",
      "source_base": "<string> 1-20 character ASCII",
      "source_name": "<string> 1-30 character a-z0-9-",
      "source_type": "<enum> python/typescript/rust/go/swift/kotlin/csharp/lua/documentation/data/assets/infra/template",
      "provider": "<enum> github",
      "url": "<string> 0-256 character ASCII",
      "tag_dev": "<string|null> 1-40 character ASCII",
      "tag_prod": "<string|null> 1-40 character ASCII",
      "default_branch": "<string> 1-20 character a-zA-Z0-9-",
      "last_code_update": "<ISO 8601> UTC",
      "infra_dev_host": "<string|null> FROM host.host_name",
      "infra_dev_port": "<int|null>",
      "infra_service_name": "<string> 1-40 character a-zA-Z0-9-",
      "status": "<enum> active/inactive"
    }
  ],
  "libraries": [
    {
      "libraries_id": "<base62> 6 character",
      "source_id": "FROM source.source_id",
      "language": "<enum> python/typescript/rust/go/swift/kotlin/csharp/lua/documentation/data/assets/infra/template",
      "dependencies": [
        {
          "name": "<string> 1-128 character ASCII",
          "version": "<string> 1-40 character ASCII",
          "scope": "<enum> runtime/dev/prod"
        }
      ]
    }
  ],
  "host": [
    {
      "host_id": "<base62> 6 character",
      "host_name": "<string> 2-30 character a-z0-9-",
      "display_name": "<string> 2-30 character ASCII",
      "ip": "<string> IPv4 dotted quad",
      "os": "<enum> windows/macos/linux",
      "is_developer": "<bool>",
      "is_docker": "<bool>",
      "docker_url": "<string|null> tcp://<host>:<port>, required when is_docker",
      "remote_mcp_url": "<string|null> remote MCP server URL",
      "status": "<enum> active/inactive"
    }
  ]
}
```

## Notation

- `<string>`: text, with its length range and its allowed characters.
- `<string|null>`: text, or null when the field has no value yet.
- `<enum>`: one value from the list that follows, with slashes between the choices.
- `<base62>`: a 6-character identifier that the Registry issues from a counter.
- `<ISO 8601>`: a date and time in Coordinated Universal Time (UTC).
- `<bool>`: true or false.
- `<int|null>`: a whole number, or null.
- `FROM`: a reference to a field in another list, which must already exist.

A project names its theme, a source names its project, and a libraries record names its source. A source names its development host by the host's name, not its identifier. Themes, projects, sources, and hosts are never deleted. Their status moves to inactive instead.
