ooda

Documentation

Everything you need to get started with ooda.

Also available as plain markdown for LLMs.

Getting started

ooda is a CLI tool that launches Claude Code on cloud dev environments powered by sprites.dev. One command gets you a full Linux VM with Claude Code running inside it.

Prerequisites

Quick start

Run the CLI and follow the prompts:

$ npx ooda-cli

The first time you run it, you'll be asked to log in to sprites.dev and authorize Claude Code. After that, 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 Claude 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 sprite 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 sprite.

claude.model

The Claude 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 sprite, 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 Claude Code
  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 Claude 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 Claude...",
  "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 Claude 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 permanent shareable URL with a single command. Just tell Claude to publish, or use the /publish command.

How it works

  1. Claude builds your project with the correct base path for the publish URL
  2. The build output is collected and uploaded to ooda.run
  3. Your site is available at ooda.run/p/your-project

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

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 ooda-cli

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

$ ooda-cli connect <name>

Connect directly to a running sprite by name. Opens a Claude Code session in your terminal. Useful for opening additional terminal sessions to the same project.

$ ooda-cli list

List all your sprites and their current status.