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. Exposed via MCP and CLI; shipped with CRM reference examples.
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. Person-CRM reference examples ship today; custom networks via network create.
307 pytest green on the framework repo. Prototype quality, not enterprise-ready.
Networks
Isolated network_root per domain. network create scaffolds ontology (optional --seed); names register in ~/.config/mycelium/networks.json.
Entity registry
Canonical entities.json at runtime — not SQLite. Optional seed.json bootstrap fixture imports at refresh or create only; queries never read seed.json.
MCP + CLI
Query-only public API: describe_network, query_entity, and health_check. Callers do not submit ingest payloads.
Specialist research
Generated specialists per category. Sync LLM + Tavily on cache miss; findings persist under agents/<category>/.
Examples
crm (bootstrap fixture → entities.json), empty-crm (no seed — first query bind creates the row), crm-metering (quote_required demo).
Admin demo
./bin/restart-admin: read-only status UI polling entity and specialist growth on localhost.
Try it
Clone the framework, bootstrap a reference network (CRM example), and run your first entity query.
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" New contributors: onboarding → README quick start → architecture
| Example | Command | Story |
|---|---|---|
| crm | ./bin/refresh-example-network crm | 15-person bootstrap → entities.json |
| empty-crm | ./bin/refresh-example-network empty-crm | No seed.json — empty registry until first query bind creates the row |
| crm-metering | ./bin/refresh-example-network crm-metering | Priced research negotiation (quote_required) |
Custom network: network create <name> --root <path> [--seed <file>] — --seed is optional; an empty registry plus first-query bind is valid.
How a query works
From network bootstrap to cached specialist results (CRM reference example).
Refresh or create a network
Copy an example (./bin/refresh-example-network) or run network create with optional --seed. empty-crm needs no fixture — first bind writes entities.json. Queries always read the registry, never seed.json.
Connect an agent (MCP)
Call describe_network at connect time. The response includes guide.md, ontology categories, and framework usage policy.
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. query_entity is lookup-only — no caller ingest payload.
query_entity request
{
"entity_key": "Andrea Kalmans",
"requested_attributes": ["email"],
"thread_id": "optional-session-id"
} QueryResponse snippet
{
"outcome": "assembled",
"suggestions": [],
"results": [
{
"id": "3fe6db14-a41d-50fe-9959-c5263dc5f53b",
"name": "Andrea Kalmans",
"employer": "Lontra Ventures",
"email": "akalmans@example.com"
}
],
"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 entities.json (UUID + bind keys) — not the SQLite people table. Optional seed.json bootstrap fixture imports at refresh or create only.
Specialist collectives
Generated agents per category under specialists/. Classification grows attribute_map lazily; research persists per entity.
Structured agent API
MCP and CLI return QueryResponse with outcome, suggestions, results, and message. Metering negotiation on crm-metering demo network.
Query graph (simplified)
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 instead of hand-curating every field."
Future directions
- → Networks beyond the committed CRM examples (e.g. fleet, agronomic via network create)
- → Schema evolution guided by operator ontology and validation rules
- → Inter-network handoff between scoped ecosystems
What we don't claim yet
- · Turnkey networks for every domain without operator setup
- · Public data-ingest API (returns as internal agent coordination later)
- · Inter-network routing
- · Fully autonomous schema evolution without operator ontology