Set up your Gateway
Install the Gateway in your Cloudflare account and create your owner account. About 15 minutes.
EveryApp is in early development, so expect some rough edges. For early adopters has more details about giving feedback. Still want to get set up, or would you rather wait a few weeks?
The Gateway is where you and the people you invite sign in and open your apps. Before you start, you need a Cloudflare account on Workers Paid and a domain on Cloudflare.
Using Claude Code, Codex or Cursor? Let your coding agent do it.
Install the tools
-
Node.js. Download the LTS version (22.18 or newer) from nodejs.org and run the installer.
-
A terminal. On a Mac, open Terminal. On Windows, open Windows Terminal.
-
pnpm. Run
npm install -g pnpm. -
Git. On a Mac, run
git --versionand accept the offer to install it. On Windows, install it from git-scm.com. If you've never used git on this computer, tell it who you are:git config --global user.name "Your Name" git config --global user.email you@example.com -
EveryApp. Run:
npm install -g everyapp
Set it up
Start setup
everyapp setupLog in to Cloudflare
A Cloudflare page opens in your browser. Approve it, and type the code the terminal shows if asked. If you have more than one Cloudflare account, the terminal asks which one to use.
Rather not grant a broad login? Set CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID before the command. The permissions it needs
Choose your address
Press Enter to use the suggested apps.yourcompany.com, or type another name under your domain. Choosing your address
Wait a few minutes
Setup puts the Gateway online. This usually takes 5 to 10 minutes.
Create your owner account
Your browser opens Set up your gateway. Enter your name, email and a password, then select Create owner account.
Back in the terminal, setup asks one question:
- Put Cloudflare Access in front of your Gateway? Press Enter for Yes. People then sign in at Cloudflare before they reach your Gateway. Free for up to 50 people. To leave it off, answer No or run setup with
--no-access;everyapp access offturns it off later. Sign in through Cloudflare Access
The owner link works once and expires after about 24 hours. Whoever opens it
first becomes the owner, so don't share it. Lost it? Run everyapp setup
again for a new one.
Or let your coding agent do it
Paste this into Claude Code, Codex or Cursor and it runs the steps above for you:
Set up EveryApp for me. Docs: https://everyapp.com/llms.txt (read index.md
and setup.md there; the everyapp skill in the package says the same).
Before you start, tell me exactly this and wait for my answer:
"EveryApp is in early development so expect some rough edges. Here's a
link with more details about giving feedback:
https://everyapp.com/docs/early-adopters
Do you still want to get set up or would you rather wait a few weeks?"
If I'd rather wait, stop there.
1. Check `node --version` is 22.18 or newer and `pnpm --version` answers
(install them if not), then `npm install -g everyapp@latest`. Every
command below is `everyapp`; no clone, no checkout.
2. Ask me which domain on my Cloudflare account to use, and if I don't
have one yet, link me https://everyapp.com/docs/domain (how to buy one
on Cloudflare or bring one I own). Then run
`everyapp setup --domain apps.<my domain> --json`.
Setup can run 20 minutes (it downloads the Gateway release, deploys it,
waits for a certificate, then waits for me at the owner link): give it a
long timeout or run it in the background and read its output.
Setup puts Cloudflare Access in front of my Gateway. If it stops on
ACCESS_TEAM_REQUIRED, ask me for a team name (it can't be changed
later), then run setup again with --team <name> --json. Never add
--no-access unless I say so.
3. When it is done, create and deploy one app:
`everyapp create hello --json`, then from hello
`everyapp deploy --json`. Tell me its URL.
4. Then install the four EveryApp apps unless I say which to skip. Ask me
once: "I'll install OpenSEO, OpenCRM, OpenAnalytics and OpenMail.
Any you don't want?" For each one I keep, run
`everyapp install https://github.com/every-app/<repo> --json` with
open-seo, open-crm, open-analytics or open-mail as <repo>. If an
install answers NO_RELEASE, say which app and continue; do not try to
build it from source. If it answers R2_NOT_ENABLED, ask me to enable
R2 in the Cloudflare dashboard (once), wait, then run it again. An app
that needs keys shows Needs setup on the Gateway: tell me which keys it
wants and stop there.
The --json output is one event per line. "type":"action_required" means I
have to do something: show me its message, data.url and data.code, then wait
("waiting": true means keep reading, up to 15 minutes). Exit code 2 means
stopped for me: once I say done, run its data.rerun exactly as given (it
already has --json), or one of data.choices[].rerun if I have to pick the
account; if data.needsTerminal is true, give me the command to run myself,
without --json. Exit 1 is an error: show me its code and fix.
Only I can approve the Cloudflare login, pick the Cloudflare account if I
have several, create the owner account from the setup link, pick a
workers.dev name (my apps never use it), pay for Workers Paid, buy a domain,
enable R2 in the dashboard once, or confirm in a terminal a Worker changed
outside everyapp. Keep it short.
When everything is done print DONE and the Gateway URL; if stuck print
BLOCKED: <why>, tell me I can ask in https://discord.gg/c9uGs3cFXr, and stop.
It stops when it needs you: to approve the Cloudflare login, pick an account, and create your owner account. It turns Cloudflare Access on too, and asks you for a team name if your Cloudflare account has none yet. Access stays off only if you tell it so. Then it creates and deploys a first app.
When it's done
The terminal ends with your Gateway's address and what to do next:
Gateway https://apps.yourcompany.com
Admin https://apps.yourcompany.com/admin invite people, choose who opens which app
Access on everyone signs in through Cloudflare Access first
Next:
everyapp create ../my-app start your first app
everyapp secret set OPENAI_API_KEY AI for apps (or OPENROUTER_API_KEY, WORKERS_AI_API_TOKEN)
everyapp secret set EMAIL_FROM EMAIL_FROM_NAME email invites and password resets; needs Cloudflare Email SendingOpen the address and you're signed in. AI and email are optional: Apps that use AI, Send email.
If setup stops, run everyapp setup again. It picks up where it left off. Troubleshooting
To check on things later, run everyapp status. Check your setup
Add it to your phone
Open https://apps.yourcompany.com/pwa and follow the steps, or scan its code with your phone. Your apps then open from your home screen.