GhostPaw Souls

Official registry Other

Local cognitive identity engine with traits, behavioral evidence, and revision history.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @ghostpaw/souls
Claude Code
claude mcp add ghostpaw-souls -e 'GHOSTPAW_SOULS_DB=<GHOSTPAW_SOULS_DB>' -- npx -y @ghostpaw/souls@0.3.0 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "ghostpaw-souls": {
            "command": "npx",
            "args": [
                "-y",
                "@ghostpaw/souls@0.3.0",
                "mcp"
            ],
            "env": {
                "GHOSTPAW_SOULS_DB": "<GHOSTPAW_SOULS_DB>"
            }
        }
    }
}

Environment variables

  • GHOSTPAW_SOULS_DB SQLite database path (default: ~/.ghostpaw/souls.db)

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. @ghostpaw/souls
  2. MCP server
  3. CLI
  4. Agent Skill
  5. Install
  6. Quick Start
  7. What It Does
  8. API Surface
  9. Ecosystem
  10. Domain Mapping
  11. Demo
  12. Docs
  13. License

@ghostpaw/souls

Prompt evolution engine for cognitive identity. Stores identity as narrative essence plus evidence-backed traits, with structured level-up, crystallization-gated refinement, and full rollback. Not a prompt template library. Not a configuration manager. An evolutionary algorithm for how agents think.

Node 24+, built-in node:sqlite, zero runtime dependencies.

MCP server

Every client below starts the same stdio server: npx -y @ghostpaw/souls mcp. Identity and evidence live in ~/.ghostpaw/souls.db unless the GHOSTPAW_SOULS_DB environment variable (absolute path) or --db <path> says otherwise.

Claude Code

claude mcp add ghostpaw-souls -- npx -y @ghostpaw/souls mcp

or as a plugin, which also installs the skill:

/plugin marketplace add GhostPawJS/souls
/plugin install ghostpaw-souls@ghostpaw-souls

Codex CLI (~/.souls/config.toml)

[mcp_servers.ghostpaw-souls]
command = "npx"
args = ["-y", "@ghostpaw/souls", "mcp"]

Cursor (.cursor/mcp.json), Claude Desktop (claude_desktop_config.json) or a project .mcp.json:

{
  "mcpServers": {
    "ghostpaw-souls": {
      "command": "npx",
      "args": ["-y", "@ghostpaw/souls", "mcp"]
    }
  }
}

Claude Desktop users can also install server.mcpb from the latest GitHub release. A Dockerfile is included for container hosts: docker build -t ghostpaw-souls . && docker run -i --rm -v souls:/data ghostpaw-souls.

The server speaks MCP 2026-07-28 (stateless, server/discover) and the initialize-based revisions 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05.

CLI

npx -y @ghostpaw/souls tools
npx -y @ghostpaw/souls call search_souls '{"query":"review"}'
npx -y @ghostpaw/souls describe manage_soul

Install globally for the ghostpaw-souls binary: npm i -g @ghostpaw/souls. ghostpaw-souls mcp starts the stdio server.

Agent Skill

SKILL.md (repo root) and skills/souls/SKILL.md follow the Agent Skills format and ship in the npm package. Copy skills/souls/ into your agent's skills folder, or print it:

npx -y @ghostpaw/souls skill > SKILL.md

Install

npm install @ghostpaw/souls

Quick Start

import { DatabaseSync } from 'node:sqlite';
import { initSoulsTables, read, write } from '@ghostpaw/souls';

const db = new DatabaseSync(':memory:');
initSoulsTables(db);

const soul = write.createSoul(db, {
  name: 'Reviewer',
  essence: 'I review code by reading for intent before scanning for bugs.',
  description: 'Code review specialist',
});

write.addTrait(db, soul.id, {
  principle: 'Read the PR description before the diff.',
  provenance: 'Reviews that started with code missed architectural intent 3 of 4 times.',
});

write.dropShard(db, {
  content: 'Reviewer caught a naming inconsistency by reading the RFC first.',
  source: 'session',
  soulIds: [soul.id],
});

const rendered = read.renderSoul(db, soul.id);

What It Does

A soul is one cognitive identity — not a prompt template, not a config object. How an agent thinks, judges, and approaches problems.

A trait is a cognitive principle with provenance — evidence proving it was earned, not invented.

A shard is a behavioral observation from any source, attributed to souls. Shards accumulate silently. When enough evidence converges across independent channels over time, the soul becomes eligible for refinement.

Level-up consolidates: merge overlapping traits, promote absorbed ones into the essence, carry forward those still teaching. The identity restructures and the generation counter increments.

