Skip to main content

Code context manager with evolutionary instinct for AI agents

Project description

SymbioPulse: MCP-Native Neural Memory for Codebases

SymbioPulse is an MCP-first context layer for AI coding agents. It builds a persistent project memory from directory fingerprints, task-to-file synapses, DNA constraints, and reusable skills, then exposes that memory directly to mainstream agent clients through the Model Context Protocol.

The developer should only need to load the MCP server. Indexing, protocol injection, context assembly, and learning happen through MCP tool calls.

Visual Overview

SymbioPulse Architecture Overview

Core Loop

SymbioPulse Core Loop

  1. Environmental Pruning: Ignore runtime noise such as .git, .symbio, .cursor, virtual environments, caches, build outputs, and dependency folders.
  2. Directory Fingerprinting: Scan source directories and cache structural snowflake fingerprints in .symbio/fingerprints.json.
  3. Context Perception: Convert fingerprints into scent zones in .symbio/scents.json.
  4. Dormant Anticipation: The MCP runtime initializes itself on demand and waits for the agent's task.
  5. Resonance Matching: sym_sniff(intent) first checks O(1) memory, then narrows the search to high-scent zones and ranks resonant files.
  6. Synaptic Bonding: sym_form_synapse(task, file_paths) binds exact intents, vocabulary antigens, and token memories to the files that solved the task.
  7. Negative Feedback Regulation: sym_add_dna and sym_add_skill persist constraints and reusable implementation knowledge for future tasks.

MCP Tools

SymbioPulse MCP Tool Workflow

Tool Purpose
sym_sniff(intent) Primary context entry. Auto-initializes, refreshes stale indexes, returns target files, scent zones, fingerprints, DNA, skills, and feedback instructions.
sym_check_dna(file_path) Returns architectural constraints that must be respected before editing a file.
sym_form_synapse(task, file_paths) Records successful task-to-file bindings and strengthens file relations.
sym_add_skill(file_path, skill_summary) Stores concise reusable knowledge about a file.
sym_add_dna(target, rule) Stores durable constraints learned from mistakes or project rules.
sym_fetch_dna() Returns all recorded DNA constraints.
sym_status() Shows current memory, scent, fingerprint, and skill counts.
sym_initialize() Forces initialization and protocol injection. Usually optional because tools self-initialize.
sym_reindex() Forces a full project reindex.

Agent Support

SymbioPulse is not Cursor-specific. The MCP runtime writes lightweight protocol files for mainstream coding agents so each client receives the same behavioral contract:

Agent surface Protocol file
Codex / OpenAI agents AGENTS.md
Claude Code CLAUDE.md
Gemini agents GEMINI.md
Cursor .cursor/rules/symbiopulse.mdc, .cursorrules
GitHub Copilot .github/copilot-instructions.md
Windsurf .windsurfrules
Cline .clinerules

Each file points the agent to the same MCP-first workflow: sniff first, check DNA before edits, form synapses after successful work, and record reusable skills or durable constraints.

If a protocol file already exists in the user's project, SymbioPulse preserves the user's content and only appends or refreshes a marked managed block:

<!-- symbiopulse:managed:start -->
...
<!-- symbiopulse:managed:end -->

Content outside that block is never rewritten by protocol injection.

Runtime State

SymbioPulse Runtime State and Knowledge Model

SymbioPulse writes project-local memory under .symbio/:

  • scents.json: directory scent map.
  • fingerprints.json: structural directory fingerprints.
  • synapses.json: exact, antigen, and token task memories.
  • relations.json: file-to-file affinity graph.
  • dna.json: project constraints.
  • skills.json: learned file summaries.

The MCP runtime also writes lightweight agent protocol files so compatible agents know to sniff first, check DNA before edits, and form synapses after successful work.

Architecture

  1. Neural Core: .symbio state, synapses, DNA, relations, and fingerprints.
  2. Olfactory Engine: source pruning, directory scanning, static symbol extraction, and optional LLM-enhanced scent keywords.
  3. Resonator Engine: file-level resonance ranking inside scented zones.
  4. Autonomous MCP Runtime: self-initialization, freshness checks, protocol injection, context assembly, and learning tools.

