Skip to main content

Documentation Index

Fetch the complete documentation index at: https://motiadev-chore-content-updates-2.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

The iii Console is a standalone application that gives you full operational visibility into a running iii engine. It provides a web UI to inspect functions, triggers, state, streams, traces, and logs — all in real time.

Quick Start

The console comes preinstalled with iii, start it with:
iii console
Then open your browser to http://127.0.0.1:3113.
The console connects to a running iii engine instance. Make sure your engine is started before launching the console. By default it expects the engine at 127.0.0.1:3111.
The root URL redirects to the Workers page. The sidebar includes Workers, Functions, Triggers, States, Streams, Queues, Traces, Logs, and Config. The optional Flow page appears when flow visualization is enabled.

Workers

The Workers page lists every worker process currently connected to the engine, with live metrics (memory, CPU, event-loop lag), connection time, active invocations, and registered functions. iii Console Workers page showing connected workers grouped by runtime with status, PID, IP, and active invocation counts
ColumnDescription
NameWorker name or short ID if unnamed
RuntimeLanguage runtime badge (node, python, rust) with SDK version
IsolationIsolation context badge (libkrun, docker, k8s, …) when reported
IPWorker’s remote address
PIDWorker process ID
FunctionsNumber of functions the worker has registered
ActiveNumber of currently in-flight invocations
ConnectedTime since the worker connected
The worker detail panel shows full metadata, telemetry (language, project, framework), live metrics, and the list of functions the worker has registered. iii Console Workers page with a selected worker detail panel showing runtime, version, OS, metrics, and registered functions
Workers launched via iii worker add ./path or iii worker add <image> run inside libkrun microVMs. The libkrun launcher builds the VM boot environment and injects III_ISOLATION=libkrun at VM boot time, so you’ll see a purple LIBKRUN badge next to the runtime badge. The badge is descriptive (what the worker reports about its environment), not an attestation — a direct SDK connection can self-set III_ISOLATION=docker (or anything else) before starting. Workers that don’t set the variable show no isolation badge.

Functions

The Functions page lists every function registered with the iii engine and lets you invoke any of them directly with custom JSON input. iii Console Functions page showing grouped functions and the invoke panel for a selected function All registered functions are displayed with their metadata:
ColumnDescription
Function IDThe fully qualified path (e.g. users::getProfile)
TriggersNumber and types of triggers attached to the function
WorkersWorker processes that can execute the function
StatusCurrent function status
Use the search bar at the top to filter functions by name.

Invoking Functions

The detail panel includes a JSON editor for invoking functions directly. Enter a payload, click Invoke, and view the result inline. The console sends requests via POST /_console/invoke.
See Use the Console for step-by-step instructions.
Only functions that are currently registered and connected via an active worker will appear in the list. If a function is missing, check that its worker process is running.

Triggers

The Triggers page shows every trigger registered with the engine and provides interactive tools to test each trigger type. Triggers are grouped by kind (http, cron, event, state) with a total count badge and per-type filter tabs. iii Console Triggers page showing HTTP triggers and the request builder for testing a selected endpoint
ColumnDescription
TypeThe trigger type: http, cron, event, state, etc.
FunctionThe function this trigger invokes
Path / ConfigHTTP path, cron schedule, or event name
StatusActive, Error, or Inactive

Testing Triggers

The console provides interactive testing tools for each trigger type:
Trigger TypeTesting Tool
HTTPRequest builder with method selection, query params, and JSON body
CronSchedule viewer with Trigger Now button for immediate execution
EventEvent emitter with pre-filled event name and JSON payload input
StateUpdate/delete entries in States to fire state:updated / state:deleted triggers
See Use the Console for step-by-step instructions on testing each trigger type.
The available trigger types depend on which workers are loaded in your engine configuration. See Trigger Types and Workers for the full list.

States

The States page provides a browser for the engine’s key-value state store. You can view, create, edit, and delete state entries organized by scope. The layout is divided into three panels: a group list on the left, an items table in the center, and a detail sidebar on the right. iii Console States page showing state groups, key-value items, and JSON value details for a selected item The state browser displays a two-level hierarchy:
  1. Groups (Scopes) — top-level namespaces that organize state
  2. Items — individual key-value pairs within each group
