Skip to content
Machine Behavior

Service catalog

The service catalog lists every service that runs the platform, with the owner, tier, lifecycle, SLOs, dashboard, runbooks, docs, repository and dependencies. Each service has its own page, and each page is a node in the map linked to its docs and dashboards.

Source

One file per service in services/. scripts/build_inside.py reads them with a strict YAML reader (scripts/mini_yaml.py, standard library only) and writes:

  • /inside/services/ and /inside/services/<id>/;
  • inside/services/services.json, the machine-readable catalog, also read by the search index;
  • a managed block in sitemap.xml and a section "Inside services" in llms.txt.
python3 scripts/build_docs.py     # first: the catalog checks its docs links against the docs build
python3 scripts/build_inside.py

Fields

FieldRequiredValues
idyesSame as the file name
name, descriptionyesPlain text; the description is the meta description and the search snippet
owneryesThe person who answers for the service
operatornoWho runs it day to day, when that is not the owner (for example an agent session)
tieryes1, 2 or 3, see below
lifecycleyesexperimental, production, deprecated
systemyesPublishing, Observability, Research tooling, Agents
url, repositorynohttps URLs; repository: private for a private repository
dashboardnoname and url; the URL must be a public Grafana dashboard
slonoA list of name, target, good
docs, runbooksyesLists of doc:space/slug; may be empty
depends_onyesService ids; may be empty
externalnoDependencies outside the catalog, as plain names
statusnoWhere the status page reads the current state: gate (a conformity/latest.json URL) and deploys (a repository in the deploy feed)

The build stops on an unknown field, a missing required field, a value outside the allowed set, an id that differs from the file name, a docs link to a page that does not exist, or a dependency on an unknown service.

Tiers

TierMeaning
1Readers meet it directly, or it decides whether a deploy goes out. First in line when something breaks
2Keeps the platform observable and the research running. Fixed the same day
3Tooling a reader does not meet directly. Waits for the next working session

In the map

The crawler gives /inside/services/<id>/ pages the kind service and adds the public Grafana dashboards they link as dashboard nodes, titled by the link text used most often. A service page's <link rel="up"> to the catalog is a tree link. See Map crawler.

Add or change a service

  1. Copy a file in services/ that is close to the new service and edit it.
  2. Run both builds; fix what the build reports.
  3. Run the gate dry run, then pull, commit and push. See Deploy pipeline.

Built from scripts/docs by build_docs.py.