Skip to main content

Types

ReactorStatus

The current connection status of the Reactor instance.
type ReactorStatus = 
  | "disconnected"  // Not connected
  | "connecting"    // Establishing coordinator connection
  | "waiting"       // In queue, waiting for GPU assignment
  | "ready";        // Connected to GPU, can send/receive messages

ReactorState

Complete state information including status, waiting info, and errors.
interface ReactorState {
  status: ReactorStatus;
  waitingInfo?: ReactorWaitingInfo;
  lastError?: ReactorError;
}

ReactorWaitingInfo

Queue information when status is waiting.
interface ReactorWaitingInfo {
  position?: number;           // Position in queue
}

Example

const waitingInfo = reactor.getWaitingInfo();
if (waitingInfo?.position) {
  console.log(`You are #${waitingInfo.position} in line`);
}

ReactorError

Error information when issues occur.
interface ReactorError {
  code: string;                              // Error code identifier
  message: string;                           // Human-readable error message
  timestamp: number;                         // When the error occurred (Unix timestamp)
  recoverable: boolean;                      // Whether the error can be recovered from
  component: "coordinator" | "gpu" | "livekit";  // Which component errored
  retryAfter?: number;                       // Suggested retry delay in seconds
}

Common Error Codes

CodeComponentRecoverableDescription
AUTHENTICATION_FAILEDcoordinatorNoInvalid API key or JWT token
COORDINATOR_CONNECTION_ERRORcoordinatorYesFailed to connect to coordinator
GPU_CONNECTION_FAILEDgpuYesFailed to connect to assigned GPU
GPU_CONNECTION_ERRORgpuYesGPU connection error
MESSAGE_SEND_FAILEDgpuYesFailed to send message to GPU

Example

reactor.on("error", (error: ReactorError) => {
  console.error(`[${error.component}] ${error.code}: ${error.message}`);
  
  if (error.recoverable && error.retryAfter) {
    console.log(`Retry suggested in ${error.retryAfter} seconds`);
  }
});

Options

Configuration options for creating a Reactor instance.
interface Options {
  modelName: string;        // The Reactor model to connect to
  insecureApiKey: string;   // Your API key for authentication
  queueing?: boolean;       // Enable queueing (default: false)
}

Example

const options: Options = {
  modelName: "matrix-2",
  insecureApiKey: process.env.REACTOR_API_KEY!,
  queueing: true
};

const reactor = new Reactor(options);
I