Harthelm Docs

Machine-readable docs

llms.txt, every page as Markdown, and capabilities.json: the files tools and language models read.

Last updated 2026-10-22

These docs also come in forms that programs read without parsing HTML: an index and a full copy for language models, every page as Markdown, and capabilities.json, which describes Harthelm in one JSON file. They are built together with the pages, from the same release, and every address in them is absolute.

PathWhat
/llms.txtThe index: what the docs cover, then every page with its description, linked to its Markdown.
/llms-full.txtEvery page as Markdown, in one file.
/<page>.mdOne page as Markdown.
/capabilities.jsonHarthelm in one JSON file: the release, where releases come from, the features, the hart commands and the references.
/openapi.jsonThe OpenAPI document of the REST API.
/schemas/harthelm.schema.jsonThe JSON Schema of harthelm.yml.

llms.txt and llms-full.txt

/llms.txt follows the llms.txt convention: a title, a summary of what the docs cover, then a section for each part of the sidebar with every page's description and a link to its Markdown. The release notes are under Optional, the section a tool may skip. Read it first, then fetch the pages you need:

Terminal
curl https://docs.harthelm.dev/llms.txt

/llms-full.txt holds every page in one file, in the order of the sidebar, each with its title, description and address. It is large; take it when a tool wants all of the docs at once:

Terminal
curl -O https://docs.harthelm.dev/llms-full.txt

Every page as Markdown

Append .md to a page's address, without its trailing slash. The Markdown of https://docs.harthelm.dev/getting-started/quickstart/ is:

Terminal
curl https://docs.harthelm.dev/getting-started/quickstart.md

The first page of a section also answers with /index.md appended (/reference.md and /reference/index.md are the same page), and /index.md is /llms.txt.

Or ask for the page's own address with Accept: text/markdown:

Terminal
curl -H 'Accept: text/markdown' https://docs.harthelm.dev/getting-started/quickstart/

The site answers with Markdown when the Accept header lists text/markdown before text/html; browsers list text/html first and get the page. The answer's type is text/markdown; charset=utf-8, it says Vary: Accept, and like every Markdown copy it carries X-Robots-Tag: noindex, so search engines keep to the pages.

A page in Markdown starts with its title, its description, its address and the release it describes, then its text. Links to other pages are absolute. The operations of the REST API list their method and path, parameters, request body and responses.

capabilities.json

/capabilities.json describes Harthelm in one file: the release these docs describe, where its images, chart and files come from, the features with their pages, the hart commands, and the addresses of the OpenAPI document, the harthelm.yml schema, the chart values and the release notes. A tool that lands on any page finds it in the page's head, as <link rel="alternate" type="application/json">, and in /llms.txt.

Terminal
curl -s https://docs.harthelm.dev/capabilities.json | jq .product

The two documents it links are published next to it:

  • /openapi.json is the OpenAPI document of the release's REST API. Its server is https://console.example.com/api/v1; use your console's address. Every installation also serves its own at /api/v1/openapi.yaml.
  • /schemas/harthelm.schema.json is the JSON Schema of harthelm.yml. Every installation also serves it, without credentials, at /api/v1/schemas/harthelm.json.

Stability

schemaVersion changes only when a field is removed or changes meaning. New fields can appear at any time: read the fields you know and ignore the others. A field that does not apply is null, never left out.

Fields

Every address is absolute.

