Public betaTypeScript agent SDK + coding CLI

One foundation for agents you use and agents you build.

Build an agent into your TypeScript application with the SDK. Or work in your terminal with the coding CLI built from the same public components. Configure a model endpoint, tools, permissions, and sessions for the task at hand.

Public packages · Node.js 22.12 or later · Bring a model endpoint

Our direction: agents that can reliably advance the systems they are built on.

01 / The shared foundation

Inspect the pieces. Then run a first query.

The agent framework assembles sessions, tools, and permission checks. The coding CLI is one maintained interface built on it. You can use the framework from your own Node.js application.

@robota-sdk/agent-frameworkAgent frameworksessions · tools · permissions
@robota-sdk/agent-cliCoding CLIrobota
One public TypeScript foundation, with an embeddable path and a ready terminal interface.
Install the SDK packages
npm install @robota-sdk/agent-framework @robota-sdk/agent-provider-openai
One-shot TypeScript query
import { createQuery } from '@robota-sdk/agent-framework';
import { OpenAIProvider } from '@robota-sdk/agent-provider-openai';

const model = 'your-loaded-model-id';
const query = createQuery({
  provider: new OpenAIProvider({
    apiKey: 'local',
    baseURL: 'http://127.0.0.1:1234/v1',
  }),
  model,
});

try {
  console.log(await query('Reply with one sentence.'));
} finally {
  await query.shutdown();
}

This static example requires a running OpenAI-compatible server and a model ID loaded there. The local port is illustrative. The 'local' API key is a placeholder for servers without authentication; replace it with your server's credential if required. A published-package loopback check verified the SDK call and cleanup; no real model answer is shown.

Inspect the framework source

02 / Coding CLI

CLI setup outline
npx @robota-sdk/agent-cli

You need Node.js 22.12+ and an API key or a running local model server. Provider costs and policies depend on the endpoint you choose.

After configuring a provider and model, type a normal prompt:

Reply with one sentence.

Look for a text reply from the selected model; its wording and quality depend on that model. Before asking about project files, decide whether to trust the workspace.

Read CLI setup

02 / Choose a first task

Two practical ways in.

01

Build a query into your app

Install the framework and a provider adapter, then call createQuery from a Node.js script. Move to InteractiveSession when your own UI needs a longer conversation.

Before you run it

You need Node.js 22.12+, a configured provider endpoint, and a model ID. The example on this page uses a running local OpenAI-compatible server.

Read the SDK guide
02

Ask the coding CLI about a project

Run the CLI, configure a provider and model with a hosted key or running local endpoint, then decide whether to trust the workspace before project context is loaded.

Before you run it

You need Node.js 22.12+ and an API key or a running local model server. Provider costs and policies depend on the endpoint you choose.

Read CLI setup

03 / Everything in the foundation

What ships today.

Every capability below is part of the public SDK packages or the coding CLI built from them. Each card names the package, class, flag, or command to look for and links to the guide that owns the details.

Models and providers

Choose the model per task, and keep a turn going when one fails.

Multi-provider adapters

Provider packages for Anthropic, OpenAI, Google Gemini, DeepSeek, Qwen and Gemma, plus any OpenAI-compatible endpoint (gateways, Azure, vLLM, local servers) through baseURL.

  • Anthropic
  • OpenAI
  • Gemini
  • DeepSeek
  • Qwen
  • Gemma
  • baseURL
Guide

Fallback, effort and advisor

FallbackProvider moves a turn to another model when the primary is overloaded or failing. The CLI adds per-run model effort and an advisor model the agent can consult.

  • FallbackProvider
  • --fallback-model
  • --advisor
  • --effort
Guide

Local models

Point a provider profile at an Ollama, LM Studio or other OpenAI-compatible server on your own machine or network. You run the model; enabled tools decide what else leaves it.

  • Ollama
  • LM Studio
  • vLLM
Guide

Image and video generation

The Gemini provider includes image generation, and a separate ByteDance (ModelArk) provider generates video. The video provider is not a chat model for an agent.

  • agent-provider-gemini
  • agent-provider-bytedance
Guide

Tools and safety

Typed tools, with every call checked before it runs.

Validated tools

createZodFunctionTool checks model arguments against a zod schema before your function runs. Built-in coding tools cover files, search, shell, web fetch and web search.

  • createZodFunctionTool
  • Read
  • Write
  • Edit
  • Glob
  • Grep
  • Bash
  • WebFetch
  • WebSearch
Guide

