Quickstart
One command, a Chatfuel token, and the app running on your machine.
Node 22.19.0 or newer is the only prerequisite. There is nothing to install first and nothing to clone: the wizard installs the app's dependencies itself, and offers to install a coding agent if you do not have one.
Check your Node
node --versionAnything below 22.19.0 and the launcher stops before it loads anything, printing the version
you have, the installer link and the install command for your platform.
Run the wizard
npx @chatfuel/wizardIt has questions, so it needs a terminal. Piped, redirected or started by a CI job, it stops
before the first one and says so; --yes with the answers as flags
is the unattended form.
Answer its questions
How should the modules be installed? New app. The other answer copies the modules into a project you already have — that is the embed guide.
Which modules do you want? Fifteen exist. core comes with all of them and is not in the
picker; the fourteen it lists are livechat, contacts, deals, bookings, knowledge-base,
automations, coworker, flow-builder, ads-optimization, publishing, broadcasts, channels, auth
and admin — the same ids --modules takes. auth and admin are marked opt-in in the picker: both need
credentials the wizard cannot invent, so a --yes run leaves them out unless you name them. Pick
deals and contacts comes with it, named as it is added; if a pick recommends a module you did
not take, one more list follows — Recommended with your selection — add any?
Where should the module skills be installed? Into the project, or into your home directory for one copy across every app you scaffold. With both Claude Code and Codex CLI installed there is a question before this one: which of them finishes the setup.
Paste your Chatfuel token: Take one from
the token page. The wizard checks it against
the API before going any further — a rejected token is asked for again, three times — and writes
it to .env with mode 0600. It never reaches the browser.
Which Chatfuel workspace should the app open? Asked only when the account has more than one; an account with none gets its first workspace created here. Not which bot: the app lists your workspaces and their bots itself at runtime, so a bot you create next month is in the picker without a re-run.
What is this app called? and then the logo. The name defaults to the workspace's title and is
the browser tab, the top bar and the sign-in screen; the image — svg, png, jpg, webp,
gif or ico — becomes the tab icon and the mark beside it, copied into public/. Enter keeps
the shipped logo.svg, which is a real mark rather than a placeholder, so an unanswered run still
looks finished.
Which browser origins may call the proxy? Only the app's own origin is the recommended answer
and what a normal deployment needs. * is a local-development setting: a deployed proxy refuses
to start with it.
Where should the app be created? ./chatfuel-app unless you say otherwise. The directory has
to be empty or absent.
Then it copies the template, writes .env and .chatfuel/lock.json, installs the skills and
installs the dependencies. What follows is offers, each a yes or no: deploy to Vercel, put it on
GitHub, launch your coding agent in the new app, start the dev server in your browser. Decline
every one and the app is still complete.
With admin there is one more question, the panel's password; with auth, the Supabase ones.
Both are on their module pages: Admin and Accounts.
Check that it works
/ opens the first installed module, with the rest grouped in the sidebar beside it. With
exactly one module installed there is no sidebar at all.
In the top bar, a picker listing every workspace the token's account owns and the bots inside each. That list is read live from the API, so seeing it is proof the token reached Chatfuel through the proxy. No bot is named anywhere in the code.
Click into a second module and watch the address bar. It reads /<moduleId>, and a module with
more than one screen adds its own segment — /contacts/fields, /bookings/calendar?mode=week.
Reload that address: these are real paths, not fragments, and the dev server answers an unknown
one with index.html, so it comes back on the same screen.
A Chatfuel token can read and change every bot in an account, so it never reaches the browser.
Calls go to a same-origin /chatfuel/* path and the proxy attaches the token server-side.
Where to go next
What the wizard writes
The tree on disk, and why the design system and the API client are vendored.
Your first change
Add a view to a module, end to end, and check it in the browser.
Deploy
Vercel, your own Node server, or the Dockerfile that comes with it.
Other ways to run the wizard:
npx @chatfuel/wizard --embed # add the modules to a project you already have
npx @chatfuel/wizard doctor # what the wizard can see, before it asks anything
npx @chatfuel/wizard update # bring an app it made up to this wizard's content
npx @chatfuel/wizard auth # replace the stored Chatfuel token