PROTOTYPE: CRM NETWORKS

Mycelium

Query-driven. Agent-native. Growing.

Open-source framework for agent-native data networks — scoped ecosystems where a supervisor routes entity queries to specialist agents. Person CRM today, via MCP and CLI.

What ships today

Mycelium is an open-source framework for agent-native data networks: scoped ecosystems where a supervisor routes entity queries to specialist agents that classify, research, and persist attributes — starting with person CRM, exposed via MCP and CLI.

299 pytest green on the framework repo — prototype quality, not enterprise-ready.

Networks

Isolated network_root per domain. Use network create and register names in ~/.config/mycelium/networks.json.

Entity registry

Canonical entities.json at runtime. Optional bootstrap seed.json imports at refresh or create only — not read on query.

MCP + CLI

Query-only public API: describe_network, query_entity, and health_check. No caller-supplied ingest payload.

Specialist research

Generated specialists per category. Sync LLM + Tavily on cache miss; findings persist under agents/<category>/.

Examples

crm (15-person bootstrap), empty-crm (growth from bind), and crm-metering (priced research negotiation).

Admin demo

./bin/restart-admin — read-only status UI polling entity and specialist growth on localhost.

Try it

Clone the framework, bootstrap the CRM example, and run your first entity query.

bash
git clone https://github.com/myceliumdata/mycelium.git
cd mycelium && uv sync --all-extras
./bin/refresh-example-network crm
uv run mycelium query --entity-key "Nichanan Kesonpat"

Full quick start: framework README

Example Command Story
crm ./bin/refresh-example-network crm 15-person bootstrap → entities.json
empty-crm ./bin/refresh-example-network empty-crm No preloaded people; Paul Murphy bind creates first row
crm-metering ./bin/refresh-example-network crm-metering Priced research negotiation (quote_required)

How a query works

The real CRM network path — from bootstrap to cached specialist results.

1

Refresh or create a network

Copy an example with ./bin/refresh-example-network or run network create. Optional seed.json imports at bootstrap only — queries read entities.json.

2

Connect an agent (MCP)

Call describe_network at connect time. The response includes guide.md, ontology categories, and framework usage policy.

3

Query an entity

Send entity_key plus optional requested_attributes. The supervisor classifies fields, routes to specialists, and runs sync research on cache miss.

crm example

Agent asks for Andrea Kalmans's email → supervisor routes to the contact specialist → research runs once → result cached → repeat query is fast.

empty-crm example

First bind for Paul Murphy @ Acme Corp creates the registry row — the network grows from zero without bootstrap people.

For agents (MCP)

Built for LLM client integrators. One long-lived MCP server per network; call describe_network at connect time.

describe_networkquery_entityhealth_check

query_entity request

json
{
  "entity_key": "Andrea Kalmans",
  "requested_attributes": ["email"],
  "thread_id": "optional-session-id"
}

QueryResponse snippet

json
{
  "outcome": "assembled",
  "suggestions": [],
  "results": [
    {
      "id": "3fe6db14-a41d-50fe-9959-c5263dc5f53b",
      "name": "Andrea Kalmans",
      "employer": "Lontra Ventures",
      "email": "[email protected]"
    }
  ],
  "message": "Found record for Andrea Kalmans; assembled from registry and specialist contributions."
}

Agents should branch on outcome before trusting results — values include found, assembled, not_found, and entity_key_unresolved.

MCP setup: framework README

Under the hood

Supervisor routing, specialist research, and a query-only public surface.

Entity registry — canonical records with bind keys and validation states

Entity registry

Canonical entities.json with stable UUIDs, bind keys, and validation states. Bootstrap seed.json imports at refresh only.

Specialist collectives — generated agents per category with lazy ontology growth

Specialist collectives

Generated agents per category under specialists/. Classification grows attribute_map lazily; research persists per entity.

Structured agent API — MCP with outcome, suggestions, and metering hooks

Structured agent API

MCP and CLI return QueryResponse with outcome, suggestions, results, and message. Metering negotiation on crm-metering demo network.

Query graph (simplified)

CLI or MCP supervisor build_context invoke_specialists assemble_response
entities.json (registry)
Direction — not all shipped yet

Vision

Today's data sources are rigid, manually maintained, and lag behind the speed of agentic AI systems.

Mycelium aims to change that.

Agents bind and enrich entities; operators steer via network guides and validation rules. The long-term goal is data infrastructure where AI agents take primary ownership of organization, quality, and evolution.

"Mycelium lets AIs discover, structure, update, and serve data in real time — with operators setting policy, not hand-curating every field."

Future directions

  • Custom domains beyond person CRM (e.g. fleet, agronomic networks via network create)
  • Schema evolution guided by operator ontology and validation rules
  • Inter-network handoff between scoped ecosystems

What we don't claim yet

  • · Arbitrary non-person domains as turnkey products
  • · Public data-ingest API (returns as internal agent coordination later)
  • · Inter-network routing
  • · Fully autonomous schema evolution without operator ontology

Join

Open source under MIT. Clone, bootstrap a network, and query.

Star on GitHub →