Permission modes and rules

Every tool call passes deny, ask and allow rules, then one of five permission modes. A few destructive actions are never approved automatically in any mode.

  • plan
  • default
  • acceptEdits
  • auto
  • bypassPermissions
Guide

Lifecycle hooks

Run commands on tool, prompt and session events. PreToolUse can block a call; other hooks log, audit, or add context to the next prompt.

  • PreToolUse
  • PostToolUse
  • SessionStart
  • UserPromptSubmit
Guide

OS sandbox for shell

Shell commands can run inside bubblewrap on Linux and WSL2 or Seatbelt on macOS, limiting what a command can read, write, or reach on the network.

  • bubblewrap
  • Seatbelt
  • /sandbox
Guide

Workspace trust

Project instructions such as AGENTS.md and CLAUDE.md load only in a trusted workspace. An untrusted repository refuses unattended runs or starts them Restricted.

  • AGENTS.md
  • CLAUDE.md
  • --safe-mode
Guide

Sessions and execution

Long-running work that survives the terminal and splits across agents.

Saved, resumable sessions

Continue, resume, rename or fork a conversation. Context is tracked and compacted automatically; the SDK host supplies the session store it wants.

  • InteractiveSession
  • /resume
  • /fork
  • /compact
Guide

Background sessions and daemon

Supervised sessions keep running after the terminal closes. One workspace daemon serves several terminals and the desktop app from a single runtime.

  • daemon start
  • --attach
  • session start --background
Guide

Subagents and background tasks

Delegate work to subagents with their own context and tools, in process or in child processes, and manage queued and running jobs from one place.

  • /agent
  • /background
  • agent-executor
  • agent-subagent-runner
Guide

Loops, schedules and plans

Repeat a prompt on a cadence, wake the agent later or when command output matches, and keep a session read-only until you approve its plan.

  • /loop
  • /schedule
  • /monitor
  • /plan
Guide

Checkpoints, memory and cost

Rewind or fork from edit checkpoints, keep approved facts across sessions with opt-in memory, inspect context use, and set a monthly cost budget.

  • /rewind
  • /memory
  • /context
  • /cost
Guide

DAG workflows

/workflows designs a workflow from a description with the active model, saves it as JSON in the workspace, validates it and runs it, optionally detached.

  • /workflows create
  • /workflows run
  • .workflows/
Guide

Multi-agent roundtables

Coordinate independent agents and people in one shared transcript: select turns, run parallel groups, and plug a Robota session in as a participant or selector.

  • agent-roundtable
  • agent-roundtable-robota
Guide

Connect and extend

Bring in servers, skills, and plugins without forking the runtime.

MCP in both directions

Connect to stdio or remote MCP servers, including OAuth sign-in, after explicit approval. Or serve a session as an MCP server over stdio or authenticated HTTP.

  • agent-mcp
  • OAuth
  • /mcp approve
  • mcp serve
  • agent-transport-mcp
Guide

Skills, commands and agents

Markdown skills and commands become slash commands; agent definitions describe subagents. They are discovered in the project and your home directory.

  • .agents/skills
  • .claude/skills
  • .claude/commands
  • /skills
Guide

Plugins and marketplaces

Install plugins that bundle skills, hooks, themes and MCP servers. SDK lifecycle plugins cover history, logging, usage, limits, errors, analytics and webhooks.

  • /plugin marketplace add
  • /plugin install
  • agent-plugin
  • webhooks
Guide

External events

Grant a verified outside service permission to send text events into a running terminal session, and list or revoke those grants from the session.

  • --external-event-grant
  • /events
Guide

Interfaces

The same session behind a terminal, a script, a browser, or a protocol.

Terminal UI

An interactive terminal app with a command menu, prompt history search, rebindable keys, file attachments with @path, and a plain-text screen-reader mode.

  • React + Ink
  • @path
  • Ctrl+R
  • --screen-reader
  • keybindings.json
Guide

Print mode and goals

Run one prompt from a script or pipe, get text, JSON or streaming JSON, request schema-shaped output, or work toward a goal over several turns.

  • -p
  • --output-format json
  • --json-schema
  • --goal
Guide

Browser GUI and desktop app

Serve the GUI for the current workspace on loopback and open it in a browser. The desktop app in the repository shows the same GUI over the workspace daemon.

  • --serve --open
  • agent-app
Guide

Serve over HTTP and transports

