Appflare

Install Appflare

Install from your browser at appflare.dev/deploy, or with Cloudflare's Deploy button. Both end in the same setup wizard.

Install from your browser

The recommended way. Open appflare.dev/deploy, sign in to Cloudflare, choose the account and Appflare's address, and the page deploys Appflare there. You need a Cloudflare login and nothing else: no API token, no Git account, nothing on your computer. Install from your browser goes through it step by step.

Or use Cloudflare's Deploy button. It goes through a copy of Appflare in your GitHub or GitLab account, which you remove afterwards. Deploy with the button walks through it.

Cloudflare's Deploy button

Every way deploys the same signed release into your own account and ends in the same setup wizard.

From your browserCloudflare's Deploy buttonThe command line
HowOpen appflare.dev/deploySelect the button: Deploy with the buttonRun npx create-appflare; see Advanced below
You needA Cloudflare loginA GitHub or GitLab accountNode.js 22
Appflare connects withCloudflare sign-in, set up by the pageAn API token you create during setupAn API token you create during setup
Who touches your accountAppflare's hosted installer, with a short-lived token, during the installCloudflare's Workers BuildsWrangler, with your login
Leaves behindNothing once setup is doneA copy of Appflare in your Git account and a Workers Builds connection, which you remove afterwardsNothing

Which way to choose

  • From your browser is the shortest, and the one to pick unless something below applies. You choose Appflare's address before it is deployed, so you sign in and add passkeys there from the first visit. The price is trust: for a few minutes Appflare's hosted installer holds a token that can do everything Appflare can. What the installer sees and keeps explains it.
  • Cloudflare's Deploy button suits you if no Appflare service should touch your account and you have a GitHub or GitLab account. You clean up a repository copy afterwards. Appflare starts on workers.dev; setup's Where should Appflare live? step can move it to your domain, and you then sign in again there.
  • The command line is for the rare case where neither works.

Whichever you pick, you can change how Appflare connects to Cloudflare later; see Appflare's Cloudflare connection.

Advanced: install from the command line

Install with npx create-appflare

Use it if your Cloudflare account does not allow signing in to apps. Cloudflare lets account admins block public OAuth apps, and then the install from your browser cannot sign in.

Requirements

  • Node.js 22 or newer on the machine you install from.
  • A Cloudflare account. The free Workers plan works. Some apps in the catalog need more, and say so on their catalog page.
  • A workers.dev subdomain on the account. If the account has none, wrangler offers to register one during the install. That needs a terminal; otherwise register it in the Cloudflare dashboard first.
  • Permission to create an API token for the account. An account-owned token needs the Super Administrator role. Other members can use a user token.

Run the installer

npx create-appflare

From a checkout

To run the installer from this repository's source instead, you need Node.js 22 and pnpm:

git clone https://github.com/appflare/appflare
cd appflare
pnpm install
pnpm --filter "create-appflare..." build
node packages/cli/bin/appflare.js

node packages/cli/bin/appflare.js, run from the checkout, takes the same options as npx create-appflare.

What the installer does

  1. Checks the Node.js version and your Cloudflare login. If wrangler is not logged in, it opens wrangler login in your browser. If your login reaches several accounts, it asks which one. Set CLOUDFLARE_ACCOUNT_ID to skip the question.
  2. Refuses to continue if a Worker named appflare, a D1 database named appflare, or a KV namespace titled appflare-kv already exists.
  3. Downloads the latest manager release from github.com/appflare/appflare/releases. It checks the release's Ed25519 signature against the public keys built into the installer, and the sha256 of every file. Nothing is deployed unless all of that passes.
  4. Deploys the manager with wrangler deploy from a temporary directory. Wrangler creates the D1 database and KV namespace.
  5. Sets one secret on the manager to a random value: BETTER_AUTH_SECRET, which signs sessions.
  6. Waits for the manager to answer, then prints its address, https://appflare.<your-subdomain>.workers.dev/. Open it to finish setup. The address carries no secret.

The temporary directory is removed at the end. Nothing is written to your current directory, and no git repository is created.

Options

FlagMeaning
--version <x.y.z>Install that manager release instead of the latest.
--name <name>Worker name. Defaults to appflare. The D1 database and KV namespace follow it.
-y, --yesNever ask. Fail where a question would be needed: several accounts, no workers.dev subdomain, or a Workflow name that another Worker owns.
--artifact-dir <dir>Install from a downloaded release in <dir> instead of fetching it. The signature is still required.
--no-telemetrySend no anonymous usage data, and install the manager with its anonymous report turned off.
-v, --versionPrint the installer's version. --version followed by a value picks the release instead.
-h, --helpPrint the options.

