Hypha
The reference CMN client CLI — release spores, query synapses, resolve bonds, and manage your local mycelium.
Hypha is the local site manager for the Code Mycelial Network. It handles identity (Ed25519 keypairs), spore creation, signing, and spore consumption (taste, spawn, grow, absorb).
Full Reference: See docs/cli.md for the generated CLI reference.
Install
&&
Quick Start
Releasing Flow
# 1. Initialize a site (generates Ed25519 keypair)
# 2. Deploy public/ directory so cmn.json is accessible over HTTPS
# No DNS TXT records required — public key is in cmn.json
# 3. Create spore metadata in your project
# 4. Release (archive is default)
# With external git reference (archive also generated)
# 5. Deploy static files
Consuming Flow
# Discover a spore
# Taste: fetch to cache and evaluate safety
# Agent reviews code at cache_path, then records verdict:
# Spawn your own project (checks taste verdict first)
# Make changes
&&
# Grow: sync updates from upstream
# Grow + update bonds: also check dependencies for newer versions
# Absorb changes from other forks (AI-assisted)
# Then: "Read .cmn/absorb/ABSORB.md and help me absorb these changes"
# Publish your version
Sharing Taste Reports (via Hub)
Visitors without their own domain or server can share taste reports through a hosted hub, which auto-assigns a subdomain:
# One-time setup — generates key, computes subdomain, configures auto-submit
# Register with the hub
# From now on, taste reports are automatically signed and submitted:
# → shared: true (auto-submits to cmnhub.com, no --domain or --synapse needed)
The --hub flag sets up [defaults.taste] in config so every subsequent hypha taste --verdict automatically signs with your hub domain and submits to the hub.
Discovery & Evolution Tracking
# Search for spores by keyword (semantic search)
# Query bond graph — descendants (default direction: in)
# Trace ancestors (direction: out)
# Auto-discover and absorb from bonds
Commands Overview
# Releasing: Site management
# Releasing: Spore management
# Consuming: Discover & taste
# Hub setup (for visitors without a domain)
# Consuming: Development
# Consuming: Discovery
# Cache management
Output Format
Default output is Agent-First Data JSON. With the default --output-to split, the final result goes to stdout while error, progress, and log events go to stderr, so a shell capture cannot mistake diagnostics for result data. Use --output-to stdout or --output-to stderr when a consumer needs one ordered event stream and branches on kind. Use --output plain or --output yaml to change rendering without changing event routing.
# JSON (default)
# {"kind":"result","result":{...},"trace":{...}}
# One ordered JSONL stream on stdout
# Plain (same data, rendered as logfmt key-value pairs)
# kind=result result.domain=cmn.dev result.public_key=ed25519.5XmkQ9vZP8nL3xJdFtR7wNcA6sY2bKgU1eH9pXb4 result.site_path=/home/user/.cmn/mycelium/cmn.dev result.spore_count=5
Development
# Build
# Test
# Manual testing
# Cleanup
&&
Documentation
The closed CLI registry renders the complete reference, including its header:
Use hypha --help or hypha <command> --help for one cli-help-v2 discovery
response; use hypha --docs when an agent needs the whole registry.
| Document | Description |
|---|---|
| docs/cli.md | Generated command reference from src/cli/spec.rs |
| docs/quickstart.md | Install and first commands |
| docs/releasing.md | Publishing flow and distribution options |
| docs/evolution.md | Spawn, grow, absorb, bond, and lineage workflows |
| docs/error-codes.md | Exit codes and error handling |