Let other services submit turns and stream results as server-sent events, behind a bearer token or as an OAuth resource server. WebSocket, HTTP, MCP and WebRTC carriers share one wire protocol.

  • --serve --http-port
  • SSE
  • OAuth
  • ws · http · mcp · webrtc
Guide

Devices and remote control

Message other live sessions, hand a conversation to another session or device, link your own devices, and co-drive a session from a paired browser over peer-to-peer WebRTC.

  • /peers
  • /handoff
  • /devices
  • /remote-control
Guide

CI and GitHub Actions

Run print mode in a workflow step to review a pull request or answer a task, and gate a pipeline on an evals-as-code score.

  • GitHub Actions
  • -p
  • eval
Guide

Build your own

Use the layers directly, or assemble a product of your own on them.

Conversation engine

ConversationAgent runs and streams turns with history, tool calling, structured output and plugins. It is the minimal set: core plus one provider.

  • ConversationAgent
  • run
  • runStream
  • structured output
Guide

Framework assembly

createQuery runs one-shot queries with built-in tools and permissions; InteractiveSession drives a full conversation; createAgentRuntime assembles a host runtime.

  • createQuery
  • InteractiveSession
  • createAgentRuntime
Guide

Servers, bots and serverless

Put the framework behind an SSE or WebSocket server with a full event stream per session, resume a saved session per bot channel, or run a stateless runtime that persists nothing.

  • createAgentRuntime
  • sessionStore
  • resumeSessionId
  • createStatelessRuntime
Guide

One agent, many channels

TransportRegistry runs one agent definition behind several transports, with their enabled state kept in a settings file; there is no separate gateway process.

  • TransportRegistry
  • agent-transport-*
Guide

Product composition

assembleProduct builds a product from a declarative profile. Capability packs, slash-command modules, presets and output styles are the parts the coding CLI uses.

  • assembleProduct
  • ICapabilityPack
  • createCodingPack
  • presets
Guide

Ship your own CLI product

Depend on the published CLI package and own the entry, identity, assets and packaging: a product-bound CLI host, desktop-host helpers for an Electron app, and native binary builds.

  • agent-cli/host
  • createProductCliHost
  • agent-cli/desktop-host
  • buildProductNativeBinary
Package README

Diagnostics, usage and evals

Check settings, provider, trust and plugins in one report; summarize local token use and cost without sending content; export content-free metrics; run evals as code.

  • doctor
  • usage
  • usage export
  • session analyze
  • eval
Guide

04 / The coding CLI

A full agent in your terminal.

The CLI is the maintained interface on the shared foundation. The same runtime powers the terminal UI, scripts, background sessions, the browser GUI, and other services.

01

Work interactively

Start a session, choose a permission mode, or switch to a screen-reader mode.

In a shell

  • robota
  • robota --permission-mode acceptEdits
  • robota --screen-reader
02

Script a single prompt

Print mode exits with a code your script can check. A goal run keeps working over several turns.

In a shell

  • robota -p "List the TypeScript files in src/"
  • robota -p "Summarize this repository" --output-format json
  • cat task.md | robota -p
  • robota --goal "make the failing tests pass"
03

Keep sessions running

Resume earlier work, run supervised sessions in the background, and share one daemon.

In a shell

  • robota -c
  • robota -r <id-or-name>
  • robota session start --background --name nightly
  • robota daemon start
  • robota --attach
04

Serve it to other surfaces

Open the browser GUI, accept HTTP clients with a bearer token, or act as an MCP server.

In a shell

  • robota --serve --open
  • PRODUCT_HTTP_TOKEN="$(openssl rand -hex 32)" robota --serve --http-port 8787
  • robota mcp serve
05

Reach your other sessions

Inside a session: message peers, hand off a conversation, link devices, pair a browser.

Inside a session

  • /peers
  • /peers send <session-id> <message>
  • /handoff <session-id>
  • /devices init
  • /remote-control enable
06

Check setup and usage

Diagnose configuration, summarize local usage, check for updates, and run evals.

In a shell

  • robota doctor
  • robota usage --period 30d
  • robota --check-update
  • robota eval <definition.mjs>
Read the CLI reference

05 / Permissions and safety

Decide what the agent may do.

Deny, ask and allow rules are checked first, then the permission mode. Set the mode per run or change it inside a session.

What each permission mode allows
ModeReadsFile editsShell commands
planYesRefusedRefused, except built-in read-only commands
defaultYesAsksAsks
acceptEditsYesYesAsks
autoYesYesDecided by a model classifier
bypassPermissionsYesYesYes
Rules in a settings file
{
  "permissions": {
    "allow": ["Bash(pnpm *)", "Bash(git status)"],
    "ask": ["Bash(git push *)"],
    "deny": ["Bash(rm -rf *)", "Write(.env)"]
  }
}

