Concepts

Nodes

The building block of memory — keys, descriptions, data and node types

A node is one thing worth remembering: a person, a decision, a preference, a fact, a project, a document. Every memory your agents store is a node, connected to others by edges and hyperedges.

Fields

FieldWhat it holds
keyA stable identifier you choose and reuse, e.g. decision_jwt_auth. Up to 512 bytes.
descriptionWhat the memory says, in plain language. It’s what search and people read first.
dataStructured fields: dates, statuses, IDs, URLs, numbers, file paths.
node_typeOne canonical type from the list below.
search_textOptional extra keywords for keyword search.
enrichment_statusWhere background enrichment is: pending after every write, then processed by HyperMemory’s workers.

Node types

Every node is filed under exactly one of these types:

TypeUse for
personA human being referenced in memory.
organizationA company, institution, agency or formal entity.
groupAn informal collection of people — team, committee, department, squad.
locationA city, country, office, venue or address.
projectA named initiative, workstream or campaign with a beginning and usually an end.
productA commercial offering — app, device, brand or named service.
componentA software module, service, system part or architectural element.
technologyA language, framework, platform, protocol or standard.
toolAn instrument or utility you use to do work, including MCP and CLI tools.
decisionA choice, requirement, obligation, constraint or commitment, with its rationale.
preferenceHow someone likes things done — a working style or rule.
factA standalone data point, measurement, spec or configuration.
eventA meeting, incident, milestone, launch or release.
conceptAn idea, principle, pattern or mental model.
skillA capability, expertise or learned ability.
styleHow an agent should communicate or look: voice, tone, vocabulary, formatting, visual language.
artifactA deliverable, cited work, content item or work product that isn’t an uploaded file.
documentReserved for uploaded files that HyperMemory stores. For text references to documents, use artifact.
assetA physical or digital object — hardware, equipment, infrastructure, a named resource.
URLA web link, bookmark or API endpoint.
userThe owner of the graph. One per graph: user_profile.

When you don’t name a type

If you omit node_type, or send one that isn’t on the list, HyperMemory works it out:

  1. Aliases — tech → technology, org / organisation → organization, doc → document, pref → preference, url → URL.
  2. The key’s prefix — decision_… → decision, person_… → person, and shorthands such as task_ / milestone_ / phase_ → event, metric_ / stat_ / claim_ → fact, feature_ → component, requirement_ / blocker_ / obligation_ → decision, article_ / deliverable_ / data_ → artifact.
  3. Otherwise, fact.

Free-form types are never stored.

Keys

Use {type}_{name}: person_alice_chen, decision_jwt_auth, tech_redis, project_phoenix.

  • Keys are API surface: other nodes, relationships, exports and agents refer to them. Treat them as stable IDs.
  • Reuse a key to update a node — hm_store on an existing key changes only the fields you send.

Writing good nodes

Lead with the point. A description of 80–300 characters, in the words someone would search with later, recalls far better than a long paragraph.

One node per thing a later session would act on. A rule the user states is a preference. A choice between alternatives is a decision with chosen, rejected and rationale in data. A finding or risk is a fact with its source and confidence. What happened is an event that links to all of them.

Prose in description, machine fields in data. Commit hashes, IDs, file paths, hosts and ports belong in data, where they don’t drown out the meaning.

Example

{
  "key": "decision_jwt_auth",
  "node_type": "decision",
  "description": "Chose JWT access tokens over server sessions for the public API so it can scale statelessly across regions.",
  "data": {
    "chosen": "JWT",
    "rejected": ["server sessions"],
    "rationale": "stateless horizontal scaling",
    "decided_on": "2026-10-01"
  }
}

Enrichment

After every write, HyperMemory’s background workers enrich the node: they expand thin descriptions, extract structured data, detect the people and organizations it mentions, discover relationships, merge duplicates and keep your user_profile current. You can also run the memory workers on demand.

The user_profile node

Every graph has one user_profile node of type user: you. Your preferences link to it, and enrichment keeps it up to date.

Next steps