Durable AI Agents

July 29, 2026 · View on GitHub

The agent layer of the Conductor JavaScript SDK — long-running, dynamic plan-execute, and event-driven AI agents.

  • Package: @io-orkes/conductor-javascript — agent layer imported from the /agents subpath
  • Runtime: Node.js >= 18
  • Module: ESM and CommonJS (import / require)

Start here

Build agents

Framework bridges

You don't have to rewrite an agent authored with another framework to run it on Conductor. runtime.run()/deploy()/stream() detects the framework object you pass in, serializes it to an agent config, and runs it on the server — the identical call you'd make with a native Agent:

const runtime = new AgentRuntime();
const result = await runtime.run(frameworkAgent, prompt);   // <-- same entry point for every framework

Detection is pure duck-typing — no framework package is imported by the SDK, and every framework's peer dependency is optional (install only what you use). detectFramework(agent) returns the first match:

FrameworkDetected when the object has…
native Agentis an instance of Agent (runs natively, not as a framework)
langgraph.invoke() plus a graph shape (.getGraph(), a .nodes Map, or .nodes + .builder)
langchain.invoke() plus an lc_namespace array (e.g. an AgentExecutor)
openainame + string/function instructions + string model + tools[] + an OpenAI marker (handoffs[], inputGuardrails[], asTool(), toolUseBehavior, ...)
google_adksubAgents[] (orchestration agents), or string model + ADK markers (instruction, outputKey, generateContentConfig, beforeModelCallback, ...)

If nothing matches and the object isn't a native Agent, you get a clear error. All five frameworks use the identical runtime.run(agentOrGraph, prompt) entry point — there is no per-framework runtime API. Framework agents can be deployed too: runtime.deploy(frameworkAgent).

Operate and inspect

At a glance

import { Agent, AgentRuntime } from '@io-orkes/conductor-javascript/agents';

const agent = new Agent({
  name: 'greeter',
  model: 'anthropic/claude-sonnet-4-6',
  instructions: 'You are a friendly assistant. Keep responses brief.',
});

const runtime = new AgentRuntime();
try {
  const result = await runtime.run(agent, 'Say hello!');
  result.printResult();
} finally {
  await runtime.shutdown();
}

You need a running Conductor server (default http://localhost:8080/api). See getting-started.md.