Skip to content
Back to skills

Sdk Reference

ASecurity

{/* TODO: Re-link worker references to https://workers.iii.dev/workers/<name> once the Worker Docs migration ships. */} <Note> This page is a hand-authored snapshot of the planned public surface. The final reference will be generated from the SDK source. The Browser SDK is a standalone implementation alongside the Node SDK, not a build of it. </Note>

  • 18,821 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 3, 2026
developmenttypescriptbashnodeapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 11 files and shows the line behind each finding

Scanned June 3, 2026

npx -y skills add iii-hq/iii --skill sdk-reference --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sdk Reference?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sdk Reference
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iii-hq-sdk-reference/badge)](https://www.skillsdirectory.com/skills/iii-hq-sdk-reference)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
<!-- generated by iii-skill-render. DO NOT EDIT (changes here are overwritten on the next render). Edit docs/0-12-0/sdk-reference/browser-sdk.mdx. -->

# Browser SDK


{/* TODO: Re-link worker references to https://workers.iii.dev/workers/<name> once the Worker Docs migration ships. */}

<Note>
  This page is a hand-authored snapshot of the planned public surface. The final reference will be
  generated from the SDK source. The Browser SDK is a standalone implementation alongside the
  Node SDK, not a build of it.
</Note>

## Installation

```bash
npm install iii-browser-sdk
```

## Common methods

### `registerWorker`

Connect a browser tab to a running iii engine and return its handle.

```typescript
function registerWorker(address: string, options?: InitOptions): ISdk;
```

`address` is the engine's SDK WebSocket URL. The returned `ISdk` carries every method below.

### `registerFunction`

Register a callable function in this tab.

```typescript
worker.registerFunction(
  functionId: string,
  handler: RemoteFunctionHandler,
  options?: RegisterFunctionOptions,
): FunctionRef;
```

### `registerTrigger`

Bind a registered function to a configured trigger instance.

```typescript
worker.registerTrigger(trigger: RegisterTriggerInput): Trigger;
```

Drop the trigger with `Trigger.unregister()` on the returned handle. There is no top-level
`unregisterTrigger`.

### `registerTriggerType`

Declare a new trigger type that this tab advertises.

```typescript
worker.registerTriggerType<TConfig>(
  triggerType: RegisterTriggerTypeInput,
  handler: TriggerHandler<TConfig>,
): TriggerTypeRef<TConfig>;
```

### `unregisterTriggerType`

Remove a previously registered trigger type.

```typescript
worker.unregisterTriggerType(triggerType: RegisterTriggerTypeInput): void;
```

### `trigger`

Invoke a registered function.

```typescript
worker.trigger<TInput, TOutput>(request: TriggerRequest<TInput>): Promise<TOutput>;
```

Resolves with the function's return value for synchronous calls, with an `EnqueueResult` for
`TriggerAction.Enqueue` actions, and with `undefined` for `TriggerAction.Void`.

### `shutdown`

Disconnect from the engine and release resources.

```typescript
worker.shutdown(): Promise<void>;
```

## Trigger actions

`TriggerAction` is a runtime const that produces the value passed to `trigger`'s `action` field.

```typescript
TriggerAction.Void();                       // fire-and-forget
TriggerAction.Enqueue({ queue: "math" });   // route through iii-queue
```

The underlying type is `{ type: "enqueue"; queue: string } | { type: "void" }`.

## Channels

`ChannelReader` and `ChannelWriter` are runtime classes wrapping the engine's stream WebSockets
using the browser's native WebSocket API. `StreamChannelRef` is the type passed between SDK calls
to identify a channel:

```typescript
type StreamChannelRef = {
  channel_id: string;
  access_key: string;
  direction: "read" | "write";
};
```

`ChannelReader` exposes `onMessage`, `onBinary`, `readAll`, and `close`. `ChannelWriter` exposes
`sendMessage(msg: string)`, `sendBinary(data: Uint8Array)`, and `close()`.

## Connection state

`IIIConnectionState` is the literal-type alias `"disconnected" | "connecting" | "connected" |
"reconnecting" | "failed"`, exported from the package root.

## Info types

- `FunctionInfo`. `function_id`, optional `description`, optional `request_format` /
  `response_format`, optional `metadata`.
- `TriggerInfo`. `id`, `trigger_type`, `function_id`, optional `config` / `metadata`.

`WorkerInfo` and `WorkerMetadata` are not part of this SDK. Use the engine introspection
functions ([`engine::workers::list`](./engine-sdk#engine-discovery-functions)) when a
browser client needs metadata about other workers.

## `MessageType`

A runtime enum naming every wire frame the SDK exchanges with the engine. Rarely needed by
callers.

## Surfaces not in this SDK

- **`Logger`.** The Browser SDK does not ship a structured logger; use the browser's built-in
  `console` and rely on the OpenTelemetry surfaces provided by the
  iii-observability worker for export.
- **Error class.** There is no `IIIError` / `IIIInvocationError` class. Failures are surfaced as
  rejected promises carrying `Error` instances; inspect the message and any attached `code` for
  the engine error code.

Files in this skill

  • browser-sdk.mdx4.2 KB
  • browser-sdk.mdx.skill.md4.2 KB
  • engine-sdk.mdx10.5 KB
  • engine-sdk.mdx.skill.md10.5 KB
  • node-sdk.mdx5.4 KB
  • node-sdk.mdx.skill.md5.5 KB
  • python-sdk.mdx5.7 KB
  • python-sdk.mdx.skill.md5.8 KB
  • rust-sdk.mdx5.5 KB
  • rust-sdk.mdx.skill.md5.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…