ContextVM's avatar
ContextVM
_@contextvm.org
npub1dvmc...3jdm
ContextVM is a decentralized protocol that enables Model Context Protocol (MCP) servers and clients to communicate over the Nostr network. It uses Nostr as a secure, distributed transport layer—leveraging cryptographic keys for identity, decentralized discovery, and Bitcoin-powered micropayments. Rather than relying on centralized infrastructure like domains, OAuth, or cloud hosting, ContextVM allows anyone to run or access services using only Nostr and a internet-connected device. It transforms any computational service into a discoverable, accessible, and monetizable resource—while preserving privacy, security, and user sovereignty.
ContextVM's avatar
ContextVM 2 months ago
Just shipped some clarity improvements to CEP-8 🎯 We are pretty close to getting this done; we just shipped some clarification to the payments spec so some concepts are less ambiguous. The spec now has well-defined PMI (payment method identifier) boundaries, clarifiying what goes in `pay_req`. We've added a recommended PMI registry with precise payload semantics, plus naming conventions to keep things unambiguous as the ecosystem grows. Also new: optional direct payments for bearer assets. When both parties support it, you can skip the roundtrip, just attach `["direct_payment", "<pmi>", "<payload>"]` to your request and you're done. Good for cashu 🥜 The ongoing implementation remains unchanged, this is all documentation and specification hardening. Current spec: SDK progress: github.com/ContextVM/sdk/pull/24 Feedback welcome! View quoted note →
ContextVM's avatar
ContextVM 2 months ago
📡 New relay live! wss://relay2.contextvm.org 📡 We were running a public relay at wss://relay.contextvm.org and have now added a new relay to increase redundancy. This new relay is hosted by a different provider in a different location, ensuring that if one provider experiences an outage, the other will remain available. Additionally, there is a third relay operated by @Pete Winn at wss://cvm.otherstuff.ai Note: You can use any public relay for CVM stufff, but these three are more optimized as they reject other events not related with CVM and do not store events, they are ephemeral. We have also added a new section to our awesome repo to make it easy to find these relays:
ContextVM's avatar
ContextVM 2 months ago
The PR is not even merged yet, and we already have @klabo contributing an LNbits payment processor and handler 🚀 Thanks so much for the contribution 💛 The PR will ship two payment processors and handlers: NWC for making it work with any wallet supporting NWC, super easy to configure and use. And LNbits, which will allow the use of an LNbits backend as a payment processor and handler. More built-in payment methods can be added in future iterations. Anyone will be able to create their custom ones as well View quoted note →
ContextVM's avatar
ContextVM 2 months ago
Very excited for this 🔥 CEP-8 payments are coming to ContextVM, with a reference implementation in our TypeScript SDK. It is shaping up nicely, with a clean design and implementation. The cool part is that nothing changes for operators; the transports will still work in the same way they do today, with no breaking changes. Payments are enabled through middlewares, so the inclusion of payments will not affect current consumers of the SDK in any way. There will be no performance degradation, no API-breaking changes, and maximum flexibility. Soon, we will release the new version including the new features, along with some guides on how to start monetizing your services. Stay tuned. In the meantime, you can read the specification at and follow the progress of the implementation in the SDK at . Feel free to give us some feedback or ask any questions!
ContextVM's avatar
ContextVM 3 months ago
CVMI 0.1.9 is out. It includes two minor but necessary features: normalizing quoted command strings so you can pass commands to serve any MCP server inside quotes (e.g., `cvmi serve "npx -y …"`), and adding environment‑variable support to the spawned MCP server using flags such as `cvmi serve -e LOG_LEVEL=debug …`. They aren’t the flashiest features, but they are essential for real world scenarios. Thanks, @hzrd149, for pointing them out 🚀
ContextVM's avatar
ContextVM 3 months ago
CEP-8 payments is becoming a reality. Quite soon, anyone, humans or machines, will be able to monetize their services and computation over Nostr. Permissionless, unstoppable, robust, decentralized services, this is how we win. Little by little, all the pieces are coming together 🚀 If you are interested in the discussion, dig in: If you are interested in the development of it:
ContextVM's avatar
ContextVM 3 months ago
🗞 Proudly announcing the first issue of our new bi‑weekly newsletter! 🗞 In it we will explore everything related to ContextVM, its ecosystem, MCP news, projects, and everything in between. This inaugural issue was written by @tuma , who will help us with communication and news. Tuma is not an LLM or a bot, he is a person, and he already writes for other open‑source projects such as Bitcoin Optech, BTC++ Insider Edition, and more. We’re glad to have him on board and happy to welcome more contributors 💛 Hope you enjoy it, we welcome any feedback, now, Let's keep building!🚀 View article →
ContextVM's avatar
ContextVM 3 months ago
🚀 Serve and Use: two new commands, one CLI, zero hassle image We merged our standalone gateway‑cli and proxy‑cli tools directly into cvmi. What used to require separate installations and configuration now lives under one unified CLI, and it couldn’t be simpler. Serve any MCP server over Nostr: - For example, the NostrBook: npx cvmi serve npx -y @nostrbook/mcp@latest - Or even expose a remote HTTP server through Nostr👀👀: npx cvmi serve https://mcp.applesauce.build/mcp This is a very new feature and led us to bump our SDK version to 0.3.x. More info is available in the CHANGELOG (https://github.com/ContextVM/sdk/blob/master/CHANGELOG.md) and the gateway overview (https://docs.contextvm.org/ts-sdk/gateway/overview/). Use a remote server and access it locally via stdio: npx cvmi use 7506...5fa3 Both new commands work out of the box with ephemeral keys and default relays. Override relays, keys, or other settings via flags, config files, or environment variables when you need more control. To see all available options, just use --help with any command. For builders who want to ship, and for users who want to connect to their services easily, the toolkit is shaping well: skills, servers, and connectivity in one place. Run npx cvmi and explore. Soon we’ll add new features to complement these and give you everything you need to learn, build, debug, and interact with the CVM ecosystem. Stay tuned. #ContextVM #Nostr #MCP #decentralized
ContextVM's avatar
ContextVM 3 months ago
🎇Meet CVMI: the Army knife we are building for ContextVM development🧑‍💻 image If you are building/vibing on Nostr, this is for you. We are shipping CVMI alongside a complete skill set that makes ContextVM development delightful. The skills cover the entire stack: protocol fundamentals, architecture concepts, client and server development, troubleshooting, SDK internals, and production deployment. Each skill includes working templates, reference documentation, and patterns distilled from real Nostr development. Everything you need to do is `npx cvmi`. Or grab the skills through CVMI with `npx cvmi add`, or through the skills CLI with `npx skills add contextvm/cvmi`. These commands will show you the list of available skills and guide you through their installation for any coding platform. Cool, right? You can also pick exactly what you need `npx cvmi add --skill overview` CVMI starts as a skills manager, but we are building toward the unified toolkit that ContextVM deserves. One CLI for skills, server interaction, dev tools, the works. For builders who want to ship. The skills are here now. If you don't know what skills are: #ContextVM #Nostr #MCP #buildinpublic
ContextVM's avatar
ContextVM 3 months ago
🧑‍💻 We've just released a new version of the CVM SDK (0.2.6). This time, it is an update focusing on ergonomics and coding style guidelines. The main refactor is that when creating a transport for a client or a server, you no longer need to create a relay handler. You can simply pass an array of relays, and it will create the handler for you using the Applesauce relay handler, which is our recommended, robust, and better tested relay handler. Now: ```typescript const transport = new NostrClientTransport({ signer, relayHandler: ["wss://relay.contextvm.org", "wss://cvm.otherstuff.ai/"], }); ``` Before: ```typescript const relayHandler = new ApplesauceRelayPool([ "wss://relay.contextvm.org", "wss://cvm.otherstuff.ai/", ]); const transport = new NostrClientTransport({ signer, relayHandler, }); ``` Additionally, we updated some of the agentic conventions, code style, and guidelines. We switched to 'AGENTS.md' and created a 'CLAUDE.md' that simply redirects to 'AGENTS.md'."
ContextVM's avatar
ContextVM 3 months ago
This is a quite necessary project. The fact that it is fully based on permissionless technology that you can consume, run, and self-host makes it even more powerful 🚀 View quoted note →
ContextVM's avatar
ContextVM 3 months ago
We're cooking up some very cool new features for Relatr and decided it's better to channel all communication and news through its pubkey (the same one used to address the server). One key, countless possibilities. Stay tuned, amazing news incoming 🍳 View quoted note →
ContextVM's avatar
ContextVM 3 months ago
🚀 We're excited to announce the 0.2.x release series of the ContextVM SDK, a significant milestone focused on reliability, code quality, and architectural maturity. This release transforms ContextVM from a functional prototype into a hardened foundation ready for long-running servers. As well this release maintains backward compatibility while setting the stage for future enhancements. - What This Release Means for You and Key Improvements If you're running ContextVM servers that need to stay always up handling continuous client connections, this release is essential. We've eliminated critical failure modes, plugged memory leaks, and restructured the codebase to support future growth without accumulating technical debt. 🛡 Half-Open Connection Hardening (Applesauce Relay Handler) One of the most significant reliability improvement addresses how we handle half-open connections, those frustrating scenarios where a relay appears connected but silently stops responding. What we fixed: - Implemented proactive liveness checks that detect unresponsive relays before they impact clients - Added automatic relay pool rebuilding with subscription replay, so clients don't even notice when a relay hiccups - Enhanced error handling ensures cleanup happens correctly even when relays misbehave Why it matters: Previously, a relay could appear healthy while silently dropping messages, leading to client timeouts. Now, ContextVM detects these conditions and automatically recovers. 🧹 Memory Leak Elimination Through careful analysis, we identified and eliminated several memory leaks that could affect long-running servers, the result: Servers can now run indefinitely without requiring restarts to reclaim memory. 🏗 Transport Modularization We've completely restructured the Nostr transport layer from a monolithic design into focused, composable modules Why this matters: This modularization achieves several goals simultaneously: - Code clarity: Each module has a single, well-defined responsibility - Testability: Modules can be tested in isolation with clear boundaries - Extensibility: New features can be added without touching unrelated code - Performance: O(N) operations reduced to O(1) where it counts This architecture will let us add the new features that are coming without cluttering the core logic. 📦 Simple Pool Deprecation Notice We're officially deprecating the `SimpleRelayPool` implementation. The `ApplesauceRelayPool` is now our recommended and fully-supported relay pool. If you're still using `SimpleRelayPool`, we recommend migrating to `ApplesauceRelayPool` for production deployments. 🔧 Additional Reliability Improvements - Graceful shutdown: Task queue now waits for running tasks to complete with configurable timeout - Timeout handling: Added timeout wrappers to prevent hanging network operations - Error handling: Enhanced error context logging with stack traces and relevant identifiers - Session eviction protection: Prevent edge cases under heavy load removing sessions with active routes, eliminating data loss during in-flight requests - Dependency updates: Updated to latest stable versions of key dependencies 🧑‍💻 For Developers This release maintains backward compatibility while setting the stage for future enhancements. The modular architecture means you can expect: - Easier debugging: Clear separation makes issues easier to isolate - Faster iteration: New features can be developed without touching existing code - Better testing: Comprehensive test coverage for each module - Stable APIs: Internal refactoring won't break your integrations 🔭 Looking Ahead The 0.2.x series establishes the foundation for upcoming features that are already in our pipeline: - [CEP-15] Common Tool Schemas - [CEP-8] Capability Pricing And Payment Flow - CEP-XX Server reviews - CEP-XX Server profile metadata and socials - CEP-XX Ephemeral gift wraps With this hardened foundation, we can add these capabilities without coupling or cluttering the codebase. - Upgrade Recommendation All production deployments should upgrade to 0.2.x. The reliability improvements, especially around relay handling and memory management, are critical for long-running servers. The modular architecture also makes future upgrades smoother. As always, we welcome your feedback and contributions. The ContextVM project thrives on community input, and this release reflects many lessons learned from real-world usage. Happy building! 🚀
ContextVM's avatar
ContextVM 3 months ago
We think we found a good candidate for our Relatr plugin validation system 👀 It would probably allow us to create a very portable, shareable, and customizable plugin design, so people can create them and share them, just plug them into their Relatr instances, and customize their algorithms as they prefer. More to come in the next releases, stay tuned 🚀
ContextVM's avatar
ContextVM 3 months ago
With this release, Relatr can now function as a TA provider, publishing ranks directly to relays. If you enable a Relatr server to be in your trusted list of providers, it will display ranks in compatible clients like Amethyst. To do this, simply go to https://relatr.xyz/ta and add a server to your list. Once added, you can enable the server to keep your rank up to date. The process is quite simple and straightforward. I would love to receive any feedback you might have 👍 View quoted note →