Skip to main content

Installation

pip install iii-sdk

Initialization

register_worker

Create an III client and connect to the engine. Blocks until the WebSocket connection is established and ready. Signature
register_worker(address: str, options: InitOptions | None = None)

Parameters

NameTypeRequiredDescription
addressstrYes-
optionsInitOptions | NoneNo-

Example

from iii import register_worker, InitOptions
worker = register_worker('ws://localhost:49134', InitOptions(worker_name='my-worker'))

Methods

register_trigger

Signature
register_trigger(trigger: RegisterTriggerInput | dict[str, Any])

Parameters

NameTypeRequiredDescription
triggerRegisterTriggerInput | dict[str, Any]Yes-

register_function

Signature
register_function(function_id: str, handler_or_invocation: RemoteFunctionHandler | HttpInvocationConfig)

Parameters

NameTypeRequiredDescription
function_idstrYes-
handler_or_invocationRemoteFunctionHandler | HttpInvocationConfigYes-

trigger

Signature
trigger(request: dict[str, Any] | TriggerRequest)

Parameters

NameTypeRequiredDescription
requestdict[str, Any] | TriggerRequestYes-

register_trigger_type

Signature
register_trigger_type(trigger_type: RegisterTriggerTypeInput | dict[str, Any], handler: TriggerHandler[Any])

Parameters

NameTypeRequiredDescription
trigger_typeRegisterTriggerTypeInput | dict[str, Any]Yes-
handlerTriggerHandler[Any]Yes-

unregister_trigger_type

Signature
unregister_trigger_type(trigger_type: RegisterTriggerTypeInput | dict[str, Any])

Parameters

NameTypeRequiredDescription
trigger_typeRegisterTriggerTypeInput | dict[str, Any]Yes-

shutdown

Signature
shutdown()

Types

iii

EnqueueResult · InitOptions · MiddlewareFunctionInput · StreamRequest · StreamResponse · TelemetryOptions · TriggerAction · TriggerActionEnqueue

EnqueueResult

Result returned when a function is invoked with TriggerAction.Enqueue.
NameTypeRequiredDescription
messageReceiptIdstrNoUUID assigned by the engine to the enqueued job.

InitOptions

Options for configuring the III SDK.
NameTypeRequiredDescription
enable_metrics_reportingboolNoEnable worker metrics via OpenTelemetry. Default True.
headersdict[str, str] | NoneNo-
invocation_timeout_msintNoDefault timeout for trigger() in milliseconds. Default 30000.
otelOtelConfig | dict[str, Any] | NoneNoOpenTelemetry configuration. Enabled by default. Set \{'enabled': False\} or env OTEL_ENABLED=false to disable.
reconnection_configReconnectionConfig | NoneNoWebSocket reconnection behavior.
telemetryTelemetryOptions | NoneNoInternal worker metadata reported to the engine.
worker_descriptionstr | NoneNoOne-line, human/LLM-readable summary of what this worker does. Surfaces in engine::workers::list / engine::workers::info.
worker_namestr | NoneNoDisplay name for this worker. Defaults to hostname:pid.

MiddlewareFunctionInput

Input passed to the RBAC middleware function on every function invocation through the RBAC port.
NameTypeRequiredDescription
actionTriggerActionEnqueue | TriggerActionVoid | NoneNoRouting action, if any.
contextdict[str, Any]NoAuth context returned by the auth function for this session.
function_idstrNoID of the function being invoked.
payloaddict[str, Any]NoPayload sent by the caller.

StreamRequest

Streaming request without the response writer.
NameTypeRequiredDescription
bodyAnyYes-
headersdict[str, str | list[str]]Yes-
methodstrYes-
path_paramsdict[str, str]Yes-
query_paramsdict[str, str | list[str]]Yes-
request_bodyChannelReaderYes-

StreamResponse

Streaming response built on top of a ChannelWriter.
NameTypeRequiredDescription
streamWritableStreamYes-
writerChannelWriterYes-

