Self-learning memory for AI coding agents — pattern detection, confidence scoring, auto-promotion via MCP
Project description
instinct
Self-learning memory for AI coding agents
Your AI agent makes the same mistakes twice. It forgets your preferences between sessions. It doesn't learn from repetition.
instinct fixes this. It observes patterns from your agent sessions, tracks confidence over time, and auto-promotes recurring patterns into suggestions your agent follows — without you repeating yourself.
Works with any MCP-compatible agent: Claude Code, Cursor, Windsurf, Goose, Codex, and others.
Table of Contents
- How It Works
- Install
- Getting Started in 60s
- Quick Start
- CLI Reference
- Python Library
- Cross-Project Learning
- Storage
- How It Compares
- License
How It Works
observe track promote suggest
┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐
You │Record │ +1 │ Count │ >=5 │Mature │ >=10 │ Rule │
work │pattern├──────>│ hits ├───────>│suggest├───────>│ auto- │
└───────┘ └───────┘ └───────┘ │ apply │
└───────┘
- Observe — record patterns as your agent works (tool sequences, preferences, recurring fixes)
- Track — each re-observation increments confidence
- Promote — confidence >= 5 becomes
mature(suggested), >= 10 becomesrule(auto-applied) - Suggest — mature patterns guide agent behavior without explicit instruction
Install
pip install instinct-mcp
Getting Started in 60s
-
If you have not installed yet, run
pip install instinct-mcp. -
Add
instinctto your MCP client config:
{
"mcpServers": {
"instinct": {
"command": "instinct",
"args": ["serve"]
}
}
}
- Record one pattern and request suggestions:
instinct observe "seq:test->fix->test"
instinct suggest
If suggest returns an empty list, keep observing recurring patterns. Suggestions appear once confidence reaches mature level.
Quick Verification
instinct observe "seq:test->fix->test"
instinct suggest
Repository Health
- CI and CodeQL run on push and pull request
- Dependabot tracks weekly updates (GitHub Actions + pip)
- Protected default branch (
master) requires review and resolved conversations
Quick Start
1. Add to your agent
Claude Code — add to .mcp.json in your project root:
{
"mcpServers": {
"instinct": {
"command": "instinct",
"args": ["serve"]
}
}
}
Codex CLI — add to ~/.codex/config.toml:
[mcp_servers.instinct]
command = "instinct"
args = ["serve"]
Cursor / Windsurf — add to your MCP configuration:
{
"mcpServers": {
"instinct": {
"command": "instinct",
"args": ["serve", "--transport", "sse"]
}
}
}
That's it. Your agent now has access to 8 tools:
| Tool | What it does |
|---|---|
observe |
Record a pattern (auto-increments confidence on repeat) |
suggest |
Get mature patterns to guide current behavior |
list_instincts |
Browse all observed patterns with filters |
get_instinct |
Look up a specific pattern |
consolidate |
Promote patterns that crossed confidence thresholds |
search_instincts |
Full-text search across patterns and metadata |
stats |
Summary statistics of the instinct store |
export_rules |
Export rule-level patterns as structured data |
2. Watch it learn
As you work, your agent starts noticing patterns:
Session 1: observe("seq:test->fix->test") → confidence 1 (raw)
Session 3: observe("seq:test->fix->test") → confidence 3 (raw)
Session 5: observe("seq:test->fix->test") → confidence 5 (mature ✓)
suggest() → "When tests fail, apply fix and re-run tests"
After enough repetitions, instinct starts suggesting the pattern back — your agent adapts to how you work.
What Patterns Look Like
# Tool sequences your agent repeats
instinct observe "seq:lint->fix->lint"
instinct observe "seq:build->test->deploy"
# Your preferences it should remember
instinct observe "pref:style=black" --cat preference
instinct observe "pref:commits=conventional" --cat preference
# Fixes it keeps rediscovering
instinct observe "fix:missing-import" --cat fix_pattern
instinct observe "fix:utf8-encoding-windows" --cat fix_pattern
# Tools that work better together
instinct observe "combo:pytest+coverage" --cat combo
Naming Convention
| Prefix | Use for | Example |
|---|---|---|
seq: |
Action sequences | seq:lint->fix->lint |
pref: |
User preferences | pref:style=black |
fix: |
Recurring fixes | fix:missing-import |
combo: |
Tool combinations | combo:pytest+coverage |
Maturity Levels
| Level | Confidence | Behavior |
|---|---|---|
| raw | < 5 | Observed, stored, not yet actionable |
| mature | >= 5 | Returned by suggest() — agent uses as guidance |
| rule | >= 10 | Exported by export_rules() — strong enough to auto-apply |
CLI Reference
instinct observe <pattern> # Record/reinforce a pattern
instinct get <pattern> # Look up a specific pattern
instinct list # List all instincts
instinct suggest # Get mature suggestions
instinct consolidate # Auto-promote by confidence
instinct decay # Reduce stale patterns (default: 90 days inactive)
instinct stats # Summary statistics
instinct export-rules # Export rules as JSON
instinct delete <pattern> # Remove a pattern
instinct fingerprint # Print project fingerprint for cwd
instinct serve # Start MCP server
All commands support --json for structured output.
Observe Options
instinct observe "seq:a->b" \
--cat sequence # Category: sequence|preference|fix_pattern|combo
--source claude-code # Which agent/tool recorded this
--project auto # Project fingerprint (auto-detected from cwd)
Server Options
instinct serve # stdio (default, for Claude Code)
instinct serve --transport sse # SSE for remote/HTTP clients
instinct serve --transport streamable-http # Streamable HTTP
instinct serve --port 3777 # Custom port (default: 3777)
Python Library
from instinct.store import InstinctStore
store = InstinctStore() # uses ~/.instinct/instinct.db
# Record patterns
store.observe("seq:test->fix->test", source="my-tool")
store.observe("seq:test->fix->test") # confidence = 2
# Query
suggestions = store.suggest() # mature+ patterns
results = store.search("test") # full-text search
rules = store.export_rules() # rule-level only
# Lifecycle
store.consolidate() # promote by threshold
store.decay(days_inactive=90) # fade stale patterns
# Stats
print(store.stats())
# {'total': 42, 'raw': 30, 'mature': 10, 'rules': 2, 'avg_confidence': 4.2, ...}
Custom Database Path
store = InstinctStore(db_path="/path/to/custom.db")
Cross-Project Learning
instinct hashes your working directory into a project fingerprint. This means:
- Project-specific patterns are only suggested when you're in that project
- Global patterns (empty project field) are suggested everywhere
# See your current project's fingerprint
instinct fingerprint
# → a1b2c3d4e5f6
Storage
- Database: SQLite at
~/.instinct/instinct.db - Dependencies: Only
mcp>=1.0.0 - Size: ~650 lines of Python, zero bloat
How It Compares
| instinct | Manual CLAUDE.md | .cursorrules | |
|---|---|---|---|
| Learns automatically | Yes | No | No |
| Cross-session memory | Yes | Yes | Yes |
| Confidence scoring | Yes | No | No |
| Decay of stale patterns | Yes | No | No |
| Works across agents | Yes (MCP) | Claude only | Cursor only |
| Requires manual editing | No | Yes | Yes |
License
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 instinct_mcp-1.0.0.tar.gz.
File metadata
- Download URL: instinct_mcp-1.0.0.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
571459ceeda0ab2878c43f7716cc88b5ce35e212d6a07082002e71e25fc4d00e
|
|
| MD5 |
fb06c69146968e60e1af4a20213ccf11
|
|
| BLAKE2b-256 |
afd688286bff5df5cff4ca708ff58b200f10eebf5e5863a9bde9ee34e6ac6907
|
File details
Details for the file instinct_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: instinct_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8579d79306f0a88618c14f0762f968a52b3b22462e1d85a5c45afd422d558cf2
|
|
| MD5 |
fa0441904e9af14a07042b507643be54
|
|
| BLAKE2b-256 |
9f2df3d1f4bbac052d530072349d43a1c917277979646b3259e43264cbe4755a
|