Skip to content

Introduction

TypeMD is a local-first CLI knowledge management tool. Your knowledge base is made of Objects — not files. Markdown is just the storage format.

Most note-taking tools make you think like a computer: files, folders, hierarchies.

TypeMD lets you think in Objects — books, people, ideas, meetings — connected by Relations. The structure emerges from your knowledge, not from a folder tree.

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

Object IDs follow the format type/filename, e.g. book/golang-in-action.

---
title: Go in Action
status: reading
rating: 4.5
---
# Notes
A great book about Go...

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

TypeMD includes three built-in types:

TypeProperties
booktitle (string), status (enum: to-read/reading/done), rating (number)
personname (string), role (string)
notetitle (string), tags (string)

Custom type schemas go in .typemd/types/.

Relations are defined as relation-type properties in type schemas. They support:

  • Unidirectional / Bidirectional — bidirectional relations auto-sync both sides
  • Single / Multiple values — multiple values stored as YAML arrays