CLI Reference

Complete command reference for the tulip binary.

tulip init

tulip init [path]

Create a new tulip project. Runs an interactive prompt asking for:

  • Site name
  • Description
  • Whether to enable Tailwind CSS

Defaults to the current directory if no path is given. Creates tulip.toml, layouts/, pages/, static/, and content/ directories.

tulip build

tulip build [path] [--target <dir>]

Build the site to static HTML. Processes all .tulip pages, .md content, and copies static/ files. Runs plugins, Tailwind, and minification if enabled.

OptionDefaultDescription
path.Project root directory
--target <dir>distOverride the output directory

Example:

tulip build ./my-site --target public

tulip serve

tulip serve [path] [--port <port>]

Build the site and start a development server. Watches for file changes and triggers live reload via WebSocket.

OptionDefaultDescription
path.Project root directory
--port <port>3000Override the dev server port

Example:

tulip serve ./my-site --port 8080

tulip plugin new

tulip plugin new <name>

Scaffold a new plugin in plugins/<name>/ with the standard structure:

  • plugin.toml — metadata and default config
  • index.ts — entry point with TulipPlugin interface
  • types.d.ts — TypeScript type definitions
  • README.md — plugin documentation

tulip plugin add

tulip plugin add <url>[@version]

Install a plugin from a GitHub repository. Downloads the tarball, reads the plugin name from plugin.toml, installs to plugins/{name}/, and adds an entry with source to tulip.toml.

Examples:

tulip plugin add https://github.com/user/tulip-plugin-seo@v0.1.0
tulip plugin add https://github.com/user/tulip-plugin-seo

tulip plugin remove

tulip plugin remove <name>

Remove a plugin directory from plugins/ and its [[plugins]] entry from tulip.toml.

tulip plugin list

tulip plugin list

Show all installed plugins with their name, version, and description.

tulip install

tulip install [path]

Install all missing plugins declared in tulip.toml. A plugin is missing when it has a source field but doesn't exist in plugins/. Use this after cloning a project or in CI.