puter icon indicating copy to clipboard operation
puter copied to clipboard

Stock Market Driver

Open KernelDeimos opened this issue 9 months ago • 8 comments

Stock Market Driver

Integration with stock market services on Puter, including:

  • A driver interface for fetching stock market information
  • One or more integrations

Many devices and platforms have widgets that display stock market information at a glance. Currently it would be difficult to implement this sort of thing in Puter without going through the wisp/network driver.

This should go in a new Puter module for utility drivers. You'll learn how to do this after reading the resources below.

What is a Puter Driver?

Let's call the operating system on your computer/phone/etc a "Low-Level Device Operating System" or LLDOS. Puter is a "High-Level Distributed Operating System" or HLDOS. Where an LLDOS coordinates access to hardware, an HLDOS coordinates access to services and network resources. In Puter, drivers are integrations with third-party services, network devices, or even the underlying LLDOS where a Puter node is hosted.

Puter drivers have two parts:

  • a driver interface
  • a driver implementation

Driver interfaces are the "types" of drivers. For example, an LLDOS may have multiple different drivers that are recognized as "printers". "printer" is the interface or type. Some examples of driver interfaces on Puter include:

  • Chat completion interface for AI / LLMs (puter-chat-completion)
  • Providers of OCR (optical character recognition) (puter-ocr)
  • Providers of voice synthesis / text-to-speech (puter-tts)
  • Key-value storage (puter-kv)
  • CRUD (+ Query) interface for Puter-native data types (crud-q)
  • Execute code on external interpreters/compilers (puter-exec)

Driver implementations are backend services that define a static member called IMPLEMENTS, where this member contains an entry for a registered interface. (this may sound confusing at first - it will be more clear after reading the resources below)

Building Drivers

Note: some of this documentation may tell you to add an interface to interfaces.js inside the drivers directory. Don't do this; instead register interfaces as is done here, here, here, and here.

Examples of Drivers

  • The puterai module registers a number of driver interfaces and implementations.
  • The hello-world service implements the hello-world driver interface as an example. This is a little outdated because:
    • HelloWorldService should probably be in a separate module. (ex: a module called examples)
    • The hello-world interface is defined in this legacy interfaces.js file, but it should be registered by HelloWorldService instead like we do in AIInterfaceService.
  • For some drivers it makes sense to put them in a separate module. here is a template for modules.
    • Driver interfaces of a similar nature are often placed in the same module. For example, the puterai module has interfaces for LLMs, TTS, etc. It is assumed that AI service providers will often provide multiple of these types of services, so if you already have an API key you should be able to access all the provider's services with just this module.

KernelDeimos avatar Mar 03 '25 20:03 KernelDeimos

Hey @KernelDeimos can i be assigned this issue?

BravoClassic avatar Mar 04 '25 04:03 BravoClassic

Assigned! Let me know if you run into any hurdles.

KernelDeimos avatar Mar 04 '25 05:03 KernelDeimos

Hey @KernelDeimos could I be assigned this issue?

sohumgautam17 avatar Mar 05 '25 05:03 sohumgautam17

Hi @sohumgautam17, please let me know if you're working together with @BravoClassic . I want to avoid situations where people are stepping on each others toes so I will only co-assign with explicit confirmation.

KernelDeimos avatar Mar 05 '25 09:03 KernelDeimos

@KernelDeimos Could you explain what you meant by one or more integrations? Do you mean different stock market apis?

BravoClassic avatar Mar 09 '25 04:03 BravoClassic

Yes that's right, one or more different stock market APIs. If only one, it might be a good idea to look at the docs for a couple other APIs anyway to prevent over-fitting (making the interface suitable for one API but unsuitable for other APIs in the future)

KernelDeimos avatar Mar 10 '25 18:03 KernelDeimos

Okay got it. Also i have couple of apis which i could use. They are all paid. How do you want me to approach this? @KernelDeimos

BravoClassic avatar Mar 11 '25 11:03 BravoClassic

there's no free API for this? That's surprises me a bit. I suppose a mock implementation for now would be sufficient in that case

KernelDeimos avatar Mar 11 '25 19:03 KernelDeimos