Control Fork guide & generator What this is

Fork

Run your own deployment.

A fork is this codebase with your identity stamped into it: your domain, your server, your app name, your signing keys. Nothing here phones home — there is no licence check and no shared infrastructure. Everything below is what you must supply, and the generator at the bottom writes the configuration for all four repositories from one form.

The generator does not invent secrets you already own. It creates fresh random secrets for the ones that are yours alone (admin key, session secret, FRP token, database passwords), and it cannot create the ones issued by third parties — OAuth apps, signing keys, LLM API keys. Those are listed as manual steps with exact instructions.

Requirements

What you need before you start.

1. A domain, and DNS you control

Five hostnames, all pointing at your server. Nothing needs a proxy in front of it; if you use Cloudflare, leave these DNS-only, because the upload host moves ~300 MB artifacts and a proxy will cap the body size.

HostServes
example.comthe server and admin panel
stream.example.comremote-desktop streaming
upload.dev.example.comdev-release API — build uploads
dl.dev.example.comdev-release artifacts — client downloads
probe.example.comfingerprint probe (optional)

2. A server

3. Build tooling, on the machine you build clients from

4. Third-party accounts — only for the features you want

WhatNeeded forIf you skip it
GitHub OAuth app"Sign in with GitHub"Email/password sign-in still works
Google OAuth app"Sign in with Google"Email/password sign-in still works
An LLM provider keyChatNo model is offered at all — /config withholds every model that has no credential
Android keystoreShipping the Android appCannot install or update the app
Code-signing certificateWindows SmartScreen reputationInstalls, with a warning

OAuth apps are per-deployment by definition — the callback URL contains your host, so no app can be shared with another product. Register https://example.com/auth/github/callback and https://example.com/auth/google/callback.

Generator

Describe your fork.

Every identity the four client apps ship with is derived from these fields, so they are required and validated before anything is generated — a value that is not a legal application id, hostname or port is refused here rather than discovered at build time. Values update live below so you can see exactly what will be written before anything is generated.

Shown to users. Any capitalisation and spaces.
The bare host. The four sub-hosts are derived from it.
Globally unique, permanent. Cannot change after publishing.
A literal IP is required — frpc on Android cannot resolve names.
1024–65535. Isolation is (host, port, token): a shared host with a different port is a separate stack. 94.16.104.37:7022 is core's live pair and is refused.

Where we reply about your fork. Not published anywhere.

Your repositories

Create seven empty repositories you own and paste their URLs. We push your finished, branded fork straight into them, so it is yours from the first commit. You grant us write access for a few days while we deliver and fix anything you need, then you revoke it and keep everything. Leave blank if you have not created them yet - you can send them later.

Project package

An operator can generate a branded source ZIP from this specification — no repositories or access tokens are needed for that. Tick the client platforms to include, choose whether the clients run without a window, and optionally upload a square PNG logo (1024×1024 or larger); icons for every platform are generated from it in your browser.

At least one. Each selected platform is branded and packaged in the export.

Derived identity

These are runtime identifiers, written into the built apps, installers and services from the fields above. They are renamed for you. Source code namespaces (for example am.checkout.corecontrol) are deliberately not rewritten — they are a shared internal identity so patches and tools keep working across a core and every fork of it.

Next

Review, then send it to us.

Your secrets were generated in this browser and are never sent to us - download them below and keep them; you will need them when you deploy. Sending the request shares only your identity and repository URLs.

What happens next

  1. We generate a branded source ZIP from your specification — server and the platforms you ticked, with icons, setup docs and pinned source revisions.
  2. You download the ZIP and keep it; it contains no secrets and no signing keys.
  3. If you also want it in git, create five empty repositories you own and grant us temporary write access; we push, then you revoke it.
  4. The fork, its history and its signing keys are yours.

Your DNS records

TypeNameValue

Your generated secrets

Written into the server's .env. They are masked by default; reveal them only on a private screen or download them now, then store them in a password manager or vault. They are not recoverable from anywhere else.



    

What is still yours to do