Creating a Tool

    How it works

    Noya provides a shared platform for many tools from different creators. Each tool is loaded inside an iframe, and receives an authenticated token for accessing Noya's APIs on the user's behalf. There are APIs for storing and syncing file data, adding menu items to the toolbar, uploading assets, prompting the AI assistant, and more. However, unless the user gives explicit permission, a tool is limited to accessing only its own file data.

    Getting started

    We recommend creating a static website, and hosting it through a service like Vercel or Netlify. These services offer a free tier for static websites.

    We recommend using React, as our React bindings are the most developed. To get started, we recommend creating a new Vite app with the react-ts template, but any way you like to build websites should work (e.g. Next.js).

    To create a new Vite app with the Noya multiplayer package, run:

    npm create vite@latest my-app -- --template react-ts
    
    cd my-app
    
    npm install @noya-app/noya-multiplayer-react
    npm run dev
    

    After installing the package, you can add the useNoyaState hook to connect to Noya:

    There are many more options, including providing a JSON schema for your tool's state, but this is enough to get started.

    When running as a standalone webpage (i.e. not embedded into Noya as an iframe), this hook can save to local storage (pass the offlineStorageKey option).

    Deploying your tool

    Go ahead and deploy your tool to the web.

    From here, you can request access to register your tool with Noya. Please join our Discord server to request access.