TelemetryOptions

Worker metadata reported to the engine.
NameTypeRequiredDescription
amplitude_api_keystr | NoneNoAmplitude API key for product analytics.
frameworkstr | NoneNoFramework name (e.g. motia) if applicable.
languagestr | NoneNoProgramming language of the worker (e.g. python).
project_namestr | NoneNoName of the project this worker belongs to.

TriggerAction

Factory for creating trigger actions used with trigger().

TriggerActionEnqueue

Routes the invocation through a named queue for async processing.
NameTypeRequiredDescription
queuestrYesName of the target queue.
typeLiteral['enqueue']NoAlways 'enqueue'.

iii.channel

Channel · ChannelReader · ChannelWriter · StreamChannelRef

Channel

A streaming channel pair for worker-to-worker data transfer.
NameTypeRequiredDescription
readerChannelReaderYes-
reader_refStreamChannelRefYes-
writerChannelWriterYes-
writer_refStreamChannelRefYes-

ChannelReader

WebSocket-backed reader for streaming binary data and text messages.
NameTypeRequiredDescription
streamAnyNo-

ChannelWriter

WebSocket-backed writer for streaming binary data and text messages.
NameTypeRequiredDescription
streamAnyNo-

StreamChannelRef

Reference to a streaming channel for worker-to-worker data transfer.
NameTypeRequiredDescription
access_keystrNoSecret key for authenticating channel access.
channel_idstrNoUnique channel identifier.
directionLiteral['read', 'write']NoChannel direction (read or write).

iii.engine

EngineFunctions · EngineTriggers

EngineFunctions

Engine function ids for internal operations (parity with the Node SDK).
NameTypeRequiredDescription
INFO_FUNCTIONSFinal[str]No-
INFO_REGISTERED_TRIGGERSFinal[str]No-
INFO_TRIGGERSFinal[str]No-
INFO_WORKERSFinal[str]No-
LIST_FUNCTIONSFinal[str]No-
LIST_REGISTERED_TRIGGERSFinal[str]No-
LIST_TRIGGERSFinal[str]No-
LIST_WORKERSFinal[str]No-
REGISTER_WORKERFinal[str]No-

EngineTriggers

Engine trigger ids (parity with the Node SDK).
NameTypeRequiredDescription
FUNCTIONS_AVAILABLEFinal[str]No-
LOGFinal[str]No-

iii.errors

InvocationError

InvocationError

Raised when an invocation dispatched by the SDK fails. Inspect err.code to react to a specific category (e.g. 'FORBIDDEN' for RBAC denials, 'TIMEOUT' for timeouts). Catch this class to handle every rejection. except Exception continues to work because InvocationError inherits from Exception. Attributes are read-only after construction. stacktrace is the engine-side trace when the remote handler raised; it may include internal file paths and should not be surfaced to end users. str(err) intentionally never includes the stacktrace.
NameTypeRequiredDescription
codeAnyNo-
function_idAnyNo-
invocation_idAnyNo-
messageAnyNo-
stacktraceAnyNo-

iii.internal

InternalHttpRequest

InternalHttpRequest

HTTP request with embedded channel references for streaming.
NameTypeRequiredDescription
bodyAnyYes-
headersdict[str, str | list[str]]Yes-
methodstrYes-
path_paramsdict[str, str]Yes-
query_paramsdict[str, str | list[str]]Yes-
request_bodyChannelReaderYes-
responseChannelWriterYes-

iii.protocol

MessageType · RegisterFunctionFormat · RegisterFunctionInput · RegisterFunctionMessage · RegisterTriggerInput · RegisterTriggerMessage · RegisterTriggerTypeInput · RegisterTriggerTypeMessage · TriggerRequest

MessageType

Message types for iii communication.
NameTypeRequiredDescription
INVOCATION_RESULTAnyNo-
INVOKE_FUNCTIONAnyNo-
REGISTER_FUNCTIONAnyNo-
REGISTER_SERVICEAnyNo-
REGISTER_TRIGGERAnyNo-
REGISTER_TRIGGER_TYPEAnyNo-
TRIGGER_REGISTRATION_RESULTAnyNo-
UNREGISTER_FUNCTIONAnyNo-
UNREGISTER_TRIGGERAnyNo-
UNREGISTER_TRIGGER_TYPEAnyNo-
WORKER_REGISTEREDAnyNo-

RegisterFunctionFormat

Format definition for function parameters.
NameTypeRequiredDescription
bodylist[RegisterFunctionFormat] | NoneNoNested fields for object types.
descriptionstr | NoneNoHuman-readable description of the parameter.
itemsRegisterFunctionFormat | NoneNoItem schema for array types.
namestrYesParameter name.
requiredboolNoWhether the parameter is required.
typestrYesType string (string, number, boolean, object, array, null, map).

RegisterFunctionInput

Input for registering a function, matches Node.js RegisterFunctionInput.
NameTypeRequiredDescription
descriptionstr | NoneNoHuman-readable description.
idstrNoUnique function identifier.
invocationHttpInvocationConfig | NoneNoHTTP invocation config for externally hosted functions.
metadatadict[str, Any] | NoneNoArbitrary metadata attached to the function.
request_formatRegisterFunctionFormat | dict[str, Any] | NoneNoSchema describing expected input.
response_formatRegisterFunctionFormat | dict[str, Any] | NoneNoSchema describing expected output.

RegisterFunctionMessage

NameTypeRequiredDescription
descriptionstr | NoneNo-
idstrNo-
invocationHttpInvocationConfig | NoneNo-
message_typeMessageTypeNo-
metadatadict[str, Any] | NoneNo-
model_configAnyNo-
request_formatRegisterFunctionFormat | dict[str, Any] | NoneNo-
response_formatRegisterFunctionFormat | dict[str, Any] | NoneNo-

RegisterTriggerInput

Input for registering a trigger (matches Node SDK’s RegisterTriggerInput).
NameTypeRequiredDescription
configAnyNoTrigger-type-specific configuration.
function_idstrNoID of the function this trigger invokes.
metadatadict[str, Any] | NoneNoArbitrary metadata attached to the trigger.
typestrNoTrigger type identifier (e.g. http, queue, cron).

RegisterTriggerMessage

NameTypeRequiredDescription
configAnyYes-
function_idstrNo-
idstrYes-
message_typeMessageTypeNo-
metadatadict[str, Any] | NoneNo-
model_configAnyNo-
trigger_typestrNo-

RegisterTriggerTypeInput

Input for registering a trigger type.
NameTypeRequiredDescription
call_request_formatAny | NoneNoJSON Schema describing the payload sent to functions.
descriptionstrNoHuman-readable description of the trigger type.
idstrNoUnique identifier for the trigger type.
trigger_request_formatAny | NoneNoJSON Schema describing the expected trigger config.

RegisterTriggerTypeMessage

NameTypeRequiredDescription
call_request_formatAny | NoneNo-
descriptionstrYes-
idstrYes-
message_typeMessageTypeNo-
model_configAnyNo-
trigger_request_formatAny | NoneNo-

TriggerRequest

Request object for trigger().
NameTypeRequiredDescription
actionTriggerActionEnqueue | TriggerActionVoid | NoneNoRouting action, None for sync, TriggerAction.Enqueue(...) for queue, TriggerAction.Void() for fire-and-forget.
function_idstrNoID of the function to invoke.
payloadAnyNoData to pass to the function.
timeout_msint | NoneNoOverride the default invocation timeout.

iii.runtime

FunctionRef · TriggerTypeRef

FunctionRef

Reference to a registered function, allowing programmatic unregistration.
NameTypeRequiredDescription
idstrYes-
unregisterCallable[None]Yes-

TriggerTypeRef

Typed handle returned by :meth:iii.III.register_trigger_type. Type parameters:
  • C: configuration type for :meth:register_trigger
  • R: call-request type for :meth:register_function

iii.state

IState · StateDeleteInput · StateDeleteResult · StateEventData · StateEventType · StateGetInput · StateListInput · StateSetInput · StateSetResult · StateUpdateInput · StateUpdateResult

IState

Abstract interface for state management operations.

StateDeleteInput

Input for deleting a state value.
NameTypeRequiredDescription
keystrYes-
scopestrYes-

StateDeleteResult

Result of a state delete operation.
NameTypeRequiredDescription
old_valueAny | NoneNo-

StateEventData

Payload for state change events.
NameTypeRequiredDescription
event_typeStateEventTypeYes-
keystrYes-
new_valueTData | NoneNo-
old_valueTData | NoneNo-
scopestrYes-
typestrNo-

StateEventType

Types of state change events.
NameTypeRequiredDescription
CREATEDAnyNo-
DELETEDAnyNo-
UPDATEDAnyNo-

StateGetInput

Input for retrieving a state value.
NameTypeRequiredDescription
keystrYes-
scopestrYes-

StateListInput

Input for listing all values in a state scope.
NameTypeRequiredDescription
scopestrYes-

StateSetInput

Input for setting a state value.
NameTypeRequiredDescription
keystrYes-
scopestrYes-
valueAnyYes-

StateSetResult

Result of a state set operation.
NameTypeRequiredDescription
new_valueTDataYes-
old_valueTData | NoneNo-

StateUpdateInput

Input for atomically updating a state value.
NameTypeRequiredDescription
keystrYes-
opslist[UpdateOp]Yes-
scopestrYes-

StateUpdateResult

Result of a state update operation.
NameTypeRequiredDescription
new_valueTDataYes-
old_valueTData | NoneNo-

iii.stream

IStream · StreamDeleteInput · StreamDeleteResult · StreamGetInput · StreamListGroupsInput · StreamListInput · StreamSetInput · StreamSetResult · StreamUpdateInput · StreamUpdateResult

IStream

Abstract interface for stream operations.

StreamDeleteInput

Input for stream delete operation.
NameTypeRequiredDescription
group_idstrYes-
item_idstrYes-
stream_namestrYes-

StreamDeleteResult

Result of stream delete operation.
NameTypeRequiredDescription
old_valueAny | NoneNo-

StreamGetInput

Input for stream get operation.
NameTypeRequiredDescription
group_idstrYes-
item_idstrYes-
stream_namestrYes-

StreamListGroupsInput

Input for stream list groups operation.
NameTypeRequiredDescription
stream_namestrYes-

StreamListInput

Input for stream list operation.
NameTypeRequiredDescription
group_idstrYes-
stream_namestrYes-

StreamSetInput

Input for stream set operation.
NameTypeRequiredDescription
dataAnyYes-
group_idstrYes-
item_idstrYes-
stream_namestrYes-

StreamSetResult

Result of stream set operation.
NameTypeRequiredDescription
new_valueTDataYes-
old_valueTData | NoneNo-

StreamUpdateInput

Input for stream update operation.
NameTypeRequiredDescription
group_idstrYes-
item_idstrYes-
opslist['UpdateOp']Yes-
stream_namestrYes-

StreamUpdateResult

Result of stream update operation.
NameTypeRequiredDescription
errorslist[UpdateOpError]No-
new_valueTDataYes-
old_valueTData | NoneNo-

iii.trigger

Trigger · TriggerActionVoid · TriggerConfig · TriggerHandler

Trigger

Represents a registered trigger.

TriggerActionVoid

Fire-and-forget routing. No response is returned.
NameTypeRequiredDescription
typeLiteral['void']NoAlways 'void'.

TriggerConfig

Configuration for a trigger.
NameTypeRequiredDescription
configAnyYes-
function_idstrYes-
idstrYes-
metadatadict[str, Any] | NoneNo-
model_configAnyNo-

TriggerHandler

Abstract base class for trigger handlers.