Vana API

Bring Your Own Node

One of Vana's goals is to provide a neutral infrastructure for personal data. The first building block of that goal is to host your own node, with your private models and data, on a machine that you own and/or trust. Once deployed to your own infrastructure, your node can interact with other apps in the Vana ecosystem, protected by permissions that you grant them.
Features of a self-hosted node:
  • Easy to spin up: clone a repository, and run a script to bring up all the necessary Docker containers
  • Easy to host: deploy to cloud infrastructure like AWS or GCP, or on your own machine
  • Easy to build upon: an extensible framework makes adding new features seamless
Here is the code to self-host your node. It is a work in progress and contributions are welcome.


High level architecture of how a self-hosted node will be interoperable with the Vana ecosystem

How it works:

  • The Vana API is the central place for interacting with gotchis (for now). Third-party apps will use this API to interact with both Vana-hosted and self-hosted gotchis.
  • Each user comes to Vana through Vana's hosted app. A hosted gotchi is created for them, and is initially unpersonalized
    • The user can either choose to upload personal data to Vana, or self-host an agent themselves
  • A compute registry keeps track of all self-hosted nodes, where to find them, and valid access tokens to authenticate with them
    • If a gotchi has a self-hosted agent registered, that agent is used to serve requests rather than the one hosted by Vana
  • Before interacting with a gotchi (Vana-hosted or self-hosted), the Vana API reads a publicly available permissions document and decides if the user's token has the appropriate permissions to interact with a gotchi
  • An agent can operate entirely independently of Vana by exposing a limited API for other apps to build upon
  • However, going through the Vana API will allow for a more feature-rich experience, such as interacting with other users, credits, account management, etc