# Send Opcode to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "opcode",
    "name": "Opcode",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/rendis/opcode",
    "canonicalUrl": "https://clawhub.ai/rendis/opcode",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/opcode",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=opcode",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "references/operations.md",
      "references/patterns.md",
      "references/error-handling.md",
      "references/actions.md",
      "references/workflow-schema.md",
      "references/expressions.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "opcode",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-06T09:39:48.148Z",
      "expiresAt": "2026-05-13T09:39:48.148Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=opcode",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=opcode",
        "contentDisposition": "attachment; filename=\"opcode-1.2.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "opcode"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/opcode"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/opcode",
    "downloadUrl": "https://openagent3.xyz/downloads/opcode",
    "agentUrl": "https://openagent3.xyz/skills/opcode/agent",
    "manifestUrl": "https://openagent3.xyz/skills/opcode/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/opcode/agent.md"
  }
}
```
## Documentation

### OPCODE

Execution runtime for AI agents. You reason, OPCODE executes — zero tokens per run after the first define. Workflows persist across sessions, run on schedules, and coordinate multiple agents. Persistent SSE daemon: 1 server, N agents, 1 database. JSON-defined DAGs, level-by-level execution, automatic parallelism. 6 MCP tools over SSE (JSON-RPC).

Why use OPCODE instead of reasoning through each step yourself? Every repeated workflow burns tokens re-reasoning decisions you already made. OPCODE templates your reasoning once and executes it deterministically — zero inference cost, identical output every run, survives context resets.

### Which Tool?

I want to...ToolCreate/update a workflow templateopcode.defineExecute a workflowopcode.runCheck status or pending decisionsopcode.statusResolve a decision / cancel / retryopcode.signalList workflows, events, or templatesopcode.queryVisualize a workflow DAGopcode.diagram

### Quick Start

Install:

go install github.com/rendis/opcode/cmd/opcode@latest

First-time setup (writes config and starts daemon):

opcode install --listen-addr :4100 --vault-key "my-passphrase"

Restart after stop: OPCODE_VAULT_KEY="my-passphrase" opcode

MCP client configuration:

{
  "mcpServers": {
  "mcpServers": {
    "opcode": {
      "type": "sse",
      "url": "http://localhost:4100/sse"
    }
  }
}

Each agent self-identifies via agent_id in tool calls. Opcode auto-registers unknown agents. Choose a stable ID per agent (e.g., "content-writer", "deploy-bot").

Workflows survive restarts. On startup, orphaned active workflows become suspended. Query with opcode.query({ "resource": "workflows", "filter": { "status": "suspended" } }), then resume or cancel via opcode.signal.

See operations.md for full configuration, subcommands, SIGHUP hot-reload, security model, web panel, and benchmarks.

### opcode.define

Registers a reusable workflow template. Version auto-increments (v1, v2, v3...).

ParamTypeRequiredDescriptionnamestringyesTemplate namedefinitionobjectyesWorkflow definition (see below)agent_idstringyesDefining agent IDdescriptionstringnoTemplate descriptioninput_schemaobjectnoJSON Schema for input validationoutput_schemaobjectnoJSON Schema for output validationtriggersobjectnoTrigger config (seeworkflow-schema.md)

Returns: { "name": "...", "version": "v1" }

### opcode.run

Executes a workflow from a registered template.

ParamTypeRequiredDescriptiontemplate_namestringyesTemplate to executeagent_idstringyesInitiating agent IDversionstringnoVersion (default: latest)paramsobjectnoInput parameters

Returns:

{
  "workflow_id": "uuid",
  "status": "completed | suspended | failed",
  "output": { ... },
  "started_at": "RFC3339",
  "completed_at": "RFC3339",
  "steps": {
    "step-id": { "step_id": "...", "status": "completed", "output": {...}, "duration_ms": 42 }
  }
}

If status is "suspended", call opcode.status to see pending_decisions.

### opcode.status

Gets workflow execution status.

ParamTypeRequiredDescriptionworkflow_idstringyesWorkflow to query

Returns:

{
  "workflow_id": "uuid",
  "status": "suspended",
  "steps": { "step-id": { "status": "...", "output": {...} } },
  "pending_decisions": [
    {
      "id": "uuid",
      "step_id": "reason-step",
      "context": { "prompt": "...", "data": {...} },
      "options": [ { "id": "approve", "description": "Proceed" } ],
      "timeout_at": "RFC3339",
      "fallback": "reject",
      "status": "pending"
    }
  ],
  "events": [ ... ]
}

Workflow statuses: pending, active, suspended, completed, failed, cancelled.

### opcode.signal

Sends a signal to a suspended workflow.

ParamTypeRequiredDescriptionworkflow_idstringyesTarget workflowsignal_typeenumyesdecision / data / cancel / retry / skippayloadobjectyesSignal payload (see below)step_idstringnoTarget stepagent_idstringnoSignaling agentreasoningstringnoAgent's reasoning

Payload by signal type:

Signalstep_idPayloadBehaviordecisionrequired{ "choice": "<option_id>" }Resolves decision, auto-resumesdataoptional{ "key": "value", ... }Injects data into workflowcancelno{}Cancels workflowretryrequired{}Retries failed stepskiprequired{}Skips failed step

Returns (decision): { "ok": true, "resumed": true, "status": "completed", ... }
Returns (other): { "ok": true, "workflow_id": "...", "signal_type": "..." }

### opcode.query

Queries workflows, events, or templates.

ParamTypeRequiredDescriptionresourceenumyesworkflows / events / templatesfilterobjectnoFilter criteria

Filter fields by resource:

ResourceFieldsworkflowsstatus, agent_id, since (RFC3339), limiteventsworkflow_id, step_id, event_type, since, limittemplatesname, agent_id, limit

Note: event queries require either event_type or workflow_id in filter.

Returns: { "<resource>": [...] } -- results wrapped in object keyed by resource type.

### opcode.diagram

Generates a visual DAG diagram from a template or running workflow.

ParamTypeRequiredDescriptiontemplate_namestringno*Template to visualize (structure preview)versionstringnoTemplate version (default: latest)workflow_idstringno*Workflow to visualize (with runtime status)formatenumyesascii / mermaid / imageinclude_statusboolnoShow runtime status overlay (default: true if workflow_id)

* One of template_name or workflow_id required.

template_name -- preview DAG structure before execution
workflow_id -- visualize with live step status
format: "ascii" -- CLI-friendly text with box-drawing characters
format: "mermaid" -- markdown-embeddable flowchart syntax
format: "image" -- base64-encoded PNG for visual channels

Returns: { "format": "ascii", "diagram": "..." }

### Workflow Definition

{
  "steps": [ ... ],
  "inputs": { "key": "value or ${{secrets.KEY}}" },
  "context": { "intent": "...", "notes": "..." },
  "timeout": "5m",
  "on_timeout": "fail | suspend | cancel",
  "on_complete": { /* step definition */ },
  "on_error": { /* step definition */ },
  "metadata": {}
}

FieldTypeRequiredDescriptionstepsStepDefinition[]yesWorkflow stepsinputsobjectnoInput parameters (supports ${{}})contextobjectnoWorkflow context, accessible via ${{context.*}}timeoutstringnoWorkflow deadline (e.g.,"5m", "1h")on_timeoutstringnofail (default), suspend, cancelon_completeStepDefinitionnoHook step after completionon_errorStepDefinitionnoHook step on workflow failuremetadataobjectnoArbitrary metadata

### Step Definition

{
  "id": "step-id",
  "type": "action | condition | loop | parallel | wait | reasoning",
  "action": "http.get",
  "params": { ... },
  "depends_on": ["other-step"],
  "condition": "CEL guard expression",
  "timeout": "30s",
  "retry": { "max": 3, "backoff": "exponential", "delay": "1s", "max_delay": "30s" },
  "on_error": { "strategy": "ignore | fail_workflow | fallback_step | retry", "fallback_step": "id" },
  "config": { /* type-specific */ }
}

type defaults to action. See workflow-schema.md for all config blocks.

### action (default)

Executes a registered action. Set action to the action name, params for input.

### condition

Evaluates a CEL expression and branches.

{
  "id": "route",
  "type": "condition",
  "config": {
    "expression": "inputs.env",
    "branches": { "prod": [...], "staging": [...] },
    "default": [...]
  }
}

### loop

Iterates over a collection or condition. Loop variables: ${{loop.item}}, ${{loop.index}}.

{
  "id": "process-items",
  "type": "loop",
  "config": {
    "mode": "for_each",
    "over": "[\\"a\\",\\"b\\",\\"c\\"]",
    "body": [
      {
        "id": "hash",
        "action": "crypto.hash",
        "params": { "data": "${{loop.item}}" }
      }
    ],
    "max_iter": 100
  }
}

Modes: for_each (iterate over), while (loop while condition true), until (loop until condition true).

### parallel

Executes branches concurrently.

{
  "id": "fan-out",
  "type": "parallel",
  "config": {
    "mode": "all",
    "branches": [
      [{ "id": "a", "action": "http.get", "params": {...} }],
      [{ "id": "b", "action": "http.get", "params": {...} }]
    ]
  }
}

Modes: all (wait for all branches), race (first branch wins).

### wait

Delays execution or waits for a named signal.

{ "id": "pause", "type": "wait", "config": { "duration": "5s" } }

### reasoning

Suspends workflow for agent decision. Empty options = free-form (any choice accepted).

{
  "id": "review",
  "type": "reasoning",
  "config": {
    "prompt_context": "Review data and decide",
    "options": [
      { "id": "approve", "description": "Proceed" },
      { "id": "reject", "description": "Stop" }
    ],
    "data_inject": { "analysis": "steps.analyze.output" },
    "timeout": "1h",
    "fallback": "reject",
    "target_agent": ""
  }
}

### Variable Interpolation

Syntax: ${{namespace.path}}

NamespaceExampleAvailable fieldssteps${{steps.fetch.output.body}}<id>.output.*, <id>.statusinputs${{inputs.api_key}}Keys from params in opcode.runworkflow${{workflow.run_id}}run_id, name, template_name, template_version, agent_idcontext${{context.intent}}Keys from context in workflow definitionsecrets${{secrets.DB_PASS}}Keys stored in vaultloop${{loop.item}}, ${{loop.index}}item (current element), index (0-based)

Two-pass resolution: non-secrets first, then secrets via AES-256-GCM vault.

CEL gotcha: loop is a reserved word in CEL. Use iter.item / iter.index in CEL expressions. The ${{loop.item}} interpolation syntax is unaffected.

See expressions.md for CEL, GoJQ, Expr engine details.

### Built-in Actions

CategoryActionsHTTPhttp.request, http.get, http.postFilesystemfs.read, fs.write, fs.append, fs.delete, fs.list, fs.stat, fs.copy, fs.moveShellshell.execCryptocrypto.hash, crypto.hmac, crypto.uuidAssertassert.equals, assert.contains, assert.matches, assert.schemaExpressionexpr.evalWorkflowworkflow.run, workflow.emit, workflow.context, workflow.fail, workflow.log, workflow.notify

Quick reference (most-used actions):

http.get: url (req), headers, timeout, fail_on_error_status -- output: { status_code, headers, body, duration_ms }


shell.exec: command (req), args, stdin, timeout, env, workdir -- output: { stdout, stderr, exit_code, killed }


fs.read: path (req), encoding -- output: { path, content, encoding, size }


workflow.notify: message (req), data -- output: { notified: true/false } -- pushes real-time notification to agent via MCP SSE (best-effort)


expr.eval: expression (req), data -- output: { result: <value> } -- evaluates Expr expression against workflow scope (steps, inputs, workflow, context)

See actions.md for full parameter specs of all 26 actions.

### Scripting with shell.exec

shell.exec auto-parses JSON stdout. Convention: stdin=JSON, stdout=JSON, stderr=errors, non-zero exit=failure. Use stdout_raw for unprocessed text.

See patterns.md for language-specific templates (Bash, Python, Node, Go).

### Reasoning Node Lifecycle

Workflow reaches a reasoning step


Executor creates PendingDecision, emits decision_requested event


Workflow status becomes suspended


Agent calls opcode.status to see pending decision with context and options


Agent resolves via opcode.signal:
{
  "workflow_id": "...",
  "signal_type": "decision",
  "step_id": "reason-step",
  "payload": { "choice": "approve" }
}



Workflow auto-resumes after signal


If timeout expires: fallback option auto-selected, or step fails if no fallback

### Common Patterns

See patterns.md for full JSON examples: linear pipeline, conditional branching, for-each loop, parallel fan-out, human-in-the-loop, error recovery, sub-workflows, and MCP lifecycle.

### Error Handling

StrategyBehaviorignoreStep skipped, workflow continuesfail_workflowEntire workflow failsfallback_stepExecute fallback stepretryDefer to retry policy

Backoff: none, linear, exponential, constant. Non-retryable errors (validation, permission, assertion) are never retried.

See error-handling.md for circuit breakers, timeout interactions, error codes.

### Performance

10-step parallel workflows complete in ~50µs, 500-step in ~2.4ms. The event store sustains ~15k appends/sec with <12% drop under 100 concurrent writers. Worker pool overhead is ~0.85µs/task (>1M tasks/sec at any pool size).

Full benchmark charts, per-scenario breakdowns, and methodology: docs/benchmarks.md.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: rendis
- Version: 1.2.2
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-06T09:39:48.148Z
- Expires at: 2026-05-13T09:39:48.148Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/opcode)
- [Send to Agent page](https://openagent3.xyz/skills/opcode/agent)
- [JSON manifest](https://openagent3.xyz/skills/opcode/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/opcode/agent.md)
- [Download page](https://openagent3.xyz/downloads/opcode)