Skip to content

Monitoring and Debugging tool for AI Activity on Nostr

License

Notifications You must be signed in to change notification settings

dtdannen/dvmdash

Repository files navigation

dvmdash

DVMDash aims to be a monitoring and debugging tool for DVM activity on Nostr. 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.

A version of the website is running here:

https://dvmdash.live/

Install

Better installation instructions are coming soon!

Besides the Django web app, the following scripts should be running with access to the same databases used by the webapp:

How to update javascript via npm

  • After you've added a new library to the package.json file and made any changes to webpack.config.js, you can run npm run build to update the javascript files in the static/ directory in the monitor/static/ directory.
  • Then run python dvmdash/manage.py collectstatic to update the static files in the main staticfiles/ directory, which is where static files are served when running locally.

How to run this locally

  1. Run a MongoDB locally

    • for example, run mongo locally:
      • ./mongod --dbpath ~/mongodb/data/db
  2. Run Neo4j

  3. (Optional) Run a local DVM

  4. (Optional) Run a local relay, such as bucket

    • this is helpful to test local dvms with the playground page, testing sending and receiving DVM events.

APOC Extension

  • Download the APOC library JAR file that matches your Neo4j version from the APOC releases page on GitHub: https://github.com/neo4j/apoc/releases
  • Copy the APOC JAR file to the plugins directory of your Neo4j installation. For example, if you're using Neo4j 4.x, the path would be neo4j-home/plugins/.
  • Open the neo4j.conf configuration file located in the conf directory of your Neo4j installation.
  • Uncomment or add the following line to the neo4j.conf file to enable the APOC library: dbms.security.procedures.unrestricted=apoc.*

Neo4j Graph Structure

DVM_Process_Flow.png

The graph structure of events is stored in a Neo4j database.

Nodes:

  • Entity:
    • These have an npub, and contain all users and DVMs
  • Event:
    • These are Nostr events signed by Entities
  • Invoice:
    • Data that contains information for a payment. Events refer to these
  • Payment Receipt:
    • Data showing a receipt of purchase, such as a zap receipt.

Relationships:

Note that these are the primitive relationships. There will be other, inferred relationships later based on the primitive ones.

  • MAKES_EVENT: # Used any time an entity makes an event
    • Entity -> Event
  • FEEDBACK_FOR: # Used to connect a DVM feedback event to the original request
    • Event -> Event
  • RESULT_FOR: # Used to connect a DVM result event to the original request
    • Event -> Event
  • HAS_INVOICE: # Used to connect a feedback event to an invoice
    • Event -> Invoice
  • HAS_RECEIPT: # Used to connect an invoice to a payment receipt
    • Invoice -> Payment Receipt
  • PAYMENT_FROM: # Used to connect a payment receipt to the entity that paid
    • Payment Receipt -> Entity
  • PAYMENT_TO: # Used to connect a payment receipt to the entity that received the payment
    • Payment Receipt -> Entity

List of Relays to Watch for DVM Events

These are the relays where we watch for DVM events.

  • wss:https://nostr-pub.wellorder.net
  • wss:https://relay.damus.io
  • wss:https://nos.lol
  • wss:https://relay.primal.net
  • wss:https://offchain.pub
  • wss:https://nostr.mom
  • wss:https://relay.nostr.bg
  • wss:https://nostr.oxtr.dev
  • wss:https://relay.nostr.bg
  • wss:https://nostr-relay.nokotaro.com
  • wss:https://relay.nostr.wirednet.jp