Get Started
Ontology

Minds, Not Bots

A Mind is a Matrix room bound to a running container. It has identity, memory, relationships. Kill the container — the Mind persists. The room is the soul.

The Ontology

Six entities. Each has a clear role. No overlap.

Entity

Mind

A consciousness. A Matrix room + container. Has identity, memory, state.

Compute

Hub

A Mind that provides compute to other Minds. Sovereign, local.

Network

Gate

Public presence. Reachability without sovereignty. The door.

Capability

Skill

A stateless capability. No identity. Shared, like a library.

Template

Species

A template for Minds. DNA. A Docker image.

Identity

Human

A perspective that inhabits many rooms.

Complexity is earned

Species Tiers

Start simple. Evolve when needed.

Species

Amoeba

Pure code, no reasoning. Direct intent-to-response mapping.

Example

A calculator, a webhook relay

Species

Arthropod

Multiple skills, basic coordination. No LLM.

Example

A translator using a dictionary API

Species

Vertebrate

Full cognitive stack. Cortex (LLM), memory, attention, planning.

Example

A research assistant that reasons

Define a Mind

A YAML file declares who the Mind is. A JavaScript function defines what a Skill does.

Mind definition

translator.yml
# minds/translator.yml
id: translator
name: 'Translator'
species: arthropod

components:
  cortex:
    skill: lmstudio
    model: 'mistral-7b'
  heart:
    rate: '1/3s'
  memory:
    skill: memory

skills:
  - translate-core
  - lmstudio
  - memory

rooms:
  - user: '@alice'
    role: owner
  - user: '@bob'
    role: translator-user

Skill code

index.js
// skills/translate-core/index.js
export default function (mind) {
  mind.on('translate.request', async (msg) => {
    const result = await mind.use('lmstudio')
      .prompt(`Translate to ${msg.payload.target}: ${msg.body}`)
    mind.reply(result, { intent: 'translate.response' })
  })
}

Spawn your first Mind

Install Nervur, define a Mind in YAML, and bring it to life in your own Matrix rooms.