dtdannen / dvmdash

Monitoring and Debugging tool for AI Activity on Nostr
MIT License
14 stars 3 forks source link

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/

Run Locally

These instructions aren't complete but hopefully are helpful for those with some experience with Django, mongo db, and neo4j. Feel free to open an issue if you have any problems running this locally. We will write better instructions after we refactor the backend architecture.

  1. Clone the repo and create a virtual env (tested with Python3.12 but other versions may work)
git clone https://github.com/dtdannen/dvmdash.git
cd dvmdash
python3.12 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e . # this is so the general/ folder is available to the django app
  1. Get a neo4j and mongo db running
  1. Populate the .env file with the connection parameters for your databases
  1. Run the background scripts to start collecting DVM related events from relays. If you don't do this step, the django web app will not have any data or metrics to show. Run each one of them in their own terminal window. If running these on a server, consider screen or run them as a cron job.

  2. Run the Django web app

# ensure virtualenv is activated (i.e. source venv/bin/activate)
# ensure you're at the project root
python dvmdash/manage.py runserver

It may take a few seconds to connect to both neo4j and mongo databases. Once it's running, you can view the web app at http://localhost:8000/

Other Misc Notes

How to update javascript via npm

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

Neo4j Graph Structure

DVM_Process_Flow.png

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

Nodes:

Relationships:

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

List of Relays to Watch for DVM Events

These are the relays where we watch for DVM events.