Log in

Documentation

Everything you need to get started with ooda.

Also available as plain markdown for LLMs.

Getting started

ooda lets your team publish prototypes, tools, and sites to the web safely, from any agent. One command signs you in; ooda publish ships your built site to a private, shareable URL.

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 join your team's org automatically. From a built site, run ooda publish to ship it.

ooda.json

ooda.json is the site configuration file. ooda publish reads the site's metadata from it, and writes the site's addresses back into it.

Example

{
  "name": "My Cool App",
  "description": "A React dashboard for analytics",
  "tags": ["dashboard", "react"],
  "color": "#0f766e"
}

Fields

name

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

description

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

tags

Keyword tags for the published site, used for filtering and search.

color

Brand colour ("#rrggbb"). The dashboard tints the site's card with it.

secrets

A manifest of the env vars and secrets the site needs, so ooda secrets check can prompt for the missing ones.

slug, siteName, urls

Written back by ooda publish — the resolved {slug}.ooda.run address and, when your org has short addresses, the {siteName}.{org}.ooda.run one. Keep them in the file so re-publishes stay on the same URL.

Publishing

Publish a built static site to a gated, shareable URL with a single command: ooda publish.

How it works

  1. Build your site (e.g. npm run build)
  2. ooda publish detects the build output directory and uploads it
  3. Your site is available at a {slug}.ooda.run URL, gated by your access policy

Every publish creates a new version. Previous versions are kept and accessible.

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

$ ooda publish [path]

Publish a built static site to a shareable {slug}.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]

Manage env vars & secrets for your 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 — with the ooda agent skill. The agent can then publish and manage sites on its own, non-interactively. No install is needed — the skill is hosted at ooda.run/skill.md. Tell the agent:

Fetch https://ooda.run/skill.md and follow its instructions.

To install it into the agent's skills directory instead (so it loads automatically in future sessions), use the skills CLI:

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

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

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