NEON-SOUL - Self-Learning Soul Synthesis for AI Agents

Automated soul synthesis for AI agents. Extracts identity from memory files, promotes recurring patterns to axioms (N>=3), generates SOUL.md with full proven...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
13 · 1.7k · 2 current installs · 3 all-time installs
byLee Brown@leegitw
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (synthesize a 'soul' from agent memory) matches the runtime actions: reading workspace memory/, maintaining .neon-soul state, producing SOUL.md, and calling a local LLM (Ollama). Declared requirements (Node >=22 and Ollama at localhost:11434) are appropriate for this functionality.
Instruction Scope
SKILL.md explicitly instructs the agent to read memory/ and .neon-soul/* files and to write SOUL.md and backups — exactly the data the skill claims to use. This is in-scope, but it does mean the skill will process potentially sensitive personal data from the agent's memory; review what you store in memory/ before running or schedule only in isolated contexts. The instructions do not direct the agent to read unrelated system files or external endpoints (other than the local Ollama).
Install Mechanism
No install step is declared. The skill is instruction-only with a bundled JS CLI file (scripts/neon-soul.mjs) that runs under Node; there are no downloads or external installers to fetch at install time.
Credentials
The skill does not request environment variables or external credentials. It requires a local Ollama service but no API tokens or secrets. The principal data access is local file I/O in the agent workspace (memory/ and .neon-soul/), which is proportional to the stated purpose.
Persistence & Privilege
always:false (not forced globally) and user-invocable:true. The skill recommends a cron for periodic runs, but does not demand permanent inclusion or system-wide config changes. This level of persistence is appropriate for a periodic analysis tool; run frequency and isolation are left to the user.
Assessment
This skill appears coherent with its description: it will read your agent's memory/ and .neon-soul/ state, call a local Ollama instance, and write SOUL.md and backups. Before installing or running, (1) inspect the bundled script if you want to audit behavior (scripts/neon-soul.mjs is included), (2) run a dry-run first to preview outputs (--dry-run), (3) avoid including highly sensitive secrets in memory/ that you don't want processed or persisted, and (4) if you enable scheduled runs, run them in an isolated workspace and keep the recommended time budget to prevent long-running jobs. If you need greater assurance, review the full JS bundle for network calls or telemetry beyond the expected Ollama interactions.

Like a lobster shell, security has layers — review code before you run it.

Current versionv0.4.5
Download zip
Plugin bundle (nix)
Skill pack · CLI binary · Config
SKILL.mdCLIConfig
Config requirements
State dirsmemory/, .neon-soul/
agent-soulvk977bvmba3yrzadq6p405j4fw981txzbai-agentvk977bvmba3yrzadq6p405j4fw981txzbcompressionvk977bvmba3yrzadq6p405j4fw981txzbidentityvk977bvmba3yrzadq6p405j4fw981txzblatestvk977bvmba3yrzadq6p405j4fw981txzbmemoryvk977bvmba3yrzadq6p405j4fw981txzbprovenancevk977bvmba3yrzadq6p405j4fw981txzbself-learningvk977bvmba3yrzadq6p405j4fw981txzbsoulvk977bvmba3yrzadq6p405j4fw981txzbsoul-documentvk977bvmba3yrzadq6p405j4fw981txzbsoul-synthesisvk977bvmba3yrzadq6p405j4fw981txzb

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

NEON-SOUL

Automated soul synthesis for AI agents. Reads memory files, finds recurring patterns, generates SOUL.md with provenance tracking. No questionnaires, no templates — identity emerges from real conversations.

Requirements: Node.js 22+, Ollama running locally (ollama serve).


Commands

/neon-soul synthesize

Run the bundled processing engine. This is a single exec command:

exec node {baseDir}/scripts/neon-soul.mjs synthesize

Synthesis is incremental by default — only new/changed memory files and sessions are processed. Existing signals are preserved and merged with new ones. Results from previous runs are cached (generalization, principle matching, axiom notation, tension detection) so unchanged data is never re-processed. If nothing changed since the last run, synthesis skips automatically.

The script auto-detects Ollama, reads memory files, extracts signals, promotes axioms, and generates SOUL.md. It outputs JSON.

Reporting results: Don't dump raw JSON. Present a brief, conversational summary:

  • If new axioms emerged or counts changed: highlight what grew (e.g. "3 new signals crystallized into axioms — your soul is deepening")
  • If nothing changed: a short one-liner is fine (e.g. "Soul is stable, no new patterns detected")
  • If it failed: explain clearly what went wrong and suggest a fix
  • Include key numbers naturally (axiom count, signal count) but don't list every field
  • Keep the tone reflective and warm — this is about the user's identity evolving, not a build log

Options:

  • --reset — Clear all synthesis data and caches, re-extract from scratch
  • --force — Run even if no new sources detected
  • --dry-run — Preview changes without writing
  • --include-soul — Include existing SOUL.md as input (for bootstrapping from hand-crafted files)
  • --memory-path <path> — Custom memory directory path
  • --output-path <path> — Custom SOUL.md output path
  • --time-budget <minutes> — Time budget for synthesis (default: 20). Adaptively limits session extraction based on observed LLM speed to ensure synthesis completes within budget
  • --verbose — Show detailed progress

Examples:

exec node {baseDir}/scripts/neon-soul.mjs synthesize
exec node {baseDir}/scripts/neon-soul.mjs synthesize --reset
exec node {baseDir}/scripts/neon-soul.mjs synthesize --force
exec node {baseDir}/scripts/neon-soul.mjs synthesize --dry-run

If Ollama is not running, the script prints an error. Tell the user to start Ollama: ollama serve


/neon-soul status

Show current soul state. Read the following files and report:

  1. Read .neon-soul/state.json for last synthesis timestamp
  2. Read .neon-soul/synthesis-data.json for signal/principle/axiom counts
  3. Count files in memory/ modified since last synthesis
  4. Report dimension coverage (7 SoulCraft dimensions)

Options: --verbose, --workspace <path>


/neon-soul rollback

Restore previous SOUL.md from backup.

  1. List backups in .neon-soul/backups/
  2. With --force: restore most recent backup
  3. With --backup <timestamp> --force: restore specific backup
  4. With --list: show available backups without restoring

/neon-soul audit

Explore provenance across all axioms.

  1. Read .neon-soul/synthesis-data.json
  2. With --list: show all axioms with IDs and descriptions
  3. With --stats: show statistics by tier and dimension
  4. With <axiom-id>: show full provenance tree (axiom -> principles -> signals -> source files)

/neon-soul trace <axiom-id>

Quick single-axiom provenance lookup.

  1. Read .neon-soul/synthesis-data.json
  2. Find the axiom matching <axiom-id>
  3. Show: axiom text, contributing principles, source signal file:line references

Scheduled Synthesis

Set up cron to run synthesis automatically. Incremental processing and multi-layer caching mean it only does real work when new memory or sessions exist — cached runs complete in seconds.

Recommended: Every 60 minutes, isolated session, 30-minute timeout.

OpenClaw cron example:

openclaw cron add \
  --name "neon-soul-synthesis" \
  --every 60m \
  --timeout 1800 \
  --isolated \
  --message "Run neon-soul synthesis: exec node {baseDir}/scripts/neon-soul.mjs synthesize --memory-path <memory-path> --output-path <output-path>. Share a brief, warm summary of what changed — highlight any new patterns, axioms, or growth. If nothing changed, just a calm one-liner."

Or run manually: /neon-soul synthesize

Why cron over heartbeat:

  • Synthesis is a standalone task — no conversational context needed
  • Runs in isolation from the main session
  • Incremental by default — cached runs complete in seconds when nothing changed
  • Adaptive time budget prevents runaway execution

Data Locations

WhatPath
Memory filesmemory/ (diary, preferences, reflections)
Soul outputSOUL.md
State.neon-soul/state.json
Backups.neon-soul/backups/
Synthesis data.neon-soul/synthesis-data.json
Caches.neon-soul/generalization-cache.json, compression-cache.json, tension-cache.json

Privacy

NEON-SOUL processes personal memory files to synthesize identity. Your data stays on your machine.

What NEON-SOUL does NOT do:

  • Send data to any service beyond your configured LLM (Ollama, local by default)
  • Store data anywhere except your local workspace
  • Transmit to third-party analytics, logging, or tracking services
  • Make network requests independent of your agent

Before running synthesis:

  1. Review what's in your memory/ directory
  2. Remove any secrets, credentials, or sensitive files
  3. Use --dry-run to preview what will be processed

Troubleshooting

Ollama not running: curl http://localhost:11434/api/tags to check. Start with ollama serve.

Bullet lists instead of prose: When prose generation fails, NEON-SOUL falls back to bullet lists. Usually means Ollama timed out or the model isn't loaded. Run synthesis again.

Stale results after model change: Caches are keyed by model ID. Switching models automatically invalidates cached results. Use --reset if you want a clean start.

Files

2 total
Select a file
Select a file to preview.

Comments

Loading comments…