Thogits
A thogit is an entry — an ID, a name, and an optional description. On its own it carries no structured data. Structure comes from tags.
Thogits has three core concepts:
Thogits
A thogit is an entry — an ID, a name, and an optional description. On its own it carries no structured data. Structure comes from tags.
Tags
Tags are not labels — they are schemas. Each tag defines a set of typed fields (String, Number, Date, Select, Reference, etc.). Applying a tag to a thogit gives it those fields.
Field Values
When a tag is applied, its field values are stored as JSON keyed by tag ID. Each tag’s data also tracks the schema version at the time it was applied.
┌──────────────────────────────────────────────────────────────┐│ Thogit ││ ├── id: ULID ││ ├── name: String ││ ├── description: String (optional) ││ └── data: Map<TagId, TagData> ││ └── TagData ││ ├── field_values: Map<String, JSON> ││ └── schema_version: u64 │├──────────────────────────────────────────────────────────────┤│ Tag ││ ├── tag_id: ULID ││ ├── name: String (unique) ││ ├── description: String (optional) ││ ├── fields: Map<String, Schema> ││ └── schema_version: u64 │└──────────────────────────────────────────────────────────────┘A single thogit can have any combination of tags. There is no fixed type hierarchy.
{ "id": "01JQX...", "name": "Fix login timeout bug", "description": "Session expires after 5 minutes instead of 30", "data": { "01JQA...": { "field_values": { "status": { "variant": "InProgress" }, "priority": ["High"] }, "schema_version": 3 }, "01JQB...": { "field_values": { "assignee": "01JQC...", "due_date": "2025-04-15" }, "schema_version": 1 } }}Here one thogit has two tags applied — perhaps “Task” and “Assignment” — each contributing their own fields. Remove a tag, and its fields disappear. Add a new tag, and the thogit gains new fields.
Tags track a schema_version that increments whenever their fields change. When a tag is applied to a thogit, the TagData records the version at that point. This makes it possible to detect when a thogit’s tag data was written against an older schema.
Traditional knowledge tools force you to choose a structure upfront. Thogits inverts that: