Open Form

Overview

One CLI to scaffold, run, check and ship your forms.

Open Form ships a single binary, open-form, in the @open-form-build/core package. Scaffold a workspace with npm create open-form@latest; every other command runs inside that workspace.

init sets up these scripts in package.json:

package.json
{
  "scripts": {
    "dev": "open-form dev",
    "build": "open-form build",
    "start": "open-form start",
    "typecheck": "tsc --noEmit",
    "sync:skills": "open-form sync:skills"
  }
}

So day to day you type pnpm dev, pnpm build and pnpm start, and pnpm exec open-form <command> for the rest. These docs use pnpm; with npm, yarn or bun, run the CLI as npx open-form, yarn open-form or bunx open-form.

Commands

CommandWhat it does
init [dir]Create a new workspace.
devStart the dev server with Studio.
buildBuild for production.
startServe the production build: forms, API, SQLite.
check [id]Load forms like the server does and print their schema, or the error.
create <id>Create a new form from the starter, optionally with a copy of a theme (--theme).
delete <id>Delete a form, its files and every response.
listList forms and their response counts.
responses export <formId>Export responses as CSV, Excel or JSON.
theme list|copy|check|add|fontList themes, copy one into a form, check contrast, add a starter to themes/, download a Google Fonts family.
comments [id]List review comments left in Studio.
sync:skillsUpdate the agent skills in .agents/skills/.

open-form --help lists them, open-form <command> --help shows a command's flags, and open-form -v prints the version.

Every command except init loads .env from the folder you run it in (your workspace) when there is one, with Node's process.loadEnvFile. Variables already set in the environment win.

Requirements

Node.js 22.13 or later. Storage uses the built-in node:sqlite, so there's no database to install.

On this page