Skip to content

project-kardeshev/ao-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ao-sdk

An SDK for developing and creating AO services

AO Protocol SDK - API Overview

This document outlines the APIs for an SDK that enables the development of services and processes in line with The AO Protocol: A Decentralized Open-Access Supercomputer. The AO computer provides a unified, decentralized computing environment capable of supporting parallel processes. These APIs expose core functionalities necessary for interacting with the AO network and building services that can leverage its actor-oriented, message-passing, and decentralized computing architecture.

Table of Contents


Processes

Create a Process

Creates a new process on the AO network by specifying the required virtual machine, scheduling method, and other initialization parameters.

Endpoint:
POST /process

Request Body:

  • module: The WebAssembly or Lua module defining the process code.
  • scheduler: The scheduler unit that will manage the process.
  • memory_limit: Maximum memory allocation for the process.
  • compute_limit: Maximum compute cycles for the process.
  • cron_interval: Optional. Sets up a recurring cron job for the process.

Response:

  • process_id: Unique identifier for the created process.

Get Process State

Fetches the current memory state of a process.

Endpoint:
GET /process/{process_id}

Query Params:

  • to: Optional. Timestamp to evaluate up to (inclusive).

Response:

  • Binary data representing the current memory state of the process.

Terminate Process

Terminates a running process.

Endpoint:
DELETE /process/{process_id}

Response:

  • 200 OK if successfully terminated.

Messages

Send a Message

Sends a message to a process. Messages are how processes communicate and trigger actions in the AO network.

Endpoint:
POST /message

Request Body:

  • to: Process ID to send the message to.
  • data: Message payload.
  • from_process: Optional. If sending from another process.
  • read_only: Optional. Whether the message only reads state.

Response:

  • message_id: Unique identifier of the message sent.

Get Message Status

Fetches the status and result of a previously sent message.

Endpoint:
GET /message/{message_id}

Response:

  • status: The status of the message (e.g., pending, processed).
  • result: The result if the message was processed.

Scheduler Units (SUs)

Submit Data to Scheduler

Submits a new message or process to be scheduled by the Scheduler Unit.

Endpoint:
POST /scheduler

Request Body:

  • Binary ANS-104 data item for a message or process.

Response:

  • id: Transaction ID of the data item.

Get Process Messages

Retrieves all messages for a given process managed by a Scheduler Unit.

Endpoint:
GET /scheduler/{process_id}

Query Params:

  • from: Optional. Fetch messages from this timestamp.
  • to: Optional. Fetch messages up to this timestamp.

Response:

  • Array of messages associated with the process.

Get Process Message

This endpoint is usually requested by the Compute Unit (cu), and the response is a single JSON message representing a single message in ao.

Endpoint:
GET /scheduler/{message_id}?process-id={process_id}

Params:

  • message-id: the message to fetch

Query Params:

  • process-id: the process id the message belongs to.

Response:

  • The message DataItem

Compute Units (CUs)

Request Process Execution

Requests the Compute Unit to execute a message for a process and return the result.

Endpoint:
POST /compute/{process_id}/message/{message_id}

Response:

  • result: The output of the computation, including any new messages or process spawns.

Get Process Output

Fetches the output of a previously executed message.

Endpoint:
GET /compute/{process_id}/message/{message_id}

Response:

  • output: The output of the message processing.
  • spawns: Any new processes spawned as a result.

Messenger Units (MUs)

Relay a Message

Relays a message from one process to another via the Messenger Unit.

Endpoint:
POST /messenger

Request Body:

  • message_id: The message to relay.
  • target_process: The target process to send the message to.

Response:

  • status: Confirmation of successful relay.

Monitor a Process

Starts monitoring a process for any new scheduled messages or cron jobs, cranking them as needed.

Endpoint:
POST /messenger/monitor/{process_id}

Response:

  • status: Monitoring started for the process.

Stop Monitoring a Process

Stops monitoring a process for scheduled messages.

Endpoint:
DELETE /messenger/monitor/{process_id}

Response:

  • status: Monitoring stopped for the process.

Cron Services

Get Cron Outbox

Retrieves any messages generated by cron jobs for a process within a specific time range.

Endpoint:
GET /cron/{process_id}

Query Params:

  • from: Fetch cron messages after this timestamp.
  • to: Fetch cron messages before this timestamp.

Response:

  • Array of cron messages generated during the time range.

Evaluate Cron Job

Manually trigger the execution of a cron job for a process.

Endpoint:
POST /cron/{process_id}

Response:

  • result: Output of the cron job execution, including any messages or spawns.

About

An SDK for developing and creating AO services

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •