Documentation Index
Fetch the complete documentation index at: https://iii.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
What a Function is
A Function is a named handler inside a Worker. It takes a payload and returns a result. From the iii system’s perspective, a Function is identified by its name and addressable across language and location boundaries. Callers do not know what Worker is providing the Function, what language the handler is written in, or where the Worker is running. The Engine routes each invocation to a Worker that currently provides the target Function. A Function has no fixed shape beyond payload-in / result-out. Some Functions are pure computation. Some perform side effects (state writes, HTTP calls, queue enqueues). Some are agentic, invoking other Functions in turn. The Engine does not distinguish: routing is the same for all of them.Function identifiers
Function identifiers use theservice::name convention. The service segment groups related
Functions together as a namespace, scope, or worker name. The name segment is the specific
handler. Identifiers like math::add, state::get, and http::serve follow this convention.
The convention is a recommendation, not a hard rule. Any string is a valid function ID at the engine
level, but the service::name form makes the Function’s intent obvious to readers and avoids
collisions between unrelated Functions registered by different Workers.
Direct invocation
Registering a Function withregisterFunction() makes it directly invokable through
worker.trigger() from any connected Worker and through the iii trigger CLI command. No explicit
Trigger registration is required for these two paths; they are the baseline call surface every
registered Function gets. Other trigger sources (HTTP, cron, queue, state, stream) bind an explicit
Trigger to the same function_id.
Multiple Triggers per Function
A single Function can be the target of any number of Triggers. The same Function can be invoked by an HTTP request, a cron schedule, and a queue message at once, by registering three separate Triggers that share the samefunction_id. The function code does not change; only the trigger
registrations differ. This is what lets a single business-logic Function answer to many event
sources without per-source variants.