Rules win over modes

An ask rule still asks in bypassPermissions. Removing the root, home or working directory, and writing into .git or tool configuration, are never approved automatically.

Unattended means denied

In default mode, a request that needs approval is denied when nobody answers it, unless your host supplies a permission handler.

Sandboxed shell

Combine permission rules with the OS sandbox so an approved command still runs with limited file and network access.

Read the permissions and hooks guide

06 / Architecture

Libraries below, products on top.

Everything under packages/ is neutral and reusable; the CLI and apps are opinionated assemblies of those libraries. Each layer builds only on the layers below it.

    • agent-cli
    Product interface: the terminal coding assistant
    • agent-product
    • pack-coding
    • agent-command
    • agent-preset
    Product composition: profiles, capability packs, commands, presets
    • agent-ui-terminal
    • agent-transport-ws
    • agent-transport-http
    • agent-transport-mcp
    • agent-transport-webrtc
    Terminal UI and carriers over the shared wire protocol
    • agent-framework
    Assembly: InteractiveSession, createQuery, createAgentRuntime
    • agent-session
    • agent-executor
    • agent-tools
    • agent-tool-defaults
    • agent-mcp
    • agent-plugin
    Runtime: sessions, background tasks, tools, MCP client, plugins
    • agent-provider-*
    One provider package per vendor
    • agent-interface-*
    Type-only contracts shared across layers
    • agent-core
    Foundation: the conversation engine and its contracts
Read the architecture guide

Published packages

Every package is published on npm under @robota-sdk/ and shares one version. Start with the smallest set your task needs.

Browse the package index

07 / Install

Pick how you want to run it.

Published packages need Node.js 22.12 or later. The standalone binary needs nothing else installed.

Run without installing

Fetch and start the latest CLI with npx.

Run without installing
npx @robota-sdk/agent-cli

Install globally

Keep the CLI on your PATH with npm.

Install globally
npm install -g @robota-sdk/agent-cli
robota

Standalone binary

The installer picks the binary for your OS and CPU from the latest release and verifies its SHA-256 checksum. Binaries are unsigned, so macOS and Windows may warn.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/woojubb/robota/main/scripts/install.sh | bash
Windows PowerShell
irm https://raw.githubusercontent.com/woojubb/robota/main/scripts/install.ps1 | iex
See all releases

Embed the minimal SDK

The engine plus one provider package. Add agent-tools when the agent calls tools.

Embed the minimal SDK
npm install @robota-sdk/agent-core @robota-sdk/agent-provider-anthropic

08 / Know the fit

Use the source. Understand the terms.

A public codebase lets you inspect how the SDK and CLI are assembled. Start with the package and source that match your task.

Explore the showcase

Open source and commercial paths

The code is offered under AGPL-3.0, with a commercial licensing path for uses that need different terms. Review the license for your distribution or service.

Provider costs are separate

The SDK and CLI do not include model inference. A hosted provider can charge for usage; local inference has its own compute and operating costs.

First-party showcase

The coding CLI is the maintained example of these public components composed into a developer tool. Browse its source and the current showcase.

09 / Direction, not a guarantee

Our agents develop and advance our agents.

That is the long-term direction of the project. Today, the usable foundation is an SDK and coding CLI with explicit providers, tools, and host decisions. Reliable autonomous self-development must be demonstrated through actual outcomes as the system evolves.

10 / Before you start

Common questions.

Do I need the CLI to use the SDK?

No. Import the agent framework into your own Node.js host and inject a provider. The CLI is one complete interface built from public components.

Will a query run without configuring a model?

You need a provider endpoint and a suitable model. A local OpenAI-compatible example requires its server and model to be running; a hosted provider needs its own credentials and terms.

Does the SDK persist conversations automatically?

No. A simple createQuery call is not a durable session. Supply a session store when your host needs save and resume behavior.

What should I read before enabling tools?

Review project trust and permission modes. In default mode, an unattended request for approval is denied unless your host provides a permission handler.

Is the beta API stable?

Not yet. The packages are 3.0.0 beta releases and APIs may change before a stable release; the changelog records upgrade notes.

Start with one real task.

Choose the embeddable query or set up the coding CLI. Both paths begin with the provider and access decisions you control.