ElasticFunnels CLI

Ship funnels from the command line.

Meet ef, the ElasticFunnels CLI. Pull your pages, components, backend scripts, and assets into a folder, edit them in your own tools, and push them back. Built for Git, CI/CD, Claude Code, Codex, and humans who live in a terminal.

npm i -g @elasticfunnels/cli ยท Requires Node.js 18 or newer

Why a CLI

The editor is great. Some jobs still belong in a terminal.

Fifty pages to update, a review before it goes live, a repeatable deploy. Clicking through a GUI is the slow way to do all three.

Bulk edits crawl in a GUI

Changing one line across forty landing pages by hand is an afternoon. A loop over ef push is a coffee.

No real review before live

Edits in a builder go straight to the page. With files on disk you branch, open a PR, and merge to publish.

Agents cannot click

Claude Code and Codex do not use a mouse. They need a command that speaks JSON and returns a clean exit code.

Three commands to live

Install, bind, sync.

No dashboard tour. The folder you bind is interchangeable with the VS Code extension.

1

Install once

npm i -g @elasticfunnels/cli and run ef --help. One binary, two dependencies, Node 18 or newer.

2

Bind the folder

ef init stores your brand and API key in .ef/, then adds it to .gitignore so a key never lands in a commit.

3

Pull, edit, push

ef pull brings everything down. Edit in any tool. ef push sends it back, with a 409 guard if the server moved on.

What ef does

Your whole brand, as files you control.

One tool for pages, components, backend scripts, assets, products, and variables.

Full two-way sync

ef pull and ef push move pages, components, backend scripts, assets, and variables between the server and your folder.

Version control that fits

Your funnel lives in real files. Commit them, branch them, review them in a pull request, then push the merge.

Built for AI agents

Claude Code, Codex, and your own scripts drive ef directly. Every command speaks --json and exits with a stable code.

CI/CD pipelines

Set EF_API_KEY, run ef push --all in a GitHub Action, and deploy on merge. Check the plan first with --dry-run.

Products and assets

Create and update products, bulk-upload assets, and manage brand variables without leaving the terminal.

Folder-scoped and safe

Each folder binds to one brand. The key lives in .ef/auth (chmod 600) and never prints to stdout. No wrong-brand pushes.

For scripts and agents

Everything a machine needs, nothing it does not.

The CLI was designed for Claude Code, Codex, CI runners, and humans, roughly in that order of how picky they are about output.

--json on every command. Data on stdout, logs on stderr, so pipes stay clean.

Stable exit codes: 0 success, 3 auth, 4 conflict, 5 network, 7 not found. Scripts branch on results.

ef push --dry-run prints the plan without touching the server or your disk.

Optimistic concurrency: a stale push returns 409 and exits 4 instead of clobbering newer work.

ef diff shows local-vs-server drift before you push a thing.

CI/CD

Deploy your funnel on merge.

Keep your pages in Git. Wire one step into GitHub Actions and every merge to main publishes. Roll back by reverting a commit.

Authenticate with EF_API_KEY, no interactive login on the runner.

Preview branches with --draft, publish main with --direct.

Fast on big brands: pulls and pushes run with bounded concurrency.

Same files as the extension

One layout. Two tools. No lock-in.

The CLI writes the exact efmeta headers the VS Code extension does, into the same folder shape. Prefer the editor some days and the terminal others.

Identical elasticfunnels/ tree: pages, components, scripts, assets, variables.

A .ef file saved by either tool round-trips byte-for-byte.

Optional .ef syntax highlighting for Cursor, VS Code, and VSCodium via ef install-highlighter.

Icon

Start Building

Put your funnel under version control today.

Create a free brand, run ef init, and pull it into your terminal in under two minutes.