Portlight Relay
A zero-knowledge mailbox for Portlight pairing. It carries sealed boxes and forgets them. It also runs Portlight AI, which has accounts and passes masked requests on to Google Gemini — that part is described separately below, because it is not zero-knowledge.
What the relay sees
- Box ids — 43-character random-looking names. They are HMACs under a key only the phone and your computer know, so the relay cannot tie boxes to each other, to a session or to a person.
- Sizes and timing — how big each blob is and when it was put and taken.
- Your IP address, at the TCP level, while the connection is open. It is used only as a keyed-hash rate-limit bucket (60 stores and 120 reads per minute) and is not logged.
What the relay cannot see
- The contents. Every blob is MAC'd or sealed with age (X25519 + ChaCha20-Poly1305) on the devices before it is sent. The relay has no key.
- Your SSH keys, host names, user names or anything in your config.
- Which boxes belong to the same pairing.
Retention
- A blob lives at most 60 seconds, in memory (Redis) only, never on disk. It is deleted the moment it is read — each box can be read once.
- No access log, no request log, no cookies, no accounts, no analytics.
- For pairing, the only thing kept is three aggregate numbers per UTC day (boxes stored, bytes stored, boxes taken), for 8 days.
API
| Request | Result |
|---|---|
PUT /v1/box/{id} raw bytes, ≤ 8 MiB | 201 stored · 409 box full · 413 too large · 429 rate limit · 404 bad id |
GET /v1/box/{id}?wait=N (N = 0–25 s) | 200 + bytes (taken and deleted) · 204 still empty |
GET /v1/health | 200 |
POST /v1/auth/google, /v1/account, /v1/ai/… | Portlight AI (account required), see below |
Portlight AI
Portlight AI is the built-in AI operator for Pro and Lifetime. Unlike pairing, it is not zero-knowledge and it needs an account. This is exactly what happens:
- Sign-in with Google. The relay checks the Google sign-in token and keeps only your Google account id (the number Google assigns to the account) — no e-mail address, name or picture. SSH, SFTP and your own AI keys never need this account.
- The app masks terminal text on the phone first: passwords, keys, tokens and other secrets it recognises are replaced (best effort — a pattern cannot know every secret). Only that masked text is sent to this relay, which passes it to Google Gemini (the paid Gemini API, in the US) and returns the answer. Google processes it as our service provider under the Gemini API terms.
- Suggestion conversations — your masked questions and the model's answers — are kept for 30 days after the last message, so follow-up questions have context, and are then deleted automatically. Output summaries are not stored.
- You can delete your AI history, or your whole account, in the app at any time. Deleting the account also deletes its unspent credits.
- Never logged: messages, replies, sign-in tokens, purchase tokens and IP addresses.
- Your Pro or Lifetime purchase is checked with the Google Play Developer API; the result is remembered for one hour.
- Limits: 30 requests per hour per account, 60 requests per minute per IP (keyed hash, not logged).
What Portlight AI stores
- Your account: the Google account id and your credit balance.
- Sign-in tokens for your devices, stored only as hashes; they expire after 365 days.
- Suggestion conversations (masked text), until 30 days after their last message.
- The month's request count per purchase, under a hash of the purchase token (13 months).
- For each credit pack: a hash of its Google Play order id, the amount, the date and, if it was refunded, the refund date — so a pack is credited once and a refund can be taken back. When an account is deleted these rows lose their link to it.
- An hourly count per account (1 hour) and one relay-wide count per day (2 days), in memory.
Accounts, conversations and credits live in the relay's database, separately from the pairing boxes, which stay in memory only.
Relay ne görür
- Kutu kimlikleri — 43 karakterlik, rastgele görünen adlar. Yalnız telefonla bilgisayarınızın bildiği bir anahtarla HMAC'lenir; relay kutuları birbirine, bir oturuma ya da bir kişiye bağlayamaz.
- Boyut ve zamanlama — her blob'un büyüklüğü, ne zaman konup alındığı.
- IP adresiniz, bağlantı açıkken TCP düzeyinde. Yalnız anahtarlı özetle hız sınırı kovası olarak kullanılır (dakikada 60 yazma, 120 okuma) ve loglanmaz.
Relay ne göremez
- İçeriği. Her blob gönderilmeden önce cihazlarda MAC'lenir ya da age (X25519 + ChaCha20-Poly1305) ile mühürlenir. Relay'de anahtar yoktur.
- SSH anahtarlarınızı, host adlarınızı, kullanıcı adlarınızı ya da yapılandırmanızdaki herhangi bir şeyi.
- Hangi kutuların aynı eşleştirmeye ait olduğunu.
Saklama
- Bir blob en fazla 60 saniye yaşar; yalnız bellekte (Redis), diske hiç yazılmaz. Okunduğu anda silinir — her kutu bir kez okunur.
- Erişim logu, istek logu, çerez, hesap, analitik yok.
- Eşleştirme için tutulan tek şey UTC gün başına üç toplam sayı (konan kutu, konan bayt, alınan kutu); 8 gün saklanır.
Portlight AI
Portlight AI, Pro ve Lifetime'daki yerleşik AI operatördür. Eşleştirmenin aksine sıfır bilgili değildir ve hesap ister. Olan tam olarak şudur:
- Google ile giriş. Relay Google giriş token'ını doğrular ve yalnız Google hesap kimliğinizi (Google'ın hesaba verdiği numara) saklar — e-posta adresi, ad ya da fotoğraf saklanmaz. SSH, SFTP ve kendi AI anahtarlarınız bu hesabı hiç istemez.
- Uygulama terminal metnini önce telefonda maskeler: tanıdığı parolalar, anahtarlar, token'lar ve diğer gizli bilgiler değiştirilir (elden gelen ölçüde — bir kalıp her gizli bilgiyi tanıyamaz). Bu relay'e yalnız bu maskelenmiş metin gelir; relay onu Google Gemini'ye (ücretli Gemini API, ABD) iletir ve yanıtı döndürür. Google bunu hizmet sağlayıcımız olarak, Gemini API koşullarıyla işler.
- Öneri konuşmaları — maskelenmiş sorularınız ve modelin yanıtları — devam soruları bağlamı bilsin diye son mesajdan sonra 30 gün saklanır, sonra kendiliğinden silinir. Çıktı özetleri saklanmaz.
- AI geçmişinizi ya da bütün hesabınızı uygulamadan istediğiniz an silebilirsiniz. Hesap silinince harcanmamış krediler de silinir.
- Hiç loglanmaz: mesajlar, yanıtlar, giriş token'ları, satın alma token'ları ve IP adresleri.
- Pro ya da Lifetime satın alımınız Google Play Developer API ile doğrulanır; sonuç bir saat hatırlanır.
- Sınırlar: hesap başına saatte 30 istek, IP başına dakikada 60 istek (anahtarlı özet, loglanmaz).
Portlight AI ne saklar
- Hesabınız: Google hesap kimliği ve kredi bakiyeniz.
- Cihazlarınızın giriş token'ları, yalnız özet olarak; 365 gün sonra geçersiz olur.
- Öneri konuşmaları (maskelenmiş metin), son mesajdan 30 gün sonrasına kadar.
- Ayın istek sayısı, satın alma başına, satın alma token'ının özetiyle (13 ay).
- Her kredi paketi için: Google Play sipariş numarasının özeti, miktar, tarih ve iade edildiyse iade tarihi — paket bir kez yüklensin, iade edilen paket geri alınabilsin diye. Hesap silinince bu kayıtların hesapla bağı kopar.
- Hesap başına saatlik sayı (1 saat) ve relay genelinde günlük tek sayı (2 gün), bellekte.
Hesaplar, konuşmalar ve krediler relay'in veritabanında, eşleştirme kutularından ayrı tutulur; kutular yalnız bellekte kalır.
Totals / Toplamlar (2026-10-19 UTC)
| Boxes stored / Konan kutu | 0 |
|---|---|
| Bytes stored / Konan bayt | 0 |
| Boxes taken / Alınan kutu | 0 |
A finished day only — never today, so this page is not a live activity signal. / Yalnız tamamlanmış gün gösterilir.
Source / Kaynak
This relay is open source. Read exactly what it does: https://gitlab.gurmehub.com/tudiapps/portlight-relay
No external assets, fonts, scripts or trackers are loaded by this page.