EveryAppEveryApp

Create an app

Start from the starter app, tell your coding agent what you want, try it, and put it online.

Run these from your every-app folder.

Create it

pnpm everyapp create ../my-app
cd ../my-app

This copies the starter app, a simple todo list, into a my-app folder beside every-app, as a git repository of its own. It links to your every-app folder, so keep the two side by side. Each person sees only their own todos. What an app shares between people is up to the app (the Gateway only decides who can open it), so ask your agent for sharing, as the example below does.

Making many apps? pnpm everyapp create my-app keeps them inside every-app instead, in apps/my-app: git there neither tracks nor ignores them, and git pull leaves them alone.

The name becomes part of the app's address: my-app.apps.yourcompany.com. Use lowercase letters, numbers and dashes, starting with a letter and ending with a letter or number.

Tell your agent what you want

Open the my-app folder in your coding agent and describe the app. A few sentences is enough:

Turn this into a shared todo list for my household. I want separate lists
for groceries and chores, a due date on each todo, and a way to see who
added what.

You don't need to ask for a login page. The Gateway handles sign-in, and the app includes notes that explain EveryApp to your agent.

Try it on your computer

pnpm dev

Open http://my-app.localhost:8787. If that port is taken, the terminal stops and prints the pnpm everyapp dev --port <n> command to run instead, with the next free port. You're signed in as the dev user, dev@everyapp.localhost, and changes show up as your agent makes them. Press Ctrl+C in the terminal to stop it; the ELIFECYCLE Command failed with exit code 130 line pnpm prints then is pnpm's, not a failure.

Put it online

pnpm run deploy

pnpm run deploy runs everyapp deploy, the same as pnpm everyapp deploy. If it stops for something only you can do, the lines it printed say what; the ELIFECYCLE Command failed with exit code 2 line after them is pnpm's. Troubleshooting

When it's done, you'll see:

Live          https://my-app.apps.yourcompany.com
Who can open  Private to you, owners and admins · change it at https://apps.yourcompany.com/admin/apps

Every route of the app needs someone the Gateway signed in. If you later list a route under public in everyapp.config.ts (a webhook a provider calls, say), the deploy adds a Public line naming it.

Open your Gateway and the app is in All apps.

No Gateway yet? The deploy offers to install one first. Type y and press Enter.

Install an app from GitHub

Install an app someone published on GitHub with its address:

pnpm everyapp install https://github.com/owner/repo

Run it again later to update.

To publish yours, run pnpm everyapp release in its folder and attach the file to a GitHub release of its repository.

Apps that use AI

Apps that use AI call OpenAI, OpenRouter or Workers AI through your Gateway, with a key you add once. A key is a long code you create in your own account at OpenAI (platform.openai.com/api-keys) or OpenRouter (openrouter.ai/settings/keys). That account bills you for what your apps use, separately from Cloudflare; both sell prepaid credits. Workers AI runs in your Cloudflare account instead and goes on your Cloudflare bill after a free daily allowance.

Your coding agent can set this up with you step by step: ask it to follow setup/openai.md or setup/openrouter.md in the everyapp skill (in your app, .claude/skills/everyapp/setup/).

Add the key to the Gateway once, and every app that uses AI can use it:

pnpm everyapp secret set OPENAI_API_KEY

Paste the key when asked. For OpenRouter, use OPENROUTER_API_KEY. For Workers AI, use WORKERS_AI_API_TOKEN.

In an app's folder, pnpm everyapp secret list shows which keys it needs, which are set, and where to get each one. pnpm everyapp configure there asks for everything the app needs at once. Until every key it requires is set, the app shows Needs setup on your Gateway and won't open.

An app you build says which provider it uses in its everyapp.config.ts:

providers: ["openai"],

Use "openrouter" or "workers-ai" for the other two. Your agent takes it from there: the app calls the provider through the Gateway with the SDK's createGatewayFetch(), the Gateway adds the key, and the app never holds one. A provider the manifest doesn't list is refused. AI providers

Keys only one app uses

Some apps need a key of their own, like a GITHUB_TOKEN. List it in the app's everyapp.config.ts:

secrets: ["GITHUB_TOKEN"],

That makes it required: the app shows Needs setup until it's set. If the app works without it, write { name: "GITHUB_TOKEN", optional: true } instead.

Deploy the app, then run this in its folder:

pnpm everyapp secret set GITHUB_TOKEN

Paste the key at Value for GITHUB_TOKEN. It isn't shown as you type. Only that app gets the key, and later deploys keep it. To use it with pnpm dev, put it in the app's .dev.vars file as GITHUB_TOKEN=....

On this page