How to deploy a web app from your terminal

You built something, with Claude Code, Cursor, or your own hands, and now you want it on the internet without wiring up servers, databases, SSL, and auth. Here is the one-command path.

What you skip

The usual gap between "works on my machine" and "deployed" is a weekend of provisioning: a server or PaaS config, a managed database, an auth provider, HTTPS certificates, environment secrets, and a CI pipeline. Benmore collapses all of that into the framework: every deployed app comes with authentication, a database, an auto-generated REST API, real-time updates, file storage, email, and cron, hosted on its own subdomain with SSL.

Step 1: Install the CLI

Homebrew is the primary macOS path:

brew install Benmore-Studio/benmore/benmore-cli

On Linux or CI, use the checksum-verifying installer:

curl -fsSL https://benmore.ai/install-cli.sh | sh

Step 2: Authenticate and deploy

benmore login                    # browser flow
# Headless alternative:
# benmore login --email "$BENMORE_EMAIL" --password "$BENMORE_PASSWORD"

cd ~/Benmore
benmore new crm                 # creates ./crm; output prints the resolved directory
cd ./crm
benmore deploy
benmore open .                  # prints the provisioned development URL

Open the printed HTTPS URL. A reachable live page is the success criterion. benmore new crm creates exactly ./crm; it never silently relocates your project.

Step 3: Iterate against the live URL

Every file you push hot-reloads in about a second, so the live dev URL is your development environment. This is where AI coding agents shine: run benmore bootstrap to install the Claude Code hooks, then Claude Code edits ship through those hooks and the agent verifies the result in a real headless browser. Codex, Cursor, and other agents run benmore push <file> explicitly.

Deploy an existing frontend

Keep its Node build in the original project. Copy only the generated browser output into your Benmore app's static/ directory:

# Vite: set base: "/", build, copy dist/ contents
cp -R /path/to/vite/dist/. ~/Benmore/crm/static/

# Next.js: set output: "export"; use unoptimized images when required
cp -R /path/to/next/out/. ~/Benmore/crm/static/

# Create React App
cp -R /path/to/cra/build/. ~/Benmore/crm/static/

Never copy node_modules, package manifests, lockfiles, or framework source into the Benmore app. There is no Benmore localhost development mode. Root-relative output such as /assets/app.js resolves from static/assets/app.js. Client-side navigation keeps the existing SPA fallback, while a missing .js, .css, or image still returns a real 404.

Step 4: Go to production

benmore promote myapp   # ship dev to prod
benmore publish myapp   # remove the testing banner
benmore domain myapp yourdomain.com

Dev and prod are separate instances with separate databases and secrets, promote moves code forward with an automatic pre-migration backup, and custom domains get SSL automatically.

Set up the CLI

Frequently asked questions

Does this work with Claude Code or other AI coding agents?
Yes, it is designed for them. The CLI installs an agent skill and Claude Code hooks; after installation, those hooks ship Claude Code edits and the agent verifies its work in a real browser. Codex, Cursor, and other agents push each edited file explicitly.
What do I get with the hosting?
Auth, a per-app database, an auto-generated typed REST API, real-time updates, audit logs, file uploads, email, cron jobs, SSL, and per-app git history with one-command rollback.
Can I roll back a bad deploy?
Yes. Every push is auto-committed to per-app git on the server; benmore git revert restores any prior state in seconds.
What does it cost?
Plans are priced per app, not per prompt or per seat, with a free tier to start. See pricing.