What's new in Flagship 0.3
Flagship 0.3 is our biggest release so far. Most of it you will never see: it rebuilds how your server keeps its keys, installs its software and runs your apps. Some of it you will see every day: the apps speak your language, setting up a server is harder to fool, and your server can run AI and new kinds of apps without anyone else's cloud.
Set up a server you can be sure is yours
- Your phone checks it is talking to your new server. The first time your server asks to be approved, your phone keeps that server's own key and checks everything against it from then on. If the machine has a screen, it shows a six-digit code, and your phone shows the same code above Approve. If they don't match, don't approve. When Flagship Studio hosts the server on your computer, Studio checks the code for you.
- A server that was not built from your recipe is refused. Your recipe carries a one-time secret that only your own server can prove it holds.
- Make the installer stick with your Android phone. Plug a USB stick into your phone with an OTG adapter and the app writes the installer itself, no computer needed. The stick starts from a stock Debian image that anyone can rebuild and check byte for byte.
- Servers install from one signed package. A new server no longer downloads code from a repository while it installs. It checks the signature of one package from Flagship's maintainers, then installs it with no further downloads.
Your own page, and messages from the people who visit it
- A public page at voi.ci/your-username. A photo, a name, a short bio, your links and your posts. You make it in the new Messages tab. Any device of your account can write posts; only an admin device publishes them. Before you publish for the first time, the app reminds you that the page shares your username with your apps and servers, so people can connect them.
- Messages. Turn on Accept messages and people with a Flagship account can write to you from your page. They sign in on voi.ci with their Flagship app. You see each of them under a name made for your page, like "Visitor 4F3A", never their username, and you can rename them.
- Only you and the sender can read them. Messages are end-to-end encrypted, with post-quantum encryption, to your devices and the sender's. Flagship sees that someone wrote to your page, when and how much, not what they said.
- Block and report. A blocked visitor isn't told, and their messages stop reaching you. A report sends that one message to Flagship. To slow spam without asking for a phone number, a new account can start only a few conversations a day, and the app asks Apple or Google once to confirm it runs on a real device. More in the FAQ.
Reporting abuse, and what happens next
- Anyone can report a voi.ci link or page, or a Flagship app by its web address, on the abuse page. No account is needed.
- The owner hears first. When a report holds up, the account's admins get a notice in the app: what was reported, what to change or take down, and by when. An account can be suspended only after that deadline has passed. Child sexual abuse material, active phishing and malware are the exceptions: for those we can act at once.
- Your data stays on your server. A suspended account's servers stop serving and its voi.ci page comes down, but the data stays on the owner's own server. Backups and rescue over home Wi-Fi keep working, and the app says how to appeal.
Run more kinds of apps
- Each app gets its own database server. On new servers an app's database runs on its own, with its own memory, disk and connection limits, so one busy app can't slow the others down.
- Apps made of several parts. An app can be up to eight parts, such as a web server and a worker, that start in order and count as one app: one approval, one list of sites it may reach, one database.
- WebAssembly apps. An app can be a small WebAssembly (WASI) program. Each request runs in a fresh copy with hard limits on time and memory.
- Choose how each app updates. Manual is the default: you approve every update. Staged holds a checked update for a week before it installs. Automatic installs it at once. Both automatic choices only take updates from the same publisher that ask for no new permissions; anything else waits for you.
- Apps can ask to talk to another person's apps. When an app on someone else's server wants to send messages to one of yours, you see a request and choose Allow, Always allow or Deny. You can take an Always allow back at any time.
- Apps can use a web browser on your server, but only on the sites you approved when you installed them, with a separate browser for each app. Your home network and Flagship's own services are always out of reach.
Run AI on your own server
- Local AI. Open Local AI from your server's page and download a model. Your apps and your builds can then use it, and it runs only on your server: your prompts and data are not sent anywhere. It runs on your processor, or on a graphics card once that card has been qualified. Downloading the model is the only time your server contacts the model's host.
- Train a small model on your own data. You can train one of the small models on an app's sample data, on your server. This is early: small models only.
- Agree before AI spends anything. Before an AI repair uses your own API key or your Flagship Inference credits, you see an estimate and who pays, and you agree. The amount you agreed to is a hard stop.
- AI still never learns who you are. What your server sends to an outside AI model is now also stripped of names, mail addresses, home folders, times, time zones, languages and network addresses.
Use a graphics card, with your permission
- Your server lists its graphics cards on its page, with the app that holds each one.
- An app that needs a graphics card waits for you. You get a notification and approve it from your admin device, or withdraw the approval later. Until then the app runs without the card if it can, or tells you why it can't.
- Cards are qualified before use. Flagship gives a graphics card to an app only once that model of card has passed our hardware tests. Until then, apps that need one say plainly that they can't run yet. The software supports NVIDIA, AMD and Intel cards.
Keep control when Flagship can't be reached
- Your phone finds your server on your home network when flagshipserver.com or our relay can't be reached. It looks for your server on the same Wi-Fi and checks the server's own key.
- Basic control without us: see your server's status and its apps, start, stop or restart an app, restart or shut down the server, and make a backup and save it to your phone.
- Rescue your data. Rescue my data, in Settings, makes a backup of your server over your home Wi-Fi and saves it to your phone, and picks up where it stopped if the connection drops. A backup protected with a passcode can be restored into another server, even on a new account.
- Every action is still signed by your phone and checked by your server.
This works only on the same network as your server, and only while your server is running. A server that restarts still needs flagshipserver.com to unlock its disk. Creating an account, adding a device and recovering an account also still need flagshipserver.com.
Choose how long your server runs without you
- A time limit for each server. Its page says "Stays online until" a date "if no admin opens Flagship", or "No time limit". An admin chooses 7 days, 30 days or no time limit. No time limit is the default. Opening Flagship on an admin device moves the date forward.
- When the time runs out, the server's apps stop until an admin opens Flagship. You can also have the server lock itself: it restarts with its disk locked, and starts again only when an admin approves on their phone.
- Our relay enforces it, so a lost or stolen server can't keep serving your apps on its own. You can still reach the server itself to bring it back.
Phones and names
- Android 10 and later. The Android app now runs on Android 10 and up; it needed Android 13 before. Google no longer sends security updates to Android 10, 11 or 12, so on those phones the app shows a short note suggesting an update. Everything still works. iPhone and iPad still need iOS 18, and Wear OS still needs Wear OS 4.
- Names are 3 to 30 characters. Account names and voi.ci link names use letters, numbers and hyphens, from 3 to 30 characters. An app's name in its web address is at most 30 characters. A name that looks too much like one already taken is refused. A name someone gives up is held for 30 days before anyone can take it.
Use Flagship in your language
The apps, the web app, this website, Flagship Studio and the pages your server shows visitors are now in English, Spanish, French, German, Brazilian Portuguese, Japanese and Simplified Chinese. Notifications arrive in your phone's language. The translations are machine-made drafts that native speakers have not reviewed yet. If a sentence reads wrong, tell us at support@flagshipserver.com.
A calmer app
- Home, Activity and Settings were redesigned on iPhone, Android and the web app: shorter screens, one "Add / Restore a server" button, and red buttons only for what can't be undone.
- Approve a server's start from your watch with your phone locked, on Apple Watch and Wear OS.
- Signing out asks for Face ID, your fingerprint or your device PIN first whenever it would erase keys.
- Account recovery now checks your passkey too. The apps ask you once to update your recovery so it is protected by your passkey as well as your passphrase.
Safer updates
- A server update proves itself or steps back. The new release installs beside the old one and gets three starts to prove it is healthy. If it fails, your server goes back to the release it ran before, by itself. Updates and rollbacks never touch your apps, data, keys or settings.
- Updates reach a small group of servers first, and more only once those are healthy.
- Share update results. An optional switch on your server's page, off by default, sends Flagship one receipt per update saying whether it worked. It names no app and holds no content.
- A newer foundation for new servers. New servers run apps with Podman and keep their keys in small, separate programs written in Rust. Servers you already have keep their current setup.
A new relay
- Our relay was rewritten in Rust. The relay passes your server's encrypted traffic between visitors and your server. The new one needs much less memory, and it is built so we can add more relays, in more places, later. Like the old one, it can't read what your apps send.
Coming from 0.2
- Update the app. The 0.2 apps keep working, but some of their screens no longer refresh on their own. Update Flagship from the App Store or Google Play, and Flagship Studio from its download page; an older Studio tells you when it is out of date.
- Update your servers. A server still on 0.2 needs an update to keep working with Flagship 0.3, and its page in the app says so.
For the security-minded
We assumed parts of the server could be attacked, and made each part hold as little power as it needs. The details are on the security page.
- The server program no longer runs as root. The few jobs that need root go through a small broker that accepts a fixed list of requests and refuses everything else.
- Keys live apart from the server program. The server's identity, TLS and Let's Encrypt keys sit in a separate key service. The server program asks it to sign; it never holds the keys.
- Sensitive actions need your admin key. Updates, rank changes, journal reads and graphics-card approvals are refused unless your admin device signed them.
- Review findings fixed. This release was reviewed for security across the whole product, and its newest parts (voi.ci and Messages, certificates, the relay, updates and rescue over home Wi-Fi) were reviewed again before release. What the reviews found was fixed before release, and so was every finding of our own adversarial test suite, which now runs on every release. A few hardening items are partly done and continue in the next update.
- Quantum-safe groundwork. Servers and phones hold ML-DSA-65 keys beside their Ed25519 keys, a hybrid channel (ML-KEM-768 with X25519) is built, and iPhone and Android have an opt-in Quantum-safe protection setting. All of it is pending external review.
- Check the Node.js your server runs. Part of the server runs on Node.js, and it is the official build from nodejs.org, never one we rebuilt. Each server's page has a Runtime card that compares what it runs with the exact build its release locks. The runtime page shows the signed list and how to check it yourself against Node's own signatures.
- What has not changed. TLS still ends on your own server, so we can't read what your apps send. Our relay sees connection metadata: which server, when, and how much. An AI model never learns who or where you are.