Categories are a fixed enum:
notelessondecisionpreferenceworkflowsnippetUnknown categories on post or put are usage errors.
Entries are exposed through brief get --json as objects with this shape:
[
{
"id": 494,
"title": "...",
"content": "...",
"category": "note",
"language": null,
"tags": ["hooks", "go"],
"created_at": "2026-03-12T00:00:00Z",
"updated_at": "2026-03-12T00:00:00Z",
"deprecated_at": null
}
]
entries
id integer primary keytitle required textcontent required textcategory required textlanguage nullable textcreated_at datetimeupdated_at datetimedeprecated_at nullable datetimeembedding nullable blob (normalized float32 vector; null when no embedding was stored)embedding_model nullable text (model name used to produce a stored embedding; null when no embedding was stored)tags
id integer primary keyentry_id foreign key to entries.idtag text(entry_id, tag)config
key primary keyvalue textValid config keys:
default_limitdefault_categoryFull-text search uses SQLite FTS5 over title and content.
Query processing:
word*)."exact phrase") are passed to FTS5 as phrase literals.Ranking:
Text output includes a content snippet with match terms highlighted in [brackets].
The --json output shape is unaffected; the snippet is text-only.
deprecate is the standard lifecycle pathget results by defaultbrief get --include-deprecated opts them back indelete is irreversible hard delete