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-appThis 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 devOpen 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 deploypnpm 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/appsEvery 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/repoRun 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_KEYPaste 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_TOKENPaste 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=....
RepoLens
Keeps the GitHub traffic, star, fork and download history GitHub forgets.
Cloudflare resources your app can use
Databases, files, queues, search by meaning, AI, a headless browser, images, analytics, email and secrets. Declare them in your app's everyapp.config.ts and the deploy makes them in your Cloudflare account.