If GitHub rate-limits the download, set GITHUB_TOKEN. The installer sends it only to api.github.com.

If the install fails after the deploy, the installer prints the wrangler commands that delete what it created, so you can run it again.

The installer only installs. Once the manager runs, you manage it from its own settings pages. The installer prints each address with your manager's address in front:

ToGo to
See the running version and update AppflareSettings > Updates > Appflare version (/settings/updates#appflare). See Update Appflare.
Return to an earlier manager versionSettings > Updates > Recent versions (/settings/updates#versions). See Roll back.
Enable, update, or disable sandbox buildsSettings > Building apps > Build in your account (/settings/building#sandbox). See Sandbox builds.
Remove Appflare and its dataRemove Appflare in Settings > Your account > Danger zone (/settings/account#danger-zone). See Remove Appflare.

The setup wizard

Open the manager's address. Until setup is finished, every page of the manager leads to the setup wizard: one page with three steps (four when the account has an active domain), each shown in place of the one before.

After an install from your browser, the page that installed Appflare does step 1 for you and opens Appflare at step 2. Anyone who opens that Appflare in another browser first sees Finish where you installed Appflare, with Connect with an API token instead as the way to do step 1 here.

1. Connect Cloudflare

The manager needs a Cloudflare API token to create and update apps in your account. Cloudflare does not let a Worker or wrangler create one, so this step happens in the dashboard:

  1. Select Create token. The dashboard opens an account-owned token form named Appflare, with the permissions below already selected; you do not pick any. Choose your account, scroll down, choose Review token, then Create token, and copy it. If you are not a Super Administrator, use Create a user token instead. What the token can do on the setup page lists each permission and the feature that uses it.
  2. Paste the token.
  3. Select Continue. In one step the manager checks that the token is active, can manage Workers, and belongs to the account the manager runs in (it looks for the version of itself that is serving the page in the token's account), then saves it and shows the account it connected to. It warns about permissions it cannot confirm, and a refused token shows why in place.

The token is the only thing that guards setup. Anyone who can create a token for your account already controls it, so there is no separate setup password. A token for another account is refused with a message that names the account it belongs to. The page allows 20 tries per network address in 10 minutes.

2. Create the owner account

Enter a name, an email, and a password of at least 12 characters. This first user is the owner: an admin who is also the only one who can change roles, delete users, or hand ownership over. You are signed in right away.

When the account has an active domain, a step comes next that asks Where should Appflare live?: keep the workers.dev address, or move Appflare to a name in one of your domains. Later skips it. See Give Appflare its own address.

Only the browser that saved the token can do this step, for 30 minutes. Anyone else who opens the manager in the meantime sees only step 1, and once the owner exists they see the sign-in page. If you close the browser before this step, open the manager again after 30 minutes and paste the token again. After an install from your browser, the browser the deploy page brought here holds the step instead; if its link ran out, see Create the owner account.

3. Check your account

The manager reads what your Cloudflare account has that apps rely on. A bar shows how many things are ready, out of those your plan can have. Each row names one thing, says why apps need it, and shows its state:

  • Ready: the account has it.
  • Needs action: it is off, and an app you installed (or are installing) needs it.
  • Not set up: it is off, and none of your apps needs it yet. Turn it on when an app you want needs it.
  • Paid plan only: only Workers Paid includes it.
  • Could not check: Appflare could not read it. Select Check again.

Your account settings with a full readiness bar and account checks

A row that is off has one button: Turn on in Cloudflare opens the right page of the Cloudflare dashboard, Edit token in Cloudflare opens the token's page, Choose plan lets you say which Workers plan the account is on when Appflare cannot read it, and Set up opens Settings > Building apps > Build in your account. Details shows what Appflare found, when it checked, what went wrong if it could not tell, and how many catalog apps use it.

RowWhat it is for
Workers planWorkers Paid lifts the free plan's limits and runs containers; some apps need it.
workers.dev addressEvery app answers on its own workers.dev address unless you give it a domain.
R2 storageWhere apps keep files and uploads. Turning it on is free, but Cloudflare asks for a payment method first.
A domainA domain on Cloudflare, for custom domains and apps that receive email.
Email RoutingDelivers a domain's email to an app. Installing such an app turns it on.
Analytics EngineStores the events apps count and chart, such as page views and link clicks. It is off until you open its page in the dashboard once; apps that write to it cannot be installed until then.
Zero TrustNeeded before Cloudflare Access can put a sign-in page in front of the manager or an app.
Sandbox buildsBuilds apps that have no ready-made release inside your account. Paid plan only: it needs Workers Paid, R2 turned on, and the Containers permission. The first app that needs a build turns it on; Set up lets you turn it on sooner.
Token permissionsWhether Appflare's token has the permissions it needs. Details names the optional ones it does not have.

On a new account most rows read Not set up; that is expected. Only Needs action rows stand in the way of something you have installed.

Select Check again after changing something in the dashboard. Select Finish to go to the manager. The same list stays in Settings > Your account > What this account can run.

The token template requests:

PermissionAccessUsed for
Workers ScriptsEditUploading, deploying, and deleting app Workers and the manager itself, with their secrets, cron triggers, routes, and static assets.
Workers KV StorageEditKV namespaces for apps that bind KV.
D1EditD1 databases, app migrations, and Time Travel restores.
Workers R2 StorageEditR2 buckets for apps that bind R2.
QueuesEditQueues for apps that use them.
VectorizeEditVectorize indexes for apps that bind them.
Account SettingsReadFinding the account the token belongs to.
Access: Apps and PoliciesEditOnly for Cloudflare Access: creating, updating, and deleting the Access applications and policies that guard the manager (Protect with Cloudflare Access) or an installed app.
Access: Organizations, Identity Providers, and GroupsReadOnly for Cloudflare Access: reading the Zero Trust organization's team domain and login methods.
Access: Service TokensEditOnly for protecting installed apps with Cloudflare Access: each protected app gets its own service token, used only by Appflare's health checks of that app. Appflare creates it, renews it before it expires, and deletes it when the app stops being protected or is uninstalled.
ZoneReadOnly for custom domains, external domains and apps that receive email: listing your domains. External domains need it on all zones of the account, to tell whether a hostname is in one of your own domains.
DNSEditOnly for custom domains: seeing, and with your consent replacing, the DNS records at a new domain's hostname; for external domains: adding the gateway's DNS record; and for apps that receive email: reading a domain's MX records before turning Email Routing on.
Workers RoutesEditOnly for custom domains: attaching an app's Worker to a hostname; and for external domains: routing the gateway domain's requests to the gateway Worker.
SSL and CertificatesEditOnly for external domains: adding and removing Cloudflare for SaaS custom hostnames on the gateway domain, and setting its fallback origin.
Zone SettingsEditOnly for apps that receive email: turning Email Routing on for a domain, and off again on uninstall.
Email Routing RulesEditOnly for apps that receive email: creating and deleting the routing rules and setting the catch-all.
Email Routing AddressesReadOnly for apps that receive email: showing which destination addresses are verified.
BillingReadOnly for detecting the account's Workers plan: Appflare lists the account's subscriptions and reads their plan names, never invoices or payment details.
HyperdriveEditOnly for apps with a database elsewhere: creating a Hyperdrive configuration from the connection string you enter, replacing it when you change the string, and deleting it on uninstall.
PipelinesEditOnly for apps that stream events: creating a Pipelines stream, sink and pipeline for each stream the app uses, and deleting them on uninstall.
Workers R2 Data CatalogEditOnly for apps that stream events, and added by hand (the template link cannot select it): removing a bucket's R2 Data Catalog when an uninstall deletes the bucket. Without it the bucket is still deleted.
Account AnalyticsReadOnly for usage and spend protection: reading how much each app uses of Workers, storage and the other services it runs on, to show its usage, send the usage alerts you set, and pause an app that runs away.

The permissions marked "Only for" are optional: you can remove them from the form if you will not use that feature, and everything else works without them.

Where the token lives

The manager stores the token as an encrypted secret, CF_API_TOKEN, on its own Worker, through the Cloudflare API. Saving it redeploys the manager, which takes a few seconds. The token is never shown again, never written to the database, and never included in logs. See Security model.

To replace the token later, open Settings > Your account > Cloudflare connection, select Change how Appflare connects, and choose Use a new API token. The new token must be for the same account. Revoke the old one in the Cloudflare dashboard afterwards. The same choice can switch Appflare to Cloudflare sign-in, which grants every permission Appflare uses except Billing, all at once. See Appflare's Cloudflare connection.

Next

Browse the catalog and install an app.

On this page