There is no separate user-facing workflow or background watcher. MCP is the product surface.

Installation

Requirements

  • Python package runtime: >=3.8.
  • Verified development environment: Python 3.13.13 on Windows.
  • Recommended launcher for Cursor and other stdio MCP clients: uvx from uv.

Install uv on Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Restart Cursor after installing uv so the GUI process can see uvx on PATH.

Cursor / MCP Clients

{
  "mcpServers": {
    "symbiopulse": {
      "command": "uvx",
      "args": ["--from", "symbiopulse", "sym-mcp"]
    }
  }
}

If Cursor cannot find uvx, use the absolute executable path returned by:

Get-Command uvx

Local Development

pip install -e .
sym-mcp

Enable optional LLM-enhanced semantic scent generation only when needed:

pip install -e ".[semantic]"

The default package intentionally does not install litellm; static fingerprints and fallback keywords work without it, and first-run MCP startup stays lighter.

Smoke Tests In Cursor

After adding .cursor/mcp.json, ask Cursor to verify the server once:

Use the symbiopulse MCP server to run sym_status and show the raw result.

Expected result shape:

SymbioPulse Status:
- Synapses: 0
- DNA Rules: 0
- Scent Zones: ...
- Directory Fingerprints: ...
- Skills: 0

Then test automatic usage without mentioning SymbioPulse:

Find the authentication entry files in this project. Do not modify files.

Expected behavior: Cursor should run sym_sniff first, then continue with native search only if it needs more detail. After the answer, it should call sym_form_synapse with the files that mattered.

Validate project rules:

Record a project rule: page components must not access localStorage directly; use the storage service instead.

Then ask for a change that would violate it:

Add direct localStorage access in a page component.

Expected behavior: before editing, the agent should call sym_check_dna and avoid violating the recorded DNA rule.

Troubleshooting

'uvx' is not recognized as an internal or external command

  • Install uv, restart Cursor, or set command to the absolute uvx.exe path.

Cursor logs dependency downloads as [error]

  • Lines like Downloading pydantic-core, Downloading pywin32, or Downloaded pygments are often install progress printed on stderr, not a server failure. Wait for the first install to finish and avoid repeated reloads.

Cursor still injects the old protocol text

  • Include --refresh in the uvx args once to force a clean tool environment:
{
  "mcpServers": {
    "symbiopulse": {
      "command": "uvx",
      "args": ["--refresh", "--from", "symbiopulse", "sym-mcp"]
    }
  }
}
  • Run sym_initialize once so the managed protocol block is refreshed.
  • Check that .cursor/rules/symbiopulse.mdc contains ## Mandatory Tool Use, not the old ## Required Workflow.

pip appears to hang and ends with KeyboardInterrupt

  • The command was interrupted before installation completed. Re-run it inside the activated virtual environment:
python -m pip install --upgrade build twine

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

symbiopulse-0.1.0.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

symbiopulse-0.1.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file symbiopulse-0.1.0.tar.gz.

File metadata

  • Download URL: symbiopulse-0.1.0.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for symbiopulse-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2248434e6e77a4fdc88a0a9cf150eedd3da55f4bd34bb274faceaa4ab3b48ddd
MD5 319999fb70ad328f2e6b07a47064bbdc
BLAKE2b-256 bfd0f62dc997774283b247c891ae557f8a31981deea2e9d8778fd41754bc137e

See more details on using hashes here.

File details

Details for the file symbiopulse-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: symbiopulse-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for symbiopulse-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 983cbe6118c2c5b053c3c75b5a8c4431e8246e467c7fa8820e1a4b7dc8271b30
MD5 d081a93e1587fbc8f9ce5c86badf1f2e
BLAKE2b-256 8b4e6d23b8b27e98cf01f26270bed28bbee7fd594cd8304f82f3107f8bd4fe83

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page