Repository navigation
Add privacy and support pages for the FTW iPhone app #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,101 @@ | ||
| <!DOCTYPE html> | ||
| <html lang="en"> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <meta name="viewport" content="width=device-width,initial-scale=1"> | ||
| <title>Privacy | FTW app</title> | ||
| <meta name="description" content="What the FTW app for iPhone does with your data: it stays on your box and your phone, the relay carries only encrypted traffic, and there is no analytics or tracking."> | ||
| <meta name="robots" content="index,follow"> | ||
| <meta name="theme-color" content="#0a0a0a"> | ||
| <link rel="canonical" href="https://ftw.energy/privacy"> | ||
| <link rel="alternate" hreflang="en" href="https://ftw.energy/privacy"> | ||
| <link rel="alternate" hreflang="sv" href="https://ftw.energy/sv/privacy"> | ||
| <link rel="icon" href="/favicon.svg" type="image/svg+xml"> | ||
| <link rel="stylesheet" href="/sourceful.css?v=app-pages-1"> | ||
| </head> | ||
| <body> | ||
| <a class="skip-link" href="#content">Skip to content</a> | ||
|
|
||
| <header class="site-header"> | ||
| <div class="wrap nav"> | ||
| <a class="brand" href="/" aria-label="ftw home"> | ||
| <img src="/favicon.svg" alt="ftw logo" width="34" height="34"> | ||
| <span class="brand-name">ftw</span> | ||
| </a> | ||
| <nav class="nav-links" aria-label="Primary navigation"> | ||
| <a href="/support">App support</a> | ||
| <a href="/privacy" aria-current="page">Privacy</a> | ||
| <a href="/sv/privacy" hreflang="sv" lang="sv">Svenska</a> | ||
| <a class="nav-cta" href="https://github.com/srcfl/ftw-app">GitHub <span aria-hidden="true">↗</span></a> | ||
| </nav> | ||
| <details class="mobile-nav"> | ||
| <summary>Menu</summary> | ||
| <nav aria-label="Mobile navigation"> | ||
| <a href="/">FTW</a> | ||
| <a href="/support">App support</a> | ||
| <a href="/privacy" aria-current="page">Privacy</a> | ||
| <a href="/sv/privacy" hreflang="sv" lang="sv">Svenska</a> | ||
| </nav> | ||
| </details> | ||
| </div> | ||
| </header> | ||
|
|
||
| <main id="content" class="doc"> | ||
| <div class="wrap"> | ||
| <p class="section-kicker">FTW app for iPhone</p> | ||
| <h1>Privacy</h1> | ||
| <p class="updated">Updated 12 October 2026</p> | ||
|
|
||
| <p class="doc-lede">Your energy data stays on your FTW box and your phone. The relay that connects them carries only encrypted traffic it cannot read. The app has no analytics and no tracking.</p> | ||
|
|
||
| <p>This page covers the FTW app for iPhone and the relay it uses. Sourceful Labs AB, Sweden, makes the app and runs the relay. The FTW box is software you run yourself; its <a href="https://github.com/srcfl/ftw">documentation</a> describes what it sends.</p> | ||
|
|
||
| <h2>What stays on your box</h2> | ||
| <p>Your box reads your meters, solar, battery and charger, keeps the history and makes the plan. That record stays on the box. The app asks the box for what it shows and sends the box what you choose, such as a charging goal.</p> | ||
|
|
||
| <h2>What the app keeps on your phone</h2> | ||
| <ul> | ||
| <li>The keys that let this phone talk to your box, in the iPhone keychain. They stay on this phone and are not backed up to iCloud.</li> | ||
| <li>The last readings, prices and car level, so the app can show your home before it reconnects. Each one keeps the time it was read.</li> | ||
| <li>A copy of the prices and car level that the widgets read. Widgets read nothing else.</li> | ||
| </ul> | ||
| <p>Delete the app to remove what it keeps. The box owner can also withdraw a phone's access from the box.</p> | ||
|
|
||
| <h2>Passkeys</h2> | ||
| <p>When you pair, the app creates a passkey for app.ftw.energy in your password manager, for example iCloud Keychain. The passkey guards a copy of the key this phone uses with your box. Your password manager keeps the passkey; Sourceful never receives it. The app sends no copy of your keys to Sourceful.</p> | ||
|
|
||
| <h2>The relay</h2> | ||
| <p>The app reaches your box through Sourceful's relay at relay.ftw.energy, which runs in Frankfurt, Germany, on Amazon Web Services. The app and the box encrypt everything end to end (Noise protocol) before it leaves them. The relay has no key and cannot read what it carries.</p> | ||
| <p>To carry a connection the relay sees:</p> | ||
| <ul> | ||
| <li>your phone's IP address, while it is connected;</li> | ||
| <li>a meeting code that changes every hour and that only your box and phone can work out;</li> | ||
| <li>when you connect, for how long, and the size and timing of encrypted messages.</li> | ||
| </ul> | ||
| <p>The relay keeps none of the traffic. Its access log holds counts, not addresses or codes. If the relay fails to pass on a connection, its error log may record the address and code; that log replaces itself and stays small. We use what the relay sees only to carry your connection, which you ask for when you use the app.</p> | ||
|
|
||
| <h2>No analytics, no tracking, no ads</h2> | ||
| <p>The app contains no analytics, no advertising and no code from third parties. It does not track you across apps or websites. It talks to the relay and nothing else.</p> | ||
| <p>The camera reads the pairing code from your box and nothing else.</p> | ||
|
|
||
| <h2>Apple</h2> | ||
| <p>Apple runs the App Store and TestFlight under <a href="https://www.apple.com/legal/privacy/">its own privacy policy</a>. If you share analytics with app developers in your iPhone settings, Apple sends us crash reports and usage numbers that do not name you. If you test through TestFlight, Apple shares your name, email address, crash reports and any feedback you send with us.</p> | ||
|
|
||
| <h2>FTW Cloud, later</h2> | ||
| <p>FTW Cloud will be a separate service that you can choose to turn on. It will hold a readable copy of the data you allow, so that it can, for example, send notifications. It is not part of the app today. It will stay off unless you turn it on, and we will update this page before it ships.</p> | ||
|
|
||
| <h2>Your rights</h2> | ||
| <p>Sourceful Labs AB (reg. no. 559382-0458), Kalmar, Sweden, is responsible for the data the relay sees. Under the GDPR you can ask what we hold about you, have it corrected or deleted, and object to how we use it. In practice the relay holds nothing that names you. To ask, email <a href="mailto:support@sourceful.energy">support@sourceful.energy</a> or use <a href="https://www.sourceful.energy/contact">Sourceful's contact page</a>. You can also complain to the Swedish Authority for Privacy Protection (<a href="https://www.imy.se/en/">IMY</a>).</p> | ||
| <p>The app is not aimed at children.</p> | ||
|
|
||
| <h2>Changes</h2> | ||
| <p>When the app changes what it does with data, we change this page first and update the date at the top. The history of this page is public on <a href="https://github.com/srcfl/ftw-web/commits/main/privacy.html">GitHub</a>.</p> | ||
| </div> | ||
| </main> | ||
|
|
||
| <footer> | ||
| <div class="wrap footer-bottom"><span>© Sourceful Labs AB and FTW contributors</span><a href="https://www.sourceful.energy/">sourceful.energy <span aria-hidden="true">↗</span></a></div> | ||
| </footer> | ||
| <script src="/navigation.js?v=1" defer></script> | ||
| </body> | ||
| </html> | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,93 @@ | ||
| <!DOCTYPE html> | ||
| <html lang="en"> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <meta name="viewport" content="width=device-width,initial-scale=1"> | ||
| <title>App support | FTW app</title> | ||
| <meta name="description" content="Help with the FTW app for iPhone: what you need, how to pair with your FTW box, what the app's messages mean and how to reach Sourceful."> | ||
| <meta name="robots" content="index,follow"> | ||
| <meta name="theme-color" content="#0a0a0a"> | ||
| <link rel="canonical" href="https://ftw.energy/support"> | ||
| <link rel="alternate" hreflang="en" href="https://ftw.energy/support"> | ||
| <link rel="alternate" hreflang="sv" href="https://ftw.energy/sv/support"> | ||
| <link rel="icon" href="/favicon.svg" type="image/svg+xml"> | ||
| <link rel="stylesheet" href="/sourceful.css?v=app-pages-1"> | ||
| </head> | ||
| <body> | ||
| <a class="skip-link" href="#content">Skip to content</a> | ||
|
|
||
| <header class="site-header"> | ||
| <div class="wrap nav"> | ||
| <a class="brand" href="/" aria-label="ftw home"> | ||
| <img src="/favicon.svg" alt="ftw logo" width="34" height="34"> | ||
| <span class="brand-name">ftw</span> | ||
| </a> | ||
| <nav class="nav-links" aria-label="Primary navigation"> | ||
| <a href="/support" aria-current="page">App support</a> | ||
| <a href="/privacy">Privacy</a> | ||
| <a href="/sv/support" hreflang="sv" lang="sv">Svenska</a> | ||
| <a class="nav-cta" href="https://github.com/srcfl/ftw-app">GitHub <span aria-hidden="true">↗</span></a> | ||
| </nav> | ||
| <details class="mobile-nav"> | ||
| <summary>Menu</summary> | ||
| <nav aria-label="Mobile navigation"> | ||
| <a href="/">FTW</a> | ||
| <a href="/support" aria-current="page">App support</a> | ||
| <a href="/privacy">Privacy</a> | ||
| <a href="/sv/support" hreflang="sv" lang="sv">Svenska</a> | ||
| </nav> | ||
| </details> | ||
| </div> | ||
| </header> | ||
|
|
||
| <main id="content" class="doc"> | ||
| <div class="wrap"> | ||
| <p class="section-kicker">FTW app for iPhone</p> | ||
| <h1>App support</h1> | ||
|
|
||
| <p class="doc-lede">The FTW app shows the FTW box in your home and lets you steer the car's charging. Here is how to set it up, what its messages mean and how to reach us.</p> | ||
|
|
||
| <h2>What you need</h2> | ||
| <ul> | ||
| <li>An iPhone with iOS 26 or later.</li> | ||
| <li>An FTW box at home with the FTW app turned on in its settings. <a href="https://github.com/srcfl/ftw/blob/master/docs/native-beta.md">Install and update FTW</a> explains how to set up a box.</li> | ||
| </ul> | ||
| <p>No box yet? On the app's first screen, tap <strong>Try the live demo</strong>. It runs a simulated home inside the app and saves nothing.</p> | ||
|
|
||
| <h2>Pair your phone</h2> | ||
| <ol> | ||
| <li>Open your box's local FTW dashboard while you are on your home network.</li> | ||
| <li>Go to <strong>Settings → FTW app</strong>.</li> | ||
| <li>Choose <strong>Show pairing code</strong>, then scan the QR code with the FTW app or the iPhone camera.</li> | ||
| <li>Confirm with Face ID or Touch ID if your phone asks. This creates a passkey for app.ftw.energy.</li> | ||
| </ol> | ||
|
|
||
| <h2>What the app's messages mean</h2> | ||
| <dl class="doc-terms"> | ||
| <div><dt>Can't reach your box</dt><dd>The box is off or offline, or your phone has no connection. The app keeps trying by itself; there is no reconnect button. Until then it shows the last readings with their age.</dd></div> | ||
| <div><dt>FTW is busy</dt><dd>Up to four phones or browsers can show one home at a time. Close FTW on another device, then try again.</dd></div> | ||
| <div><dt>A reading with a time or age next to it</dt><dd>Every reading shows how old it is. Grey, dated values come from your phone while the app reconnects.</dd></div> | ||
| <div><dt>Open FTW to see prices</dt><dd>The price widgets show what the app last read from your box. Open the app while it can reach the box, and the widgets catch up.</dd></div> | ||
| <div><dt>Access ended</dt><dd>The box's owner has withdrawn this phone's access. Ask them for a new pairing code.</dd></div> | ||
| </dl> | ||
|
|
||
| <h2>Get help</h2> | ||
| <ul> | ||
| <li>Report a bug or ask for a feature in <a href="https://github.com/srcfl/ftw-app/issues">GitHub issues for the app</a>. Say which iPhone and iOS version you use.</li> | ||
| <li>Ask other users in the <a href="https://discord.gg/25xcBzQaux">FTW Discord</a>.</li> | ||
| <li>Email Sourceful at <a href="mailto:support@sourceful.energy">support@sourceful.energy</a>.</li> | ||
| </ul> | ||
| <p>Help from the community and maintainers is best effort, as the <a href="https://github.com/srcfl/ftw/blob/master/SUPPORT.md">FTW support policy</a> describes. Never post a pairing code, a picture of the pairing QR or a key in a public channel.</p> | ||
|
|
||
| <h2>Who makes the app</h2> | ||
| <p>Sourceful Labs AB (reg. no. 559382-0458), Kalmar, Sweden. <a href="https://www.sourceful.energy/contact">Contact Sourceful</a>.</p> | ||
| <p>Read how the app handles your data in <a href="/privacy">Privacy</a>.</p> | ||
| </div> | ||
| </main> | ||
|
|
||
| <footer> | ||
| <div class="wrap footer-bottom"><span>© Sourceful Labs AB and FTW contributors</span><a href="https://www.sourceful.energy/">sourceful.energy <span aria-hidden="true">↗</span></a></div> | ||
| </footer> | ||
| <script src="/navigation.js?v=1" defer></script> | ||
| </body> | ||
| </html> |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When a paired user deletes the app expecting this instruction to remove all retained data, the connection keys listed immediately above may remain in the iOS keychain and become accessible again after reinstalling the same signed app;
ThisDeviceOnlyprevents migration to another device, not persistence across app deletion. Apple DTS confirms that preserving keychain items after uninstall is expected behavior. The Swedish page repeats the same promise, so both policies should instead explain how users can revoke/delete the credentials or the app must explicitly make persisted keys unusable after uninstall.Useful? React with 👍 / 👎.