Announcing DVMDash v0.1

This article announces the first version of DVMDash, a monitoring and debugging tool for Data Vending Machine activity on Nostr.

Dustin Dannenhauer

13. August 2024August 13, 2024 · 8 Min. Lesezeit8 min read · Aktualisiert am 14. August 2024Updated August 14, 2024

After months of development I am excited to officially announce the first version of DVMDash (v0.1). DVMDash is a monitoring and debugging tool for all Data Vending Machine (DVM) activity on Nostr. The website is live at https://dvmdash.live and the code is available on Github.

Data Vending Machines (NIP-90) offload computationally expensive tasks from relays and clients in a decentralized, free-market manner. They are especially useful for AI tools, algorithmic processing of user’s feeds, and many other use cases.

The long term goal of DVMDash is to become 1) a place to easily see what’s happening in the DVM ecosystem with metrics and graphs, and 2) provide real-time tools to help developers monitor, debug, and improve their DVMs.

DVMDash aims to enable users to answer these types of questions at a glance:

For developers working with DVMs there is now a visual, graph based tool that shows DVM-chain activity. DVMs have already started calling other DVMs to assist with work. Soon, we will have humans in the loop monitoring DVM activity, or completing tasks themselves. The activity trace of which DVM is being called as part of a sub-task from another DVM will become complicated, especially because these decisions will be made at run-time and are not known ahead of time. Building a tool to help users and developers understand where a DVM is in this activity trace, whether it’s gotten stuck or is just taking a long time, will be invaluable. For now, the website only shows 1 step of a dvm chain from a user's request.

One of the main designs for the site is that it is highly clickable, meaning whenever you see a DVM, Kind, User, or Event ID, you can click it and open that up in a new page to inspect it.

Another aspect of this website is that it should be fast. If you submit a DVM request, you should see it in DVMDash within seconds, as well as events from DVMs interacting with your request. I have attempted to obtain DVM events from relays as quickly as possible and compute metrics over them within seconds.

This project makes use of a nosql database and graph database, currently set to use mongo db and neo4j, for which there are free, community versions that can be run locally.

Finally, I’m grateful to ⁠OpenSats for supporting this project.

Features in v0.1:#

Global Network Metrics:#

This page shows the following metrics:

Recent Requests:#

This page shows the most recent 3 events per kind, sorted by created date. You should always be able to find the last 3 events here of all DVM kinds.

DVM Browser:#

This page will either show a profile of a specific DVM, or when no DVM is given in the url, it will show a table of all DVMs with some high level stats. Users can click on a DVM in the table to load the DVM specific page.

Kind Browser:#

This page will either show data on a specific kind including all DVMs that have performed jobs of that kind, or when no kind is given, it will show a table summarizing activity across all Kinds.

Debug:#

This page shows the graph based visualization of all events, users, and DVMs involved in a single job as well as a table of all events in order from oldest to newest. When no event is given, this page shows the 200 most recent events where the user can click on an event in order to debug that job. The graph-based visualization allows the user to zoom in and out and move around the graph, as well as double click on any node in the graph (except invoices) to open up that event, user, or dvm in a new page.

Playground:#

This page is currently under development and may not work at the moment. If it does work, in the current state you can login with NIP-07 extension and broadcast a 5050 event with some text and then the page will show you events from DVMs. This page will be used to interact with DVMs live. A current good alternative to this feature, for some but not all kinds, is https://vendata.io/.

Looking to the Future#

I originally built DVMDash out of Fear-of-Missing-Out (FOMO); I wanted to make AI systems that were comprised of DVMs but my day job was taking up a lot of my time. I needed to know when someone was performing a new task or launching a new AI or Nostr tool!

I have a long list of DVMs and Agents I hope to build and I needed DVMDash to help me do it; I hope it helps you achieve your goals with Nostr, DVMs, and even AI. To this end, I wish for this tool to be useful to others, so if you would like a feature, please submit a git issue here or note me on Nostr!

Immediate Next Steps:#

Long Term Goals:#

Acknowledgements#

There are some fantastic people working in the DVM space right now. Thank you to ⁠Yuki Kishimoto for making python bindings for nostr_sdk and for the recent asyncio upgrades! Thank you to ⁠Don't Believe The Vibe 🌱🍋🍊 for answering lots of questions about DVMs and for making the nostrdvm library. Thank you to ⁠PABLOF7z for making the original DVM NIP and vendata.io which I use all the time for testing!

P.S. I rushed to get this out in time for Nostriga 2024; code refactoring will be coming :)

#ai#dvm#nostr

Written by

Comments

No comments yet. Start the conversation.

Contents

3 sections

  1. Features in v0.1:
  2. Looking to the Future
  3. Acknowledgements