FieldTypeWhat
schemaVersionnumberThe version of this shape: 1.
generatedAtstringThe day the file was built, YYYY-MM-DD.
product.namestringHarthelm.
product.summarystringWhat Harthelm is, in one sentence.
product.versionstringThe release these docs describe, for example 1.6.0.
product.refstringIts tag, for example v1.6.0.
product.commitstringThe commit of the release.
product.committedAtstring or nullWhen that commit was made, ISO 8601.
product.stablebooleantrue when the docs describe a release, which the published docs always do.
product.releasedstring or nullThe release day from the release notes, YYYY-MM-DD.
product.apiVersionstringThe version of the REST API, info.version of the OpenAPI document.
docs.homestringThe docs home page.
docs.llmsTxtstring/llms.txt.
docs.llmsFullTxtstring/llms-full.txt.
docs.markdown.urlPatternstringThe address of a page's Markdown; {page} is the page's path without the slashes around it, for example getting-started/quickstart.
docs.markdown.acceptstringThe type that asks a page's own address for its Markdown: text/markdown.
docs.markdown.examplestringThe Markdown address of one page.
docs.sitemapstringThe sitemap.
docs.capabilitiesPagestringThis page.
releaseChannelobject or nullWhere the release comes from; null before 1.6.0, the first release published there.
releaseChannel.registry.hoststringregistry.harthelm.dev, the OCI registry with the images and the chart.
releaseChannel.registry.imagesstringHow the images are named: registry.harthelm.dev/harthelm/<image>:<tag>. Harthelm's own images are tagged with the release, for example 1.6.0; the managed services and the operators keep their vendor's own tag (the list).
releaseChannel.registry.chartstringThe chart: oci://registry.harthelm.dev/harthelm/charts/harthelm.
releaseChannel.registry.accessstringHow to get in: a login with your licence id and registry token.
releaseChannel.files.hoststringget.harthelm.dev, the release files.
releaseChannel.files.releasestring or nullThe folder of this release's files.
releaseChannel.files.sourcesstringThe folder of the source bundles.
releaseChannel.files.accessstringPublic HTTPS, no login.
releaseChannel.signingKeystring or nullThe public key that signs the release's images and chart; null for a release without one.
releaseChannel.guidestringGet Harthelm.
features[].idstringThe page's slug, for example workspaces.
features[].titlestringThe page's title.
features[].summarystringThe page's description.
features[].kindstringconcept or guide.
features[].groupstring or nullThe guide's group in the sidebar, for example Workspaces; null for a concept.
features[].urlstringThe page.
features[].markdownstringThe page as Markdown.
cli.namestringhart.
cli.referencestringThe hart reference.
cli.installstringInstall hart.
cli.commands[].namestringA top-level command, for example hart ws.
cli.commands[].groupstring or nullIts group in hart --help, for example Workspaces.
cli.commands[].summarystringWhat it does, in the words of hart --help.
cli.commands[].urlstringIts page in the reference.
cli.commands[].subcommandslist of stringsIts subcommands, for example hart ws create; empty for a command without any.
references.openapi.documentstring/openapi.json.
references.openapi.openapistringThe OpenAPI version of that document, for example 3.1.0.
references.openapi.apiVersionstringThe version of the REST API.
references.openapi.pagestringThe REST API reference.
references.openapi.installationPathstringWhere an installation's console serves the document, from the document's own server and route: /api/v1/openapi.yaml.
references.harthelmYml.schemastring/schemas/harthelm.schema.json.
references.harthelmYml.idstring or nullThe schema's $id.
references.harthelmYml.pagestringThe harthelm.yml reference.
references.harthelmYml.installationPathstringWhere an installation's console serves the schema, from the OpenAPI document's server and route: /api/v1/schemas/harthelm.json.
references.chartValues.pagestringThe chart values.
references.chartValues.chartstring or nullThe chart in the registry; null before 1.6.0.
references.releaseNotes.indexstringThe release notes.
references.releaseNotes.currentstring or nullThe release notes of this release.

features lists the concepts and then the guides, in the order of the sidebar; cli.commands lists the commands in the order of hart --help.

Example

The file for Harthelm 1.6.0, shortened to two of its features and one of its commands. /capabilities.json itself always describes the release these docs describe, so its release, dates and lists can differ from this one:

