Skip to content

Commit c2f21d9

Browse files
committed
Add privacy policy page and use local logo
- Add static privacy.html with site theme for App Store compliance - Add local softwarity.svg to avoid external dependency - Replace all external logo references with local ../softwarity.svg - Add privacy policy link in footer with i18n (9 locales) - Fix outdated CLI options in docs (--clear-session → --kill-session)
1 parent 2a484fd commit c2f21d9

14 files changed

Lines changed: 2061 additions & 5 deletions

public/public/privacy.html

Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<title>Privacy Policy - AIPilot</title>
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<meta name="description" content="AIPilot Privacy Policy - How we handle your data">
8+
<link rel="icon" type="image/svg+xml" href="softwarity.svg">
9+
<link rel="canonical" href="https://aipilot.softwarity.io/privacy.html">
10+
<link rel="preconnect" href="https://fonts.googleapis.com">
11+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12+
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
13+
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
14+
<style>
15+
:root {
16+
--bg-gradient: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
17+
--bg-primary: #161b22;
18+
--bg-secondary: #21262d;
19+
--text-primary: #e6edf3;
20+
--text-secondary: #c9d1d9;
21+
--text-muted: #8b949e;
22+
--accent-blue: #58a6ff;
23+
--accent-green: #238636;
24+
--accent-purple: #a371f7;
25+
--accent-red: #f85149;
26+
--accent-orange: #d97757;
27+
--border-color: #30363d;
28+
}
29+
* { box-sizing: border-box; margin: 0; padding: 0; }
30+
body {
31+
font-family: Roboto, -apple-system, BlinkMacSystemFont, sans-serif;
32+
background: var(--bg-gradient);
33+
background-attachment: fixed;
34+
color: var(--text-primary);
35+
line-height: 1.7;
36+
min-height: 100vh;
37+
display: flex;
38+
justify-content: center;
39+
padding: 24px;
40+
}
41+
.card-container {
42+
max-width: 860px;
43+
width: 100%;
44+
background: var(--bg-primary);
45+
border: 1px solid var(--border-color);
46+
border-radius: 12px;
47+
padding: 48px;
48+
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
49+
margin: 0 auto;
50+
align-self: flex-start;
51+
}
52+
/* Header */
53+
.header {
54+
display: flex;
55+
align-items: center;
56+
justify-content: space-between;
57+
margin-bottom: 40px;
58+
padding-bottom: 24px;
59+
border-bottom: 1px solid var(--border-color);
60+
}
61+
.header-left {
62+
display: flex;
63+
align-items: center;
64+
gap: 16px;
65+
}
66+
.logo { height: 48px; }
67+
.header-title {
68+
font-size: 1.4rem;
69+
font-weight: 500;
70+
color: var(--text-primary);
71+
}
72+
.header-subtitle {
73+
font-size: 0.85rem;
74+
color: var(--text-muted);
75+
}
76+
.back-btn {
77+
display: inline-flex;
78+
align-items: center;
79+
gap: 8px;
80+
color: #fff;
81+
text-decoration: none;
82+
font-size: 14px;
83+
font-weight: 500;
84+
padding: 10px 20px;
85+
border: none;
86+
border-radius: 8px;
87+
background: var(--accent-orange);
88+
transition: background 0.2s;
89+
white-space: nowrap;
90+
}
91+
.back-btn:hover {
92+
background: #c46648;
93+
text-decoration: none;
94+
}
95+
.back-btn .material-icons { font-size: 18px; }
96+
/* Content */
97+
.updated {
98+
color: var(--text-muted);
99+
font-size: 14px;
100+
margin-bottom: 32px;
101+
}
102+
h1 {
103+
font-size: 2rem;
104+
font-weight: 500;
105+
margin-bottom: 8px;
106+
color: var(--accent-orange);
107+
}
108+
h2 {
109+
font-size: 1.2rem;
110+
font-weight: 500;
111+
color: var(--text-primary);
112+
margin: 32px 0 14px;
113+
padding-bottom: 8px;
114+
border-bottom: 1px solid var(--border-color);
115+
display: flex;
116+
align-items: center;
117+
gap: 10px;
118+
}
119+
h2 .material-icons {
120+
font-size: 20px;
121+
color: var(--accent-orange);
122+
}
123+
h3 {
124+
font-size: 1rem;
125+
font-weight: 500;
126+
color: var(--text-secondary);
127+
margin: 20px 0 10px;
128+
}
129+
p, li {
130+
color: var(--text-secondary);
131+
font-size: 15px;
132+
font-weight: 300;
133+
}
134+
p { margin-bottom: 12px; }
135+
ul {
136+
padding-left: 24px;
137+
margin-bottom: 12px;
138+
}
139+
li { margin-bottom: 6px; }
140+
li::marker { color: var(--accent-orange); }
141+
strong { color: var(--text-primary); font-weight: 400; }
142+
a { color: var(--accent-blue); text-decoration: none; }
143+
a:hover { text-decoration: underline; }
144+
/* Table */
145+
table {
146+
width: 100%;
147+
border-collapse: collapse;
148+
margin: 16px 0 24px;
149+
font-size: 14px;
150+
border-radius: 8px;
151+
overflow: hidden;
152+
}
153+
th, td {
154+
padding: 10px 14px;
155+
text-align: left;
156+
border: 1px solid var(--border-color);
157+
}
158+
th {
159+
background: var(--bg-secondary);
160+
color: var(--text-primary);
161+
font-weight: 500;
162+
font-size: 13px;
163+
text-transform: uppercase;
164+
letter-spacing: 0.5px;
165+
}
166+
td { color: var(--text-secondary); font-weight: 300; }
167+
.check { color: var(--accent-green); font-weight: 400; }
168+
.cross { color: var(--accent-red); }
169+
/* Footer */
170+
.footer {
171+
margin-top: 40px;
172+
padding-top: 20px;
173+
border-top: 1px solid var(--border-color);
174+
color: var(--text-muted);
175+
font-size: 13px;
176+
display: flex;
177+
align-items: center;
178+
justify-content: space-between;
179+
}
180+
.footer a { color: var(--text-muted); }
181+
.footer a:hover { color: var(--accent-orange); }
182+
.footer-logo { height: 20px; opacity: 0.5; }
183+
/* Responsive */
184+
@media (max-width: 700px) {
185+
body { padding: 12px; }
186+
.card-container { padding: 24px 20px; }
187+
h1 { font-size: 1.5rem; }
188+
.header { flex-direction: column; gap: 16px; align-items: flex-start; }
189+
table { font-size: 13px; }
190+
th, td { padding: 8px 10px; }
191+
.footer { flex-direction: column; gap: 8px; text-align: center; }
192+
}
193+
</style>
194+
</head>
195+
<body>
196+
<div class="card-container">
197+
<div class="header">
198+
<div class="header-left">
199+
<img src="softwarity.svg" alt="AIPilot" class="logo">
200+
<div>
201+
<div class="header-title">AIPilot</div>
202+
<div class="header-subtitle">Privacy Policy</div>
203+
</div>
204+
</div>
205+
<a href="https://aipilot.softwarity.io" class="back-btn">
206+
<span class="material-icons">arrow_back</span>
207+
Back to site
208+
</a>
209+
</div>
210+
211+
<h1>Privacy Policy</h1>
212+
<p class="updated">Last updated: February 14, 2026</p>
213+
214+
<h2><span class="material-icons">info</span> Introduction</h2>
215+
<p>AIPilot ("we", "our", or "us") is committed to protecting your privacy. This Privacy Policy explains how the AIPilot mobile application and AIPilot CLI collect, use, and safeguard your information.</p>
216+
217+
<h2><span class="material-icons">folder_open</span> Information We Collect</h2>
218+
219+
<h3>Information You Provide</h3>
220+
<ul>
221+
<li><strong>SSH Connection Details</strong>: Host addresses, ports, and usernames for SSH connections (Pro version only)</li>
222+
<li><strong>Agent Configurations</strong>: Names and working directories for your AI agents</li>
223+
</ul>
224+
225+
<h3>Information Collected Automatically</h3>
226+
<ul>
227+
<li><strong>Voice Input</strong>: Audio captured when you use the voice recognition feature is processed locally on your device and converted to text. We do not store or transmit audio recordings.</li>
228+
<li><strong>Camera Access</strong>: Used solely to scan QR codes for CLI connection. Images are processed locally and not stored or transmitted.</li>
229+
</ul>
230+
231+
<h3>Information We Do NOT Collect</h3>
232+
<ul>
233+
<li>We do not collect personal identification information</li>
234+
<li>We do not track your location</li>
235+
<li>We do not access your contacts, photos, or files (except when you explicitly choose to upload files in Pro version)</li>
236+
<li>We do not use analytics or tracking services</li>
237+
<li>We do not store your terminal session content</li>
238+
</ul>
239+
240+
<h2><span class="material-icons">settings</span> How We Use Your Information</h2>
241+
<ul>
242+
<li><strong>SSH Credentials</strong>: Stored locally on your device using secure storage. Used only to establish connections to your servers.</li>
243+
<li><strong>Voice Data</strong>: Converted to text commands on your device using your device's speech recognition. Text is sent to your connected AI agent.</li>
244+
<li><strong>QR Code Scanning</strong>: Used only to extract connection information for CLI mode.</li>
245+
</ul>
246+
247+
<h2><span class="material-icons">lock</span> Data Storage and Security</h2>
248+
249+
<h3>Local Storage</h3>
250+
<ul>
251+
<li>All sensitive data (SSH private keys, connection configurations) is stored locally on your device using encrypted storage (Keychain on iOS, EncryptedSharedPreferences on Android).</li>
252+
<li>Session history is stored locally for your convenience.</li>
253+
</ul>
254+
255+
<h3>Data Transmission</h3>
256+
<ul>
257+
<li><strong>CLI Mode</strong>: Communication between your mobile device and PC goes through our relay server. The relay only forwards encrypted data and does not store any session content.</li>
258+
<li><strong>SSH Mode</strong>: Direct encrypted SSH connection between your device and your server. No data passes through our servers.</li>
259+
</ul>
260+
261+
<h3>What We Store on Our Servers</h3>
262+
<p><strong>Nothing.</strong> We do not store any user data, session content, credentials, or personal information on our servers.</p>
263+
264+
<h2><span class="material-icons">share</span> Third-Party Services</h2>
265+
<p>AIPilot uses the following third-party services:</p>
266+
<ul>
267+
<li><strong>Device Speech Recognition</strong>: Your device's built-in speech-to-text service (Google Speech Services on Android, Apple Speech on iOS). Please refer to their respective privacy policies for information about how voice data is processed.</li>
268+
</ul>
269+
270+
<h2><span class="material-icons">gavel</span> Your Rights</h2>
271+
<ul>
272+
<li><strong>Delete your data</strong>: All data is stored locally. Uninstalling the app removes all stored data.</li>
273+
<li><strong>Access your data</strong>: You can view all stored configurations within the app settings.</li>
274+
<li><strong>Control permissions</strong>: You can revoke microphone or camera permissions at any time through your device settings.</li>
275+
</ul>
276+
277+
<h2><span class="material-icons">child_care</span> Children's Privacy</h2>
278+
<p>AIPilot is not intended for use by children under 13 years of age. We do not knowingly collect information from children under 13.</p>
279+
280+
<h2><span class="material-icons">update</span> Changes to This Policy</h2>
281+
<p>We may update this Privacy Policy from time to time. We will notify you of any changes by updating the "Last updated" date at the top of this policy.</p>
282+
283+
<h2><span class="material-icons">table_chart</span> Summary</h2>
284+
<table>
285+
<thead>
286+
<tr><th>Data Type</th><th>Collected</th><th>Stored Locally</th><th>Sent to Our Servers</th></tr>
287+
</thead>
288+
<tbody>
289+
<tr><td>Voice / Audio</td><td>Yes (temporary)</td><td><span class="cross">No</span></td><td><span class="cross">No</span></td></tr>
290+
<tr><td>Camera / QR</td><td>Yes (temporary)</td><td><span class="cross">No</span></td><td><span class="cross">No</span></td></tr>
291+
<tr><td>SSH Credentials</td><td>Yes</td><td><span class="check">Yes (encrypted)</span></td><td><span class="cross">No</span></td></tr>
292+
<tr><td>Session Content</td><td><span class="cross">No</span></td><td><span class="cross">No</span></td><td><span class="cross">No</span></td></tr>
293+
<tr><td>Personal Info</td><td><span class="cross">No</span></td><td><span class="cross">No</span></td><td><span class="cross">No</span></td></tr>
294+
<tr><td>Analytics</td><td><span class="cross">No</span></td><td><span class="cross">No</span></td><td><span class="cross">No</span></td></tr>
295+
</tbody>
296+
</table>
297+
298+
<h2><span class="material-icons">email</span> Contact Us</h2>
299+
<p>If you have questions about this Privacy Policy, please contact us at:</p>
300+
<ul>
301+
<li>Email: <a href="mailto:contact@softwarity.io">contact@softwarity.io</a></li>
302+
<li>GitHub: <a href="https://github.com/softwarity/aipilot-cli/issues">github.com/softwarity/aipilot-cli/issues</a></li>
303+
</ul>
304+
305+
<div class="footer">
306+
<span>&copy; 2026 Softwarity. All rights reserved.</span>
307+
<a href="https://www.softwarity.io">
308+
<img src="softwarity.svg" alt="Softwarity" class="footer-logo">
309+
</a>
310+
</div>
311+
</div>
312+
</body>
313+
</html>

0 commit comments

Comments
 (0)