EveryAppEveryApp

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

  1. Node.js. Download the LTS version (22.18 or newer) from nodejs.org and run the installer.

  2. A terminal. On a Mac, open Terminal. On Windows, open Windows Terminal.

  3. pnpm. Run npm install -g pnpm.

  4. Git. On a Mac, run git --version and 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
  5. EveryApp. Run:

    npm install -g everyapp

Set it up

Start setup

everyapp setup

Log 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 off turns 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 Sending

Open 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.

On this page