Rynmesh
This server is a local-first Rynmesh node daemon exposing a personal assistant, content mesh, and peer-to-peer publishing/communication API.
Manage a personalized daily digest: get/refresh it, add RSS/YouTube/Reddit sources, and record feedback (up/down/opened) to tune ranking.
Save read-later URLs and watch web pages for changes, which surface in the next digest.
Send and read end-to-end encrypted messages with peer nodes.
Inspect local node identity and storage configuration.
Publish AI-generated or curated content with signed manifests, receipts, metadata, and compatibility clip tools.
Register/discover peers and advertise/list job capacity through a registry.
Submit, poll, and publish results for signed work orders via registry mailboxes.
Upload, download, and inspect hash-verified relay artifacts.
Fetch and cache content previews/full items, both from the local network and directly from peer endpoints, with validation.
View Rynmesh Credit summaries/scoreboards, record credit events, and rank content by distribution weight.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Rynmesh recommend a podcast about machine learning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Rynmesh
Development branch
feature/personal-ai-workspace: the September 20–24 personal-device, AI workspace, local-model, NAS and desktop redesign is documented in the requirements, implementation and acceptance report. This is a development snapshot, not a new public release; older release notes below do not describe every feature in this branch.
Rynmesh is an open-source, local-first personal AI assistant and verifiable content mesh. A Ryn node can discover and rank public content, learn from local feedback, publish signed content, discover peers, and exchange content with provenance and safety receipts.
Visit rynmesh.ai for the product overview, verified downloads, current milestone status, and the live contribution center.
The node, web interface, recommendation agent, peer protocol, registry, and command-line tools are all included under the MIT license. No account, API key, proprietary service, or preference setup is required for the default experience.
What works today
Proactive recommendations from a built-in public catalog, including video, articles, research, podcasts, audiobooks, and visual content
Local recommendation profiles that learn from More, Less, Hide, Open, topics, platforms, and written direction
A self-hosted web interface served by the node daemon
Signed content manifests, provenance chains, and safety receipts
Direct peer HTTP transport with registry-assisted discovery and NAT-safe relay jobs
Direct ICE/UDP file transfer with automatic ordinary-peer transit fallback; TURN is not used
Content publishing for video, images, audio, documents, slides, datasets, and other files
MCP tools for Codex-, Claude-, and other MCP-compatible AI operators
Friend invite/QR pairing, encrypted messages, follow feed and owned-device sync
Reading history, bookmarks, offline reading and unified Ask Ryn
On current main: shared reading lists, friend content in For You, mesh/device diagnostics, reviewed device cleanup and direct Private AI streaming
On current main: an opt-in digital-service Exchange with free offers/requests, negotiated agreements, an internal Ryncoin wallet, encrypted delivery, refunds, immutable AI dispute/appeal cases and reviewed deadline settlement in a configured v2 alpha network
Non-transferable Rynmesh Credits for distribution reputation
Rynmesh is alpha software. APIs and storage formats may change before 1.0.
Related MCP server: weid.ai MCP Server
Current boundaries
Desktop installers are currently available for macOS on Apple Silicon and Intel. Windows and Linux packaging is planned.
macOS community builds are not yet Apple-notarized.
Public-source recommendations work without peers, accounts, preferences, or a model. AI-generated briefings and Search & Ask require a reachable local Ollama model or explicit opt-in to a configured cloud provider.
The latest published release is v0.7.0; newer main-branch features are listed separately in Product milestones.
Friend invitations and friend-attributed For You content are implemented. Multi-user egress hardening, broader physical acceptance and budgeted agent execution remain work.
The first digital-value exchange milestone is implemented for configured alpha groups; see Exchange alpha. Registry issuance is finite and one-time per identity. v1 histories remain read-only; there is no automatic balance migration. See protocol hardening for deadline outcomes and limits. The fixed-roster approval log and model adapters do not prove permissionless security or impartial AI. Broad commerce, hiring, paid media and public rewards remain in the Network economy roadmap. Fiat conversion remains a much later stage.
The safety scanner is an alpha implementation; operating an unrestricted network of untrusted peers requires the additional hardening described in Product milestones.
For an implementation inventory and clearly separated contribution areas, see Product milestones. Work that is ready to be claimed is tracked in GitHub Issues, not inferred from aspirational design documents. The current accepted backlog is grouped in the P1 hardening milestone.
Install from GitHub
macOS desktop
Download the Apple Silicon (aarch64) or Intel (x86_64) DMG from the
latest release, open it, and drag Ryn
to Applications. The app contains its own node daemon and web interface; Python, Node.js, Ollama,
an account, and source configuration are not required. Because community builds are not Apple
notarized yet, the first launch may require Control-clicking Ryn and choosing Open.
Python package
Python 3.10 or newer is required.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
curl -fsSL https://github.com/yeogirlyun/rynmesh/releases/latest/download/install.sh | shOr install the current wheel into an existing Python environment:
python -m pip install https://github.com/yeogirlyun/rynmesh/releases/download/v0.7.0/rynmesh-0.7.0-py3-none-any.whl
rynmesh-peerOpen http://127.0.0.1:8791. Ryn starts its recommendation agent automatically. Adding a YouTube channel, subreddit, or RSS feed is optional.
Versioned wheels, checksums, installer scripts, and source archives are available from GitHub Releases. Release wheels include the built web interface; editable source installs use the Vite development server described below.
Develop from source
git clone https://github.com/yeogirlyun/rynmesh.git
cd rynmesh
./scripts/dev_setup.shFor hot-reloading development, run the node and web app in separate terminals:
./.venv/bin/rynmesh-peercd webapp
npm run devThe local API runs on port 8791; Vite serves the development UI on port 5173.
Run a registry
Peer discovery can use a registry, but a registry is not required for the local personal-assistant experience.
export RYNMESH_REGISTRY_HOST="0.0.0.0"
export RYNMESH_REGISTRY_PORT="8790"
export RYNMESH_REGISTRY_DIR="$HOME/.rynmesh/registry"
rynmesh-registryThe registry stores signed peer records, work-order mailbox messages, and optional relay blobs. Nodes verify signatures and content hashes locally.
Three-node P2P peer transit
rynmesh-transit sends directly over ICE/UDP when possible and can use another
ordinary Rynmesh peer as a single encrypted transit hop when the direct route is
unavailable or degraded. Both legs are host/server-reflexive P2P connections;
the registry carries signed signaling only, and TURN candidates fail closed.
# Peer 3
rynmesh-transit worker --role target --network-id my-network
# Peer 2
rynmesh-transit worker --role transit --network-id my-network
# Peer 1: direct first, peer 2 on hard failure
rynmesh-transit send-file-adaptive artifact.bin \
--target-peer "<peer-3-id>" --relay-peer "<peer-2-id>" \
--network-id my-networkSee the design and acceptance contract and operator runbook.
MCP server
rynmesh-mcpSee Architecture, Product milestones, and Contributing for deeper project context.
Optional local LLM provider packages
The desktop node and recommendation assistant do not require Docker or a local
model. Operators who choose to provide private inference can connect an existing
loopback OpenAI-compatible or Ollama service, or let Rynmesh manage one: managed
mode downloads a verified GGUF model and runs it with the bundled llama.cpp
runtime built into the desktop app, or a managed download of the pinned release
on a pip-installed node. Docker is an opt-in runtime for server operators who
prefer container isolation, selected with --runtime docker:
rynmesh-llm detect
rynmesh-llm setup --mode openai-compatible --base-url http://127.0.0.1:8080
# Managed local model, bundled/downloaded native runtime (default):
rynmesh-llm setup --mode managed --profile balanced --yes
# Managed local model, opt-in Docker runtime (server nodes):
rynmesh-llm setup --mode managed --runtime docker --yesProvider/Consumer task bodies travel as signed end-to-end ciphertext directly between Ryn nodes, with a dedicated ciphertext-only relay fallback. The registry receives discovery and body-free coordination only. Rynmesh Credits remain non-transferable reputation; development Task Balance is a separate simulated ledger and is not real money or a production payment system.
Run the isolated two-node automated demonstration with:
python scripts/llm_e2e.py run
python scripts/llm_e2e.py downSee Local LLM runbook, design and boundaries, and P0 evidence. Developers and AI agents should start with the current development handoff before continuing this feature. The user-facing catalog, typed service routes, local conversation storage, and extension rules are documented in the Services UI architecture.
Verify a checkout
python -m pytest -q
python -m ruff check rynmesh tests qa
cd webapp && npm ci && npm run buildCI also verifies that a packaged node serves its own UI without a development server.
Security and privacy
Node identity, preferences, feedback, and fetched content are stored locally under RYNMESH_HOME (by default beneath ~/.rynmesh). Network access is used for sources or peers the node contacts; model integrations are optional.
Please report vulnerabilities privately as described in SECURITY.md. Do not include secrets or personal data in public issues.
Community
Start with the First Contributor Starter Guide.
Read CONTRIBUTING.md before submitting a pull request.
Choose accepted work from the contribution center and comment
/claimon the linked GitHub issue before implementation.Follow the Code of Conduct.
Use GitHub Issues for reproducible bugs and focused feature requests.
Use GitHub Discussions for questions and broader design ideas.
License
Rynmesh is licensed under the MIT License.
Available Tools
39 toolsrynmesh_credit_scoreboardC
Return visible Rynmesh Credit accounts ranked by distribution weight.
Inputs: category.
rynmesh_credit_summaryB
Return credit score and distribution weight for a Rynmesh peer.
Inputs: peer_id, category.
rynmesh_digest_add_sourceA
Add a content source to the owner's digest: an RSS/Atom URL, a YouTube channel URL or @handle, or a subreddit like r/selfhosted.
Inputs: url (required), tags.
rynmesh_digest_feedbackA
Record the owner's reaction to a digest item (up/down/opened); tunes future ranking and suppresses seen items.
Inputs: action (required), item_id (required).
rynmesh_digest_getC
Get the owner's current Daily Digest: ranked items from their chosen sources (RSS/YouTube/Reddit feeds, read-later saves, page watchers) with reasons per pick.
Inputs: limit.
rynmesh_digest_refreshA
Re-fetch all of the owner's digest sources and watched pages, then rebuild and return the ranked digest.
Inputs: no named parameters.
rynmesh_discover_peersC
Read signed peer records from the configured registry.
Inputs: network_id, include_self, max_age_hours, use_cache_on_error.
rynmesh_download_relay_artifactA
Download and hash-verify a relay artifact by content hash.
Inputs: destination (required), content_hash (required), relay_url.
rynmesh_fetch_content_fullA
Fetch and locally cache full content after validating its receipts and hash.
Inputs: content_id (required).
rynmesh_fetch_content_previewC
Fetch and locally cache a content preview after validating its receipts.
Inputs: content_id (required).
rynmesh_fetch_fullC
Compatibility tool: fetch and locally cache full content by clip ID.
Inputs: clip_id (required).
rynmesh_fetch_peer_content_fullB
Fetch full content directly from a peer endpoint after local hash validation.
Inputs: endpoint (required), content_id (required), expected_peer_id.
rynmesh_fetch_peer_content_previewC
Fetch a content preview directly from a peer endpoint after local manifest validation.
Inputs: endpoint (required), content_id (required), expected_peer_id.
rynmesh_fetch_peer_fullC
Compatibility tool: fetch full content directly from a peer endpoint by clip ID.
Inputs: clip_id (required), endpoint (required), expected_peer_id.
rynmesh_fetch_peer_previewC
Compatibility tool: fetch a preview directly from a peer endpoint by clip ID.
Inputs: clip_id (required), endpoint (required), expected_peer_id.
rynmesh_fetch_previewB
Compatibility tool: fetch and locally cache a content preview by clip ID.
Inputs: clip_id (required).
rynmesh_list_clipsC
Compatibility tool: list signed clip announcements visible to this node.
Inputs: include_invalid.
rynmesh_list_contentB
List signed content announcements visible to this node.
Inputs: include_invalid.
rynmesh_list_job_capacitiesB
List signed polling job capacity records from the configured registry.
Inputs: capability, network_id, max_age_hours.
rynmesh_list_peer_clipsA
Compatibility tool: list clips advertised directly by a peer HTTP endpoint.
Inputs: endpoint (required).
rynmesh_list_peer_contentB
List content advertised directly by a peer HTTP endpoint.
Inputs: endpoint (required).
rynmesh_list_work_resultsC
List signed provider work-result messages visible in the registry mailbox.
Inputs: status, network_id, work_order_id, provider_peer_id, +1 more.
rynmesh_node_infoA
Return this local Rynmesh node identity and storage configuration.
Inputs: no named parameters.
rynmesh_poll_work_ordersC
Poll this node's provider mailbox for open, accepted, running, completed, failed, or cancelled work orders.
Inputs: status, capability, network_id, max_age_hours.
rynmesh_publish_clipC
Compatibility tool: publish a local AI-generated video into Rynmesh.
Inputs: media_path (required), title, run_id, work_id, +7 more.
rynmesh_publish_contentC
Publish AI-generated or AI-curated content into Rynmesh with signed run and safety receipts.
Inputs: content_path (required), tags, title, run_id, +9 more.
rynmesh_publish_work_resultC
Publish a signed provider result or status update for a work order.
Inputs: status (required), work_order_id (required), requester_peer_id (required), message, +4 more.
rynmesh_rank_clipsC
Compatibility tool: rank visible clips by Rynmesh Credit distribution weight.
Inputs: category, include_invalid.
rynmesh_rank_contentC
Rank visible content by Rynmesh Credit distribution weight.
Inputs: category, include_invalid.
rynmesh_readlater_saveA
Save a URL to the owner's read-later queue; the node fetches it and surfaces it in the next digest.
Inputs: url (required).
rynmesh_read_messagesC
Read the message history with a peer (requires the local node daemon to be running).
Inputs: peer_id (required), limit.
rynmesh_record_credit_eventC
Append a signed Rynmesh Credit event for useful work or protocol penalties.
Inputs: kind (required), role, amount, reason, +6 more.
rynmesh_register_job_capacityC
Advertise this node as a polling work-order provider for bounded job capabilities.
Inputs: capabilities (required), metadata, network_id, price_credits, +3 more.
rynmesh_register_nodeB
Publish this node's self-signed peer record to the configured registry.
Inputs: endpoints, network_id, capabilities.
rynmesh_relay_artifact_infoC
Read relay metadata for a content-addressed artifact.
Inputs: content_hash (required), relay_url.
rynmesh_send_messageA
Send an end-to-end encrypted message to a peer's node over the mesh (requires the local node daemon to be running).
Inputs: text (required), peer_id (required).
rynmesh_submit_work_orderC
Submit a signed polling work order to a provider node through the registry mailbox.
Inputs: operation (required), capability (required), provider_peer_id (required), params, +7 more.
rynmesh_upload_relay_artifactB
Upload a local artifact to the configured relay as content-addressed bytes.
Inputs: path (required), filename, relay_url, media_type, +1 more.
rynmesh_watcher_addB
Watch a web page for changes (price, stock, release, edits). Changes surface as digest items on refresh.
Inputs: url (required), note.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 39 tools
Many tools have overlapping purposes, especially the compatibility tools: fetch_preview/fetch_content_preview/fetch_peer_preview/fetch_peer_content_preview, and the corresponding full-content variants, are nearly indistinguishable at a glance. list_clips/list_content, rank_clips/rank_content, and publish_clip/publish_content further blur the boundary between legacy and current workflows.
Tool names are heavily inconsistent: rynmesh_digest_get uses 'get' while rynmesh_node_info uses 'info' and rynmesh_read_messages uses 'read'. Fetch, list, rank, publish, and compatibility variants follow no predictable verb/object pattern, so it is difficult to anticipate the correct tool name.
With 39 tools, the server exceeds the reasonable range for a single MCP server, and a large portion are redundant compatibility wrappers rather than distinct capabilities. The underlying feature set could likely be served by fewer than half these tools without losing functionality.
Core workflows are present: digest sources/feedback, content publishing/fetching, peer discovery, credit events, relay artifacts, and work orders. However, there are notable gaps such as no tool to remove a digest source or watcher, no read-later queue listing/removal, and no update/delete operations for published content.
Maintenance
Related MCP Connectors
Governed personal world model and memory for your AI agent. Pair once, connect over MCP.
Persistent, portable memory for AI assistants — your private memory graph, from any MCP client.
Persistent personal memory for AI assistants — save, search, and recall across every MCP client.
Own, grow and trade portable agent intelligence via TAIP/1 Packs and MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to network on behalf of users, handling profile management, intent-based matching, and secure messaging through the Model Context Protocol.11 npm1-
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with persistent identities (Weid numbers) and a friend-based messaging system, enabling cross-platform AI-to-AI communication through 11 MCP tools.1-
- FlicenseNot gradedqualityBmaintenanceEnables MCP-compliant clients to run a personal AI copilot with agenda tracking, autonomous sandbox execution, ambient cue handling, fast reflex actions, and episodic memory.7-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants such as Claude and Cursor to discover and verify agents, negotiate offers, execute conditional settlements, and verify receipts and complete multi-agent workflows through eight MCP tools.17 PyPI1MIT