capabilities.json
{
  "schemaVersion": 1,
  "generatedAt": "2026-10-21",
  "product": {
    "name": "Harthelm",
    "summary": "Cloud workspaces and hosting for your team, on your own Kubernetes.",
    "version": "1.6.0",
    "ref": "v1.6.0",
    "commit": "273bdc8b21bf03340bec6007b1dffdfd38d5cf08",
    "committedAt": "2026-10-20T13:37:46+02:00",
    "stable": true,
    "released": "2026-10-20",
    "apiVersion": "0.12.0"
  },
  "docs": {
    "home": "https://docs.harthelm.dev/",
    "llmsTxt": "https://docs.harthelm.dev/llms.txt",
    "llmsFullTxt": "https://docs.harthelm.dev/llms-full.txt",
    "markdown": {
      "urlPattern": "https://docs.harthelm.dev/{page}.md",
      "accept": "text/markdown",
      "example": "https://docs.harthelm.dev/getting-started/quickstart.md"
    },
    "sitemap": "https://docs.harthelm.dev/sitemap.xml",
    "capabilitiesPage": "https://docs.harthelm.dev/reference/machine-readable/"
  },
  "releaseChannel": {
    "registry": {
      "host": "registry.harthelm.dev",
      "images": "registry.harthelm.dev/harthelm/<image>:<tag>",
      "chart": "oci://registry.harthelm.dev/harthelm/charts/harthelm",
      "access": "a login with your licence id and registry token"
    },
    "files": {
      "host": "get.harthelm.dev",
      "release": "https://get.harthelm.dev/releases/1.6.0/",
      "sources": "https://get.harthelm.dev/sources/",
      "access": "public HTTPS, no login"
    },
    "signingKey": "https://docs.harthelm.dev/cosign.pub",
    "guide": "https://docs.harthelm.dev/self-hosting/install/get-harthelm/"
  },
  "features": [
    {
      "id": "workspaces",
      "title": "Workspaces",
      "summary": "A workspace: your code on its own volume, the IDE, terminals, plans and visibility.",
      "kind": "concept",
      "group": null,
      "url": "https://docs.harthelm.dev/concepts/workspaces/",
      "markdown": "https://docs.harthelm.dev/concepts/workspaces.md"
    },
    {
      "id": "start-from-a-repository",
      "title": "Start from a repository",
      "summary": "Connect a Git account and create a workspace from a repository and branch.",
      "kind": "guide",
      "group": "Workspaces",
      "url": "https://docs.harthelm.dev/guides/start-from-a-repository/",
      "markdown": "https://docs.harthelm.dev/guides/start-from-a-repository.md"
    }
  ],
  "cli": {
    "name": "hart",
    "reference": "https://docs.harthelm.dev/reference/hart/",
    "install": "https://docs.harthelm.dev/getting-started/install-hart/",
    "commands": [
      {
        "name": "hart ws",
        "group": "Workspaces",
        "summary": "List, create, open, wake and delete workspaces",
        "url": "https://docs.harthelm.dev/reference/hart/ws/",
        "subcommands": [
          "hart ws create",
          "hart ws delete",
          "hart ws list",
          "hart ws open",
          "hart ws purge",
          "hart ws wake"
        ]
      }
    ]
  },
  "references": {
    "openapi": {
      "document": "https://docs.harthelm.dev/openapi.json",
      "openapi": "3.1.0",
      "apiVersion": "0.12.0",
      "page": "https://docs.harthelm.dev/reference/api/",
      "installationPath": "/api/v1/openapi.yaml"
    },
    "harthelmYml": {
      "schema": "https://docs.harthelm.dev/schemas/harthelm.schema.json",
      "id": "urn:harthelm:schema:harthelm-v1",
      "page": "https://docs.harthelm.dev/reference/harthelm-yml/",
      "installationPath": "/api/v1/schemas/harthelm.json"
    },
    "chartValues": {
      "page": "https://docs.harthelm.dev/reference/chart-values/",
      "chart": "oci://registry.harthelm.dev/harthelm/charts/harthelm"
    },
    "releaseNotes": {
      "index": "https://docs.harthelm.dev/releases/",
      "current": "https://docs.harthelm.dev/releases/v1-6-0/"
    }
  }
}

On this page