The rendered identity block (essence + active traits) is static between mutations — no drift, no context accumulation, no re-rendering overhead. It does not drift because there is nothing to drift.

API Surface

import { read, write, ether, soul, tools, skills } from '@ghostpaw/souls';
NamespacePurpose
readQueries — get souls, traits, shards, evidence reports, render identity blocks
writeMutations — create souls, add/revise/revert traits, drop shards, level up
etherSoul template discovery — search ~2,800 open-source prompts, manifest as souls
soulThe built-in Mentor soul — gardener identity for guiding refinement
toolsLLM tool facade — JSON Schema definitions for agent framework integration
skillsMarkdown procedures — crystallization, refinement, level-up, maintenance workflows
Core Lifecycle
observe → crystallize → refine → level up → repeat

Shards accumulate from any source. Crystallization gates refinement until evidence converges across 2+ independent channels over 1+ days. Traits mutate with provenance. Level-up restructures when the identity outgrows its current form.

The Mentor

The package ships one built-in soul — the Mentor — tuned for guiding the entire refinement lifecycle:

import { soul } from '@ghostpaw/souls';

const systemPrompt = soul.renderSoulsSoulPromptFoundation();
Ether — Template Discovery

Browse and search a catalog of open-source system prompts, then manifest them as fully-formed souls:

import { DatabaseSync } from 'node:sqlite';
import { ether } from '@ghostpaw/souls';

const etherDb = new DatabaseSync('ether.db');
ether.initEtherTables(etherDb);
ether.registerDefaults(etherDb);
await ether.refreshAll(etherDb);

const [hit] = ether.search(etherDb, 'security architect');
const entry = hit ? ether.getEntry(etherDb, hit.id) : undefined;
const newSoul = entry ? ether.manifest(soulsDb, entry) : undefined;

Sources are fetched lazily with ETag caching. Refresh is atomic — failed fetches never erase existing data.

LLM Tools

Wire into any agent framework via JSON Schema tool definitions:

import { tools } from '@ghostpaw/souls';

const allTools = tools.listSoulsToolDefinitions();
const tool = tools.getSoulsToolByName('search_souls');
const result = tool?.handler(db, { query: 'architect' });

Ecosystem

Souls is one of four faculties in the GhostPaw cognitive substrate:

FacultyDomainCore Loop
questlogtasks and commitmentsplan, track, complete, reward
affinitypeople and relationshipsmeet, bond, interact, maintain
codexbeliefs and knowledgeremember, recall, revise, flag
soulscognitive identityobserve, crystallize, refine, level up

Each faculty owns one slice of state. Each stays lean at the storage layer with the same architecture: Node 24+, built-in node:sqlite, zero runtime dependencies.

Souls is unique in the quartet: it is the only faculty whose output becomes the system prompt. Questlog produces task state. Affinity produces relationship state. Codex produces belief state. Souls produces the identity block that shapes how all other state is interpreted.

Together they form a complete cognitive substrate for agents that grow.

Domain Mapping

The engine provides a single abstraction — identity that evolves from evidence — that maps to any domain where behavior should improve from observation:

DomainSoul isTraits are
LLM agentsagent identitybehavioral principles
Game NPCsNPC personalitycharacter qualities
AI companionscompanion identitypersonality facets
Creative writingfictional charactercharacter traits
Brand voicebrand identityvoice guidelines
Educational tutorteaching stylepedagogical principles
Code reviewreviewer styleteam preferences

Demo

An interactive local-first demo app with RPG character sheet aesthetics:

npm run demo:ether   # fetch template catalog
npm run demo:serve   # build and serve at localhost:7777

Docs

DocumentAudience
CONCEPT.mdFull design rationale, research citations, invariants
docs/LLM.mdLLM harness builders — tool surface, rendering, soul layer
docs/HUMAN.mdHuman developers — direct read/write/ether API
docs/PAGES.mdDemo app pages, architecture, development
docs/entities/Entity deep-dives: souls, traits, shards, levels, ether

License

MIT

Frequently asked questions

What is GhostPaw Souls?

Local cognitive identity engine with traits, behavioral evidence, and revision history.

How do I install GhostPaw Souls?

It runs on your machine. In Claude Code: claude mcp add ghostpaw-souls -e 'GHOSTPAW_SOULS_DB=<GHOSTPAW_SOULS_DB>' -- npx -y @ghostpaw/souls@0.3.0 mcp. For other clients, paste the JSON configuration from this page into their MCP settings.

Does GhostPaw Souls need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is GhostPaw Souls open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains GhostPaw Souls?

It is published by GhostPawJS. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.