Skip to content

Terminology reference

This page is the single source of truth for product names, API identifiers, and entity type vocabulary used across ZettelForge documentation. When in doubt, prefer the forms listed here over informal variations.

Prerequisites: None. This page describes the public names and identifiers in ZettelForge 2.8.0 and the canonical name of the hosted ThreatRecall.ai product.


Product names

Term Use Avoid
ZettelForge The open-source CTI memory engine. Always one word, always capitalized. "Zettelforge", "zettelforge", "ZF" in prose
ThreatRecall.ai The hosted SaaS product. One word, capital T and R, with lowercase ai after the dot. "ThreatRecall", "Threat Recall", "threatrecall" in prose
ZettelForge OSS Acceptable short form when distinguishing from SaaS in the same sentence. "ZettelForge open source" after the first mention

ThreatRecall.ai is the commercial hosted product. ZettelForge is the MIT-licensed open-source engine. They share a core but are distinct products; do not use the names interchangeably.


Core API classes

Term Description
MemoryManager The main Python class. PascalCase, two words joined.
MemoryNote The data model for a stored memory. PascalCase.
get_memory_manager() Process-wide singleton factory function. snake_case.

API methods

Use the exact method names from source; do not shorten or paraphrase them in code examples or inline code spans.

Method Description
remember() Store one note.
remember_chunked() Split and store a long text as multiple notes.
remember_with_extraction() Two-phase LLM extraction into notes.
remember_report() Ingest a news or threat report with chunking and extraction.
recall() Retrieve notes by blended vector and graph retrieval.
recall_actor() Entity-index lookup by actor name.
recall_cve() Entity-index lookup by CVE ID.
recall_tool() Entity-index lookup by tool name.
recall_technique() Entity-index lookup by ATT&CK technique ID.
recall_entity() Entity-index lookup by type and value.
synthesize() Retrieval-augmented answer generation.
ingest_relationship() Write a knowledge graph edge directly.
traverse_graph() Walk relationship paths outward from an entity.
get_entity_relationships() Return direct knowledge graph neighbors of an entity.
get_context() Return a formatted context string for agent prompts.
flush() Block until background enrichment jobs complete.
snapshot() Export a JSONL snapshot of memory.

Entity types

These strings are the canonical values used in recall_entity(), ingest_relationship(), and the entity index. Spell them exactly as shown.

CTI and IOC types (regex-extracted, no LLM required)

Entity type Example
cve CVE-2024-1234
intrusion_set APT28, UNC4990, FIN7
actor Lazarus, Sandworm, Volt Typhoon
tool Cobalt Strike, Mimikatz, BloodHound
campaign Operation Aurora
attack_pattern T1059, T1059.001
ipv4 IPv4 address
domain Registered domain
url HTTP/HTTPS URL
md5 32-character hex hash
sha1 40-character hex hash
sha256 64-character hex hash
email Email address

Conversational types (LLM NER, requires a configured LLM provider)

Entity type Description
person Named person in non-threat-actor context
location Place name
organization Named organization
event Named event
activity Described activity
temporal Time expression

Lookup aliases

recall_actor() searches actor, threat_actor, and intrusion_set in one call. The actor and threat_actor types are interchangeable for lookup but intrusion_set is preferred for APT/UNC/FIN-style designations.


Knowledge graph relationship types

ZettelForge 2.8.0 writes these built-in relationship labels and returns them from get_entity_relationships() and traverse_graph(). You can also pass them to ingest_relationship(). See the KG Edge Schema reference for the complete taxonomy.

CTI and IOC relationship types

Relationship Meaning
MENTIONED_IN Entity appears in a note
USES_TOOL Actor or campaign uses a tool
EXPLOITS_CVE Actor or tool exploits a CVE
TARGETS_ASSET Actor or tool targets an asset
CONDUCTS_CAMPAIGN Actor conducts a campaign
USES_TECHNIQUE Actor uses an ATT&CK technique
IMPLEMENTS Malware implements an ATT&CK technique

Temporal and note-lifecycle relationship types

Relationship Meaning
SUPERSEDES Note supersedes another note

Conversational relationship types

These are written by the LLM enrichment path and require a configured LLM provider.

Relationship Meaning
AFFILIATED_WITH Person affiliated with an organization
ATTENDED Person attended an event
LOCATED_AT Person or organization at a location
PARTICIPATES_IN Person participates in an activity
HELD_AT Event held at a location
ORGANIZED_BY Event organized by an organization
OCCURRED_ON Event occurred at a temporal point
BASED_IN Organization based in a location

Epistemic tier values

The tier field on MemoryNote.metadata uses single uppercase letters.

Value Meaning
A Authoritative — from a primary, verified source
B Operational — derived, processed, or synthesized
C Support — background, context, or low-confidence

TLP values

In ZettelForge 2.8.0, MemoryNote.metadata.tlp is a free-form string with an empty-string default. The shipped schema documents the following values, and the SQLite backend stores the string without normalizing it:

Value Role in ZettelForge 2.8.0
"" (empty string) Schema and SQLite default
WHITE Documented schema value; not validated
GREEN Documented schema value; not validated
AMBER Documented schema value; not validated
RED Documented schema value; not validated

TLP policy enforcement is in progress

ZettelForge 2.8.0 does not validate, rank, or enforce TLP values. Use the labels above consistently, but enforce sharing policy outside ZettelForge until a public policy layer ships.


Architecture terms

Term Use
knowledge graph The entity relationship store. Two words, no hyphen in prose.
background worker The thread that drains the enrichment queue. Not "agent".
enrichment LLM-driven causal extraction, NER, and note evolution. Not "processing".
blended retrieval Combined vector similarity plus graph traversal. Not "hybrid retrieval".
fast path The write path that returns before LLM enrichment completes.
two-phase extraction Phase 1 (score facts) plus Phase 2 (decide ADD/UPDATE/NOOP). Hyphenated as a compound modifier.
backend Storage backend (SQLite or TypeDB). Lowercase in prose; SQLiteBackend as a class name.

Storage backends

Term Use
sqlite The default backend. Lowercase in config values; "SQLite" in prose.
typedb The TypeDB 3.x backend. Lowercase in config values; "TypeDB" in prose.

Synthesis format values

format argument to synthesize() and POST /api/synthesize.

Value Availability
direct_answer Available in ZettelForge 2.8.0
synthesized_brief In progress. ZettelForge 2.8.0 accepts the value but falls back to direct_answer; the current ThreatRecall.ai endpoint uses brief or detailed instead.
timeline_analysis In progress. ZettelForge 2.8.0 accepts the value but falls back to direct_answer; the current ThreatRecall.ai endpoint uses brief or detailed instead.
relationship_map In progress. ZettelForge 2.8.0 accepts the value but falls back to direct_answer; the current ThreatRecall.ai endpoint uses brief or detailed instead.