OPAL reference

OPAL (Operator Permission and Access Layer) is the structured command interface every operator uses to drive OctoMY™ — you, an automation rule, or a connected language model. This page is the per-domain catalogue of registered OPAL Tasks.

For the architectural overview (why OPAL exists, the three operator types, permissions, audit), see OPAL architecture.

Security Consideration

OPAL Tasks are validated against operator permissions before execution. An LLM can only perform tasks the user has explicitly granted scope for — and those permissions can be revoked at any time. Every execution lands in the OPAL History database, so you can always see exactly what was done, by whom, against which Sentient and Node.


Task domains

Every subsystem registers its tasks into the central registry under a domain prefix. Click through for per-task parameter schemas, permissions, and examples.

Domain Prefix What it controls Representative tasks
Catalog catalog. Browse and capture widgets from the widget catalog catalog.list_widgets, catalog.list_by_tag, catalog.search, catalog.capture_widget, catalog.capture_all, catalog.preview_widget
Navigation navigation. List and open activities in the running app navigation.list_activities, navigation.goto_activity
Screenshot screenshot. Grab the screen or a specific widget screenshot.copy, screenshot.save
Batch batch. Manage long-running background jobs batch.list, batch.status, batch.cancel, batch.jobs.query, batch.job.get, batch.job.cancel, batch.job.retry
Batch — node batch.node. Hand this machine to the fleet before a long run, and take it back batch.node.mode, batch.node.capacity
Batch — fleet batch.executors. See which machines can run a job, and why one will not place batch.executors.list, batch.executors.explain, batch.drift
Filesystem filesystem. Sandbox-restricted file operations filesystem.copy, filesystem.chmod
Directives directive. Create and manage trigger directives directive.new, directive.list, directive.pause, directive.resume, directive.delete
Constellation constellation. Manage your node constellation constellation.list, constellation.details, constellation.status, constellation.launch, constellation.stop, constellation.create, constellation.delete, constellation.add_member
Help help. Search, read, and open documentation help.search, help.list, help.outline, help.read, help.open, help.find
Serial serial. Manage serial port connections serial.list_ports, serial.list_connections, serial.get_connection, serial.create_connection, serial.update_connection, serial.delete_connection, serial.open
BanterLab banter. Drive the BanterLab parameter / codec / testset workflow banter.param_list, banter.preset_list, banter.codec_list, banter.testset_describe, banter.testset_list_tests
Shade shade. Run LLVM-compiled compute shaders shade.run, shade.get_source
Sentient sentient. / node. Create / delete / select Nodes; Sentient password and recovery sentient.set_password, sentient.view_profile, sentient.security_unboxing, sentient.export_recovery, node.create, node.delete, node.list, node.select
Singularity singularity. Choose the audio output, the output pair and the volume singularity.audio.list-outputs, singularity.audio.set-output, singularity.audio.set-output-pair, singularity.audio.play-test-tone
Construct construct. Edit a Construct scene construct.item_add, construct.item_remove, construct.item_rename, construct.item_duplicate, construct.item_set_transform, construct.item_set_rotation_mode, construct.item_set_parent, construct.item_set_material

Rotation via OPAL is Euler-angle based and gizmo-independent. construct.item_set_transform sets rotation with rx/ry/rz (degrees) written directly to the item's transform — it does not go through the interactive rotation gizmo, so OPAL plans set orientation the same way regardless of gizmo behaviour.

An SDF item stores its rotation in one of eight representations. By default rx/ry/rz are degrees in the item's current mode. The optional rotationMode argument (EulerZYX, EulerXYZ, EulerXZY, EulerYXZ, EulerYZX, EulerZXY, AxisAngle, Quaternion) sets the rotation in that mode; for AxisAngle, rx/ry/rz are the axis and angle is the degrees. Given alone, rotationMode converts the item's current rotation without moving it, which is also what construct.item_set_rotation_mode (itemId, mode) does.

A transform under an expression is set through the parameter task. translate, rotate and scale are parameters, so an expression covers a whole channel: construct.sdf.set_all_parameters with {"rotate": "=vec3(0, anim.progress * 360, 0)"}. The scalars on construct.item_set_transform carry literal numbers only. It refuses a channel an expression already owns, because the expression is re-evaluated every frame and would discard the write.


Detail pages

Topic Description
Commands Per-task parameter schemas
Permissions The permission scopes each domain requires
Errors Error codes and recovery patterns
BanterLab Driving BanterLab from OPAL plans

Operator types

Every task invocation is made by one of three operator types. The task is the same; the permission gate differs:

Operator Gate When it applies
Sentient None You're the device's authority; UI clicks and your direct OPAL Activity invocations
Automation Approved at rule creation Trigger directives, scheduled jobs
LLM Live scope check Every assistant action passes through SentientPermissionsActivity

See OPAL architecture for the rationale and Trust Levels for how permissions are graduated.


TaskPlans

A single task does one thing. A TaskPlan is a JSON document chaining tasks, with each step able to reference earlier outputs:

{
  "steps": [
    {"task": "catalog.list_by_tag", "tag": "trust"},
    {"task": "catalog.capture",     "id": "$1.results[0].id"},
    {"task": "filesystem.copy",     "from": "$2.image_path", "to": "/exports/"}
  ]
}

The same shape underlies LLM-composed plans, batch jobs, and trigger directives. See Plans for authoring tools.


Where you see OPAL in the UI

UI surface What it shows
OPAL activity Direct task explorer — pick a task, fill its parameters, run it
OPAL History activity Audit log: every task that has run on this Sentient
Sentient Permissions activity Per-LLM grants — which scopes each model has
Batch activity Long-running tasks reporting progress
Directives activity Rules that fire OPAL TaskPlans on a schedule or condition
LLM chat overlay Assistant actions surface as named OPAL Tasks in the transcript