Defining your domains

Teach Hicortex how your world is organized — it does the filing

What domains are

Domains are your top-level knowledge spheres — the handful of areas your life or work actually splits into. They can be life areas (Work, Health, Finance) or project and topic areas (Backend, Infrastructure, Research) — whatever matches how you think about your world. Domains drive the knowledge index your agents see, the colors in the memory graph visualization, and which lessons get picked for injection.

You define the list once; Hicortex files every memory into it automatically. There is no manual tagging.

The starting set

npx @gamaze/hicortex init scaffolds five generic defaults into your config: Work, Personal, People, Health, Finance. They are a starting point, not a taxonomy — edit them freely. An existing domain list is never overwritten by init.

Edit ~/.hicortex/config.json on the server machine:

{
  "domains": [
    { "name": "Work", "description": "Your job and professional life — employer, clients, workstreams" },
    { "name": "Personal", "description": "Private life — home, hobbies, everyday matters" },
    { "name": "People", "description": "Relationships — family, friends, social life, network" },
    { "name": "Health", "description": "Fitness, wellbeing, medical" },
    { "name": "Finance", "description": "Money — budgeting, spending, investing" }
  ]
}

The description matters: it is how Hicortex understands what belongs in each domain, and it seeds a new domain before it has memories of its own. Write it the way you would explain the area to a new assistant.

Tip: A richer example — including the work/life firewall and tuning options — ships as domains.example.json in the npm package.

How memories are filed

Real memories rarely fit one bin. A work project that touches your finances is genuinely both — so Hicortex gives each memory every domain that applies, not just one. Each of those associations carries a weight, and the weights come from your own data: each domain builds a profile from the memories already filed in it, and a memory's weight in a domain reflects how strongly it resembles that profile. One domain — the strongest association — becomes the memory's primary, which is what the knowledge map, graph colors, and domain counts use.

This is deliberately modeled on how human memory organizes itself: associative, graded, and self-adjusting rather than a fixed filing cabinet. During nightly dreaming, all domain profiles and weights are recomputed from the current data — so as your work shifts, your categories shift with it instead of going stale. Nothing needs to be re-labeled by hand.

And memories that genuinely fit nothing? They are not forced into a junk drawer — there is no "Unsorted" pile. A memory close enough to some domain keeps a weak association and lives on humbly; one that associates with nothing fades away naturally over time, exactly like a stray detail your brain never connected to anything. If your agent ever recalls it, it is kept.

The work/life firewall

Sometimes you want a hard boundary instead of a graded one. Flag a domain with "compartment": true and any memory tagged with it is always filed under that domain as its primary, regardless of what else it touches. The typical use is a Work domain: client and employer matters stay compartmentalized on the work side of the map even when they brush against personal topics. Use it sparingly — one compartment is usually enough.

Filing an existing memory bank

New memories are classified automatically every night. If you already have a memory bank from before you defined domains — or you have just reshaped your list — run the backfill once on the server:

npx @gamaze/hicortex classify-domains          # classify unfiled or stale memories
npx @gamaze/hicortex classify-domains --all    # reclassify everything

The run is resumable — interrupt it any time and it continues where it stopped.

Growing new domains

Your domain list is meant to evolve. When a new area of your life or work emerges, add it to config.json with a good description — the next nightly run picks it up and re-files the memories it affects automatically. Removing or renaming a domain works the same way: edit the list, and the system reorganizes around it. For a large reshape, classify-domains --all refiles the whole memory bank in one pass instead of waiting for the nightly.

Next steps

  • Configuration — the full config file reference
  • Usage — the nightly pipeline and MCP tools