Sign In

@opencode-ai/sdk

Package Overview
Dependencies
Maintainers
2
Versions
10904
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opencode-ai/sdk

Effect-native scoped OpenCode host for in-process applications.

beta
npmnpm
Version
0.0.0-beta-17963
Version published
Weekly downloads
13M
59.84%
Maintainers
2
Weekly downloads
 
Created
Source

@opencode-ai/sdk

Effect-native scoped OpenCode host for in-process applications.

The SDK executes Server's assembled HTTP router in memory. It opens no listener and performs no network I/O, while preserving the same routing, middleware, handlers, codecs, and errors as the network client.

import { OpenCode } from "@opencode-ai/sdk"

const opencode = yield * OpenCode.create()
const session = yield * opencode.sessions.get({ sessionID })

It also exports Tool for plugins that add tools with ctx.tool.transform(...). Embedded plugins run through the ordinary discovery flow and register tools into each Location's ToolRegistry through the normal Tools.Service.register(...) path. Closing the owning Effect Scope releases router resources, location services, fibers, and scoped tool registrations.

Embedded hosts are silent by default. Set log to receive structured log entries at the selected minimum level:

const opencode =
  yield *
  OpenCode.create({
    log: {
      level: "warn",
      emit: (entry) => console.error(entry.message, entry.attributes, entry.cause),
    },
  })

sessions.events({ sessionID, after }) replays durable events after the optional aggregate sequence, then emits newly committed durable events. sessions.interrupt(...) targets execution owned by this host, and sessions.message(...) retrieves one projected Session message.

The same constructor is available as a service Layer:

const program = Effect.gen(function* () {
  const opencode = yield* OpenCode.Service
  return yield* opencode.sessions.get({ sessionID })
})

yield * program.pipe(Effect.provide(OpenCode.layer()))

OpenCode.layer(options) adapts the scoped OpenCode.create(options) convenience constructor for dependency injection.

Workspace providers are host infrastructure configured when the SDK is constructed. Workspace lifecycle operations remain on the typed facade:

const opencode = yield * OpenCode.create({ workspaceProviders: { modal: modalWorkspaceProvider } })
const workspace = yield * opencode.workspace.create({ provider: "modal" })
yield * opencode.workspace.destroy({ workspaceID: workspace.id })

FAQs

Package last updated on 23 Aug 2026

Related posts