Select a group from the left panel to see all its key-value items. Each item shows a Key and Value (rendered as formatted JSON). Complex values are displayed in a collapsible JSON viewer.

Managing State

The console supports full CRUD operations on state entries:
OperationBehavior
AddPersisted via state::set
EditFires state:updated triggers if registered
DeleteFires state:deleted triggers if registered
See Use the Console for step-by-step instructions.
State persistence depends on your engine’s State worker configuration. With in_memory storage, state is lost on engine restart. With file_based or RedisAdapter, state persists across restarts. See State Worker for configuration details.
Use the search bar to filter items by key name. For groups with many items, the browser supports pagination.

Streams

The Streams page is a live WebSocket monitor that captures messages flowing through the engine’s stream connections. It shows message counters (total, inbound, outbound, and buffer size), subscription management, and direction filter tabs.
ColumnDescription
NameThe stream identifier
GroupThe consumer group the stream belongs to
TypeWhether the stream is user-defined or system-internal
Use the filter toggle to show or hide system streams. Streams update in real time via WebSocket.
Streams are provided by the Stream worker. Make sure iii-stream is included in your engine configuration. See Stream Worker for details.

Queues

The Queues page lists durable queue topics, subscriber counts, queued message counts, in-flight work, retry counts, and dead-letter activity. iii Console Queues page showing durable topics, subscriber counts, dead-letter counts, and the selected topic overview panel
ColumnDescription
TopicQueue topic name
SubscribersFunctions subscribed to the topic
MessagesMessages waiting to be processed
In FlightMessages currently being processed
RetriesMessages scheduled for retry
Dead LettersMessages that exhausted retry handling
The topic detail panel has two tabs:
TabContent
OverviewLive topic stats and a JSON publisher for sending test messages
Dead LettersFailed messages with retry and delete options
See Use the Console for step-by-step instructions on testing queues and managing dead letters.

Traces

The Traces page provides full OpenTelemetry trace visualization with multiple view modes, advanced filtering, and detailed span inspection. iii Console Traces page showing a waterfall chart for a selected trace and span timing details
Trace collection requires the Observability worker with exporter set to memory or both. See Observability Worker for configuration.

Trace List

ColumnDescription
Trace IDUnique identifier (click to expand)
ServiceThe service that produced the trace
Root SpanThe top-level operation name
DurationTotal trace duration
StatusOK, Error, or Pending
SpansNumber of spans in the trace
TimestampWhen the trace started

View Modes

The trace detail view provides five visualization modes:
ModeDescription
Waterfall ChartTimeline view with spans laid out by start time and duration. Default view for sequential/parallel flow analysis.
Flame GraphStack-based view where each span is stacked on its parent. Wider bars indicate longer duration.
Service BreakdownAggregate statistics grouped by service: total spans, average duration, error rate.
Trace MapTopology graph showing service communication via parent-child span relationships.
FlowNode-based execution flow showing parent-child span relationships.
iii Console Traces page showing the flame graph view for a selected trace iii Console Traces page showing a service trace map with connected services for a selected trace iii Console Traces page showing the flow graph view for a selected trace

Span Details

The span detail panel includes the following tabs:
TabContent
InfoSpan name, service, duration, status, trace/span IDs
TagsAll span attributes as key-value pairs
LogsEvents and log entries attached to the span
ErrorsError messages, stack traces, and exception details
BaggageTrace context baggage key-value pairs

Trace Filtering

FilterDescription
Trace IDSearch by exact trace ID
Service NameFilter by service name (substring match)
Span NameFilter by span/operation name (substring match)
StatusFilter by status: OK, Error, or Pending
DurationMin and max duration range in milliseconds
Time RangeStart and end time window
AttributesFilter by span attributes as key-value pairs (AND logic)
Multiple filters are combined with AND logic. Pagination controls at the bottom allow browsing large result sets.
See Use the Console for step-by-step instructions on inspecting traces and spans.

Logs

