Skip to content

Objects & Types

An Object is the basic unit of TypeMD. Each object is stored as a Markdown file with YAML frontmatter (properties) and body content.

Object IDs follow the format type/filename, e.g. book/golang-in-action. Each directory under objects/ is a type namespace — different types can share the same filename.

vault/
├── .typemd/
│ ├── types/ # type schema definitions (YAML)
│ │ ├── book.yaml
│ │ └── person.yaml
│ └── index.db # SQLite index (auto-updated)
└── objects/
├── book/
│ └── golang-in-action.md
└── person/
└── alan-donovan.md

Every object belongs to a type. Types define property names, data types, and validation rules via schema files stored in .typemd/types/.

TypeProperties
booktitle (string), status (enum: to-read/reading/done), rating (number)
personname (string), role (string)
notetitle (string), tags (string)
TypeDescriptionExample
stringText"Go in Action"
numberInteger or float42, 3.14
enumEnumerated value, requires values"reading"
relationLink to another object"person/alan"