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
Core Loop
- Environmental Pruning: Ignore runtime noise such as
.git,.symbio,.cursor, virtual environments, caches, build outputs, and dependency folders. - Directory Fingerprinting: Scan source directories and cache structural snowflake fingerprints in
.symbio/fingerprints.json. - Context Perception: Convert fingerprints into scent zones in
.symbio/scents.json. - Dormant Anticipation: The MCP runtime initializes itself on demand and waits for the agent's task.
- Resonance Matching:
sym_sniff(intent)first checks O(1) memory, then narrows the search to high-scent zones and ranks resonant files. - Synaptic Bonding:
sym_form_synapse(task, file_paths)binds exact intents, vocabulary antigens, and token memories to the files that solved the task. - Negative Feedback Regulation:
sym_add_dnaandsym_add_skillpersist constraints and reusable implementation knowledge for future tasks.
MCP Tools
| 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 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
- Neural Core:
.symbiostate, synapses, DNA, relations, and fingerprints. - Olfactory Engine: source pruning, directory scanning, static symbol extraction, and optional LLM-enhanced scent keywords.
- Resonator Engine: file-level resonance ranking inside scented zones.
- 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.13on Windows. - Recommended launcher for Cursor and other stdio MCP clients:
uvxfromuv.
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 setcommandto the absoluteuvx.exepath.
Cursor logs dependency downloads as [error]
- Lines like
Downloading pydantic-core,Downloading pywin32, orDownloaded pygmentsare 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
--refreshin theuvxargs once to force a clean tool environment:
{
"mcpServers": {
"symbiopulse": {
"command": "uvx",
"args": ["--refresh", "--from", "symbiopulse", "sym-mcp"]
}
}
}
- Run
sym_initializeonce so the managed protocol block is refreshed. - Check that
.cursor/rules/symbiopulse.mdccontains## 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2248434e6e77a4fdc88a0a9cf150eedd3da55f4bd34bb274faceaa4ab3b48ddd
|
|
| MD5 |
319999fb70ad328f2e6b07a47064bbdc
|
|
| BLAKE2b-256 |
bfd0f62dc997774283b247c891ae557f8a31981deea2e9d8778fd41754bc137e
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
983cbe6118c2c5b053c3c75b5a8c4431e8246e467c7fa8820e1a4b7dc8271b30
|
|
| MD5 |
d081a93e1587fbc8f9ce5c86badf1f2e
|
|
| BLAKE2b-256 |
8b4e6d23b8b27e98cf01f26270bed28bbee7fd594cd8304f82f3107f8bd4fe83
|