13 MCP tools · Rust · Domain-agnostic

m1nd

Spreading activation, noise cancellation, and Hebbian learning over knowledge graphs.

Give your agents a nervous system.

m1nd session
$ m1nd.activate --query "authentication flow"

Activating from 3 seed nodes...
Wavefront: 3 → 12 → 41 nodes across 3 hops

0.92 file::src/auth/middleware.rs (structural: 0.95, semantic: 0.88)
0.87 file::src/auth/jwt.rs (structural: 0.82, semantic: 0.91)
0.81 file::src/session/manager.rs (structural: 0.79, temporal: 0.83)
0.64 file::src/middleware/cors.rs (causal: 0.71)
0.23 file::src/auth/rate_limit.rs structural hole detected

XLR noise cancelled: 8 false-positive edges removed
41 nodes activated in 2.3ms

LLM agents are powerful reasoners but poor navigators.

They can analyze code, write solutions, and debug problems. But they can't see the shape of what they're working on.

"What does this change affect?"
Blast radius is invisible without structural analysis.
m1nd.impact
"What am I missing?"
Structural holes are undetectable by keyword search.
m1nd.missing
"What else will change?"
Co-change patterns require historical context.
m1nd.predict
"How are these connected?"
Dependency chains span files, modules, and abstraction layers.
m1nd.why

The core loop

m1nd doesn't search your data -- it activates it. Query a concept, and the graph lights up.

01
Ingest
Build property graph from source data. Code, JSON, any domain.
02
Activate
Spreading activation across 4 dimensions with XLR noise cancellation.
03
Learn
Hebbian plasticity: correct results strengthen connections, wrong results weaken them.
04
Persist
Graph + plasticity state saved to disk. Next session starts where this one left off.

Four activation dimensions

Structural
Graph topology: edges, PageRank, community structure. How things are wired.
Semantic
Label similarity: char n-grams, co-occurrence (PPMI), synonym expansion.
Temporal
Time dynamics: recency decay, change velocity, co-change history.
Causal
Dependency flow: directed causation along import, call, and contain edges.

Everything an agent needs.

Callable by any LLM agent via JSON-RPC stdio. No SDK required.

Discovery
m1nd.activate
Spreading activation query -- "what's related to X?"
m1nd.why
Path explanation -- "how are A and B connected?"
m1nd.missing
Structural hole detection -- "what's missing from this picture?"
m1nd.fingerprint
Equivalence detection -- "are these two things duplicates?"
m1nd.resonate
Harmonic analysis -- standing waves, resonant frequencies, sympathetic pairs.
Change Analysis
m1nd.impact
Blast radius -- "what does changing X affect?"
m1nd.predict
Co-change prediction -- "what else will need to change?"
m1nd.counterfactual
Removal simulation -- "what breaks if we remove X?"
Learning
m1nd.learn
Hebbian feedback -- "this result was correct / wrong / partial."
m1nd.drift
Weight drift analysis -- "what changed since last session?"
m1nd.warmup
Context priming -- "prepare for task X."
System
m1nd.ingest
Load data into the graph. Code extractor or JSON descriptor.
m1nd.health
Diagnostics -- node/edge counts, sessions, persistence status.

A full session, start to finish.

m1nd ingesting and analyzing its own codebase. Every number is real.

m1nd self-analysis session
1. Ingest > m1nd.ingest path=./
Scanned 32 source files across 3 crates
693 nodes, 2007 edges built in 84ms
Co-change history: 47 commit groups analyzed

2. Activate > m1nd.activate query="spreading activation"
Seeds: activation.rs, graph.rs, xlr.rs
Wavefront: 3 → 18 → 47 nodes
0.94 fn::propagate_wavefront (structural 0.97)
0.91 fn::score_candidates (semantic 0.93)
0.87 fn::xlr_gate (causal 0.89)
0.72 fn::compute_pagerank (structural 0.78)
XLR cancelled 12 noise edges

3. Impact > m1nd.impact targets=["graph.rs"]
Blast radius: 23 nodes across 4 hops
Direct: activation.rs, xlr.rs, temporal.rs, builder.rs
Indirect: server.rs, tools.rs, session.rs
High-impact: graph.rs is a keystone (PageRank top 3%)

4. Missing > m1nd.missing context=["auth", "session"]
Structural hole: no rate_limiter connected to auth module
Weak bridge: session ↔ middleware (single edge, weight 0.3)
2 gaps detected in neighborhood of 34 nodes

5. Learn > m1nd.learn feedback=correct nodes=[activation.rs, xlr.rs]
LTP applied: 14 edges strengthened (avg +0.12)
Plasticity state persisted

6. Counterfactual > m1nd.counterfactual remove=["graph.rs"]
CASCADE: 31 nodes lose connectivity
ORPHANED: 8 functions become unreachable
RESILIENT: temporal.rs, domain.rs survive via alternate paths
Simulation complete: graph.rs is load-bearing

Up and running in 60 seconds.

1

Build

cargo build --release
2

Run

m1nd starts as a JSON-RPC stdio server. MCP-compatible out of the box.

./target/release/m1nd-mcp
3

Ingest & Query

Send MCP messages over stdin. State persists automatically.

// Ingest a codebase
{"method":"tools/call","params":{"name":"m1nd.ingest",
  "arguments":{"path":"/your/project","agent_id":"my-agent"}}}

// Query
{"method":"tools/call","params":{"name":"m1nd.activate",
  "arguments":{"query":"authentication","agent_id":"my-agent"}}}

// Learn from results
{"method":"tools/call","params":{"name":"m1nd.learn",
  "arguments":{"feedback":"correct","node_ids":["file::src/auth.rs"]}}}
4

Any domain

Not just code. Ingest any knowledge graph from JSON.

// JSON descriptor -- works for any domain
{"nodes": [
  {"id":"concept::activation", "label":"Spreading Activation", "type":"Concept"},
  {"id":"concept::plasticity", "label":"Hebbian Plasticity", "type":"Process"}
],
"edges": [
  {"source":"concept::activation", "target":"concept::plasticity",
   "relation":"enables", "weight":0.8}
]}
~15,500
Lines of Rust
159
Tests
13
MCP Tools
6+1
Languages
3.8 MB
Binary (ARM64)