The Logs page provides a viewer for structured OpenTelemetry logs collected by the engine. Logs are displayed in reverse chronological order. Each entry shows a timestamp, severity level, service name, trace/span context, and message. A severity filter toggle, full-text search, and time-range controls let you zero in on specific log entries. The source breakdown at the bottom shows which services are contributing the most log volume. iii Console Logs page showing structured log rows and a selected log detail panel with context data
Log collection requires the Observability worker with logs_enabled: true. See Observability Worker for configuration.
The iii Console (this web UI) is separate from the engine’s logs_console_output setting. The logs_console_output option controls whether OTLP logs are also printed to the engine process’s stdout — it does not affect the Logs page here.

Log Viewer

ColumnDescription
TimestampWhen the log entry was produced
SeverityLog level: DEBUG, INFO, WARN, ERROR, TRACE
ServiceThe service that produced the log
MessageThe log body/message content
Expanding a log entry reveals the full JSON payload, including attributes, trace/span IDs, and resource metadata.

Log Filtering

FilterDescription
SeverityFilter by one or more log levels
Time RangeStart and end time window
Text SearchFull-text search across log messages
Trace IDShow only logs from a specific trace

Log Entry Details

Each expanded log entry includes:
FieldTypeDescription
timestamp_unix_nanonumberTimestamp of the log entry
severity_textstringSeverity level: INFO, WARN, ERROR, DEBUG, or TRACE
bodystringThe log message content
attributesobjectStructured attributes attached to the log entry
trace_idstringDistributed trace ID for correlating with traces
span_idstringSpan ID within the trace
service_namestringName of the service that produced the entry
If a log entry has a trace_id, you can click it to jump directly to the corresponding trace in the Traces section above.

Flow

The Flow page renders an interactive graph of your system’s architecture, showing how triggers, functions, state stores, and queues connect.
The Flow page is an opt-in feature. Enable it by starting the console with the --enable-flow flag or setting the III_ENABLE_FLOW environment variable.
iii-console --enable-flow
The flow diagram uses an auto-layout algorithm (Dagre) to arrange nodes and edges:
Node TypeDescriptionVisual
HTTP TriggerHTTP endpoint triggersColored by method
Cron TriggerScheduled triggersClock icon
Event TriggerEvent-driven triggersLightning icon
FunctionRegistered functionsCode icon
StateKey-value state storesDatabase icon
QueueQueue nodesList icon
Edges show the data flow direction between components — from triggers to the functions they invoke, and from functions to the state or queues they interact with. The graph uses auto-layout (Dagre) and supports pan, zoom, and node inspection. Layout configuration is saved to the engine’s state store and restored on next visit.
See Use the Console for navigation instructions.

Configuration

The iii Console is configured via CLI flags and environment variables. All settings have sensible defaults for local development. iii Console Config page showing engine endpoints, trigger types, active workers, trigger handlers, and worker pools

CLI Flags

iii-console [OPTIONS]
FlagDefaultDescription
--port, -p3113Port for the console web UI
--host127.0.0.1Host address to bind the console to
--engine-host127.0.0.1Host address of the iii engine
--engine-port3111Port of the engine’s HTTP API
--ws-port3112Port of the engine’s WebSocket server
--bridge-port49134Port of the engine’s SDK bridge WebSocket
--no-otelfalseDisable OpenTelemetry export
--otel-service-nameiii-consoleService name for console’s own OTEL traces
--enable-flowfalseEnable the Flow visualization page

Environment Variables

VariableEquivalent FlagDescription
OTEL_DISABLED--no-otelDisable OTEL export
OTEL_SERVICE_NAME--otel-service-nameOTEL service name
III_ENABLE_FLOW--enable-flowEnable Flow visualization
III_ISOLATIONReported by the SDK as the worker’s isolation context in the Workers page. For libkrun workers, the libkrun launcher injects III_ISOLATION=libkrun into the VM boot environment. Set manually (III_ISOLATION=docker) for container/k8s deployments.

Default Ports

ServicePortDescription
iii Engine HTTP API3111Engine HTTP API
iii Engine WebSocket3112Engine real-time updates
iii Console UI3113Console web interface
iii SDK Bridge49134SDK bridge WebSocket connection

Examples

iii-console

iii-console --engine-host 192.168.1.50 --engine-port 3111 --ws-port 3112

iii-console --port 8080

iii-console --enable-flow --otel-service-name my-console
The console includes a Config page (accessible from the sidebar) that displays the current runtime configuration: engine connectivity, port information, OpenTelemetry settings, and service version.