Build Skills. Define Minds.
Write skills as JavaScript modules. Define Minds as YAML configs. Ship Species as Docker images. Everything runs on the user's sovereign Hub.
Why build for Nervur
Skills are JS modules
A skill is a function. It receives a Mind instance, attaches event listeners, responds to intents.
Minds are YAML
Declare identity, species, skills, rooms. The Hub reads the file and boots the Mind.
Hub is a git repo
Add a mind: write a YAML file, git push. Update a skill: edit the code, git push. Roll back: git revert.
Privacy by architecture
Skills run on the user's Hub. You never handle user data. The nervous system stays sovereign.
A Skill and its Mind
Skills are code. Minds are config. Together they form a living entity.
Skill code
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' })
})
} Mind config
id: translator
name: 'Translator'
species: arthropod
skills:
- translate-core
- lmstudio
- memory
rooms:
- user: '@alice'
role: owner How Skills work
Write
A skill is a JS module that attaches behavior to a Mind.
Attach
Skills are listed in the Mind's YAML config. The Hub loads them at boot.
Share
Skills are npm packages or git repos. Shared between Minds, between Hubs.
Start building Skills
Read the docs, write your first skill, define a Mind.