Documentation

Everything you need to get started with ooda.

Also available as plain markdown for LLMs.

Getting started

ooda lets your team publish prototypes and tools to the web safely, from any agent — with optional cloud dev environments when you need them. One command signs you in and gets you building or publishing, no local setup required.

Prerequisites

  • Node.js 20+

Quick start

Install it globally and run ooda:

$ npm install -g @oodarun/cli
$ ooda

The CLI tells you when a newer version is available, so a global install won't go stale. You can also run it without installing via npx @oodarun/cli@latest.

The first time you run it, you'll be asked to sign in with your email. If you're part of an organization, you'll be connected to your team's shared environment automatically. Select a project or create a new one — ooda handles the rest.

ooda.json

ooda.json is the project configuration file. Place it in your project root to declare tools, set the AI model, and configure other options.

Example

{
  "name": "My Cool App",
  "description": "A React dashboard for analytics",
  "tools": {
    "agentation": {}
  },
  "claude": {
    "model": "claude-sonnet-4-6"
  }
}

Fields

name

Human-readable project name (e.g. "My Cool App"). Shown in the dashboard instead of the project slug when set.

description

Short description of what the project is. Shown in the dashboard alongside the name.

tools

An object where each key is a tool name and the value is its configuration (usually an empty object {}). Tools are installed and configured when you run /install-tools or automatically when starting a project.

claude.model

The AI model to use (defaults to claude-sonnet-4-6).

Tools

ooda has a tool system that lets you add MCP servers and other integrations to your project. Tools are declared in ooda.json and installed automatically.

How it works

When you declare a tool in ooda.json and run /install-tools (or start a project, which runs it automatically), ooda:

  1. Looks up the tool in its built-in registry
  2. Checks that your project meets the tool's requirements (framework, dependencies)
  3. Installs the npm package
  4. Registers the MCP server with the AI agent
  5. Follows the tool's setup instructions (adding components, modifying config files)
  6. Runs health checks to verify everything works

Built-in tools

agentation

Visual element selection for React apps. Adds a floating toolbar to your dev environment that lets you click on any element to select it, then ask the AI to modify it. Requires a React project.

Built by Benji Taylor, Dennis Jin & Alex Vanderzon

More tools coming soon.

Declaring tools

Add a tool to your project by including it in the tools object:

{
  "tools": {
    "agentation": {}
  }
}

Building a tool

Third-party npm packages can self-describe as ooda tools by shipping an ooda-tool.json file in their package root. When a user declares your package name in their ooda.json, the installer discovers and uses your recipe automatically.

ooda-tool.json spec

The file follows the same shape as the built-in ToolRecipe type. All fields except description are optional:

{
  "description": "What your tool does",
  "requirements": {
    "frameworks": ["react", "next"],
    "dependencies": ["some-package"]
  },
  "install": {
    "ecosystem": "npm",
    "package": "your-package-name",
    "version": "^1.0.0"
  },
  "mcp": {
    "transport": "stdio",
    "command": "node",
    "args": ["./node_modules/your-package/mcp-server.js"]
  },
  "setupInstructions": "Markdown instructions for the AI agent...",
  "healthCheck": {
    "command": "ls node_modules/your-package",
    "description": "Verify the package is installed"
  }
}

Fields

description (required)

Short description of what the tool does.

requirements

Framework and dependency constraints. If the project doesn't meet these, the installer warns the user and skips the tool.

install

Package installation details. The ecosystem is npm, gem, or pip.

mcp

MCP server configuration. Use stdio transport for local servers or http for remote ones.

setupInstructions

Markdown instructions that the AI agent follows after installing. Use this for code changes like adding imports, inserting components, or modifying config files.

healthCheck

A shell command and description to verify the tool is working after setup.

How discovery works

When a tool name isn't in ooda's built-in registry, the installer checks node_modules/<package>/ooda-tool.json. If the file exists and is valid, it's used as the recipe. The name field is optional — it defaults to the package name.

Publishing

Publish your project to a gated, shareable URL with a single command. Just tell the AI to publish, or use the /publish command.

How it works

  1. The AI builds your project with the correct base path for the publish URL
  2. The build output is collected and uploaded
  3. Your site is available at a {slug}-p.ooda.run URL, gated by your access policy

Every publish creates a new version. Previous versions are kept and accessible. Publishing is free with no limits on the number of projects.

Access control

Every site is gated. By default a site requires a team login; you can make any site public or password-protected, per site or as an org-wide default. Site passwords are encrypted at rest. Manage access from the dashboard or with ooda sites access.

Supported frameworks

Any framework that produces static output works — Vite, Astro, Next.js (static export), and more. The publish script automatically detects your build output directory (dist, build, out, etc.).

CLI commands

$ npx @oodarun/cli

Launch the interactive project manager. Lists your existing projects and lets you create new ones, deploy local folders, or connect to running projects.

$ ooda connect <name>

Connect directly to a running project by name. Opens an AI coding session in your terminal. Useful for opening additional sessions to the same project.

$ ooda list

List all your projects and their current status.

$ ooda publish [path]

Publish a built static site to a shareable {slug}-p.ooda.run URL. Non-interactive; --json supported.

$ ooda sites [list|access|password|delete]

List and manage your published sites — set access (public / password / login), reveal a password, or unpublish.

$ ooda secrets [set|list|rm|attach|detach]

Manage env vars & secrets for projects and published sites. --env values reach a site's page as window.__OODA_ENV__; true secrets never reach the browser. No reveal in the CLI — an admin reveals in the dashboard.

$ ooda login  ·  ooda whoami  ·  ooda logout

Sign in with an email code (--email/--code for agents/CI), check the current session, or sign out.

Agent skill

Teach your coding agent (Claude Code, Cursor, etc.) how to use ooda — publishing static sites, managing sites, and authenticating — by installing the ooda agent skill. The agent can then publish and manage sites on its own, non-interactively.

# Global (all projects)
$ npx skills add toy-studio/ooda-skills -g

# Or per-project
$ npx skills add toy-studio/ooda-skills

Uses the skills CLI. Source and details: github.com/toy-studio/ooda-skills.