Telefondan PC'yi Claude AI ile uzaktan kontrol eden kişisel asistan. Web tabanlı arayüz + opsiyonel Android (Capacitor) APK kabuğu.
Ne yapar?
- Sohbet kutusundan komut yaz / söyle, Claude PC'de iş yapar (uygulama açar, dosya yazar, mesaj atar, vs.)
- Telefonu trackpad/klavye olarak kullan, PC ekranını canlı izle (60 fps'e kadar)
- Dosya alışverişi (telefon→PC ataç, PC→telefon indirme kartı)
- Hands-free dinleme, sesli yanıt (TTS), bildirimler
Kişisel kullanım için tasarlanmış, tek kullanıcı, tek PC.
+------------+ +-------------------+ +-------------------+
| Telefon | -----> | Tailscale tunnel | -----> | PC (FastAPI) |
| (PWA/APK) | HTTPS | (mesh, ücretsiz) | | app.py + uvicorn |
+------------+ +-------------------+ +---------+---------+
|
+-------------------------------+--------+
| | | |
Claude Agent SDK pyautogui mss + PIL ...
(subscription) (mouse/kbd) (ekran)
|
v
Claude Code (login)
+ custom MCP tools
(open_app, click,
find_text, share_file,
take_screenshot, ...)
Kullanıcı ile sunucu arasında stabil bir HTTPS tüneli için Tailscale Funnel kullanılır (telefonda Tailscale kurulu olduğunda direkt mesh, üzerinden mobil veriden bile düşük gecikme).
| Alan | Detay |
|---|---|
| Sohbet | Streaming yanıt · sohbet geçmişi · pin · arama · edit/regenerate · uzun dokunarak menü · model seçici (Haiku/Sonnet/Opus) |
| Uzaktan Kontrol | Canlı ekran (3-60 fps) · trackpad (ivmeli, yatay/dikey scroll) · klavye + özel tuşlar/kısayollar/F1-F12 · ekrana dokun-tıkla (interaktif) · PiP floating mini ekran |
| Sesli | Mikrofon (native plugin) · TTS · hands-free (uyandırma kelimesi: "Claude") |
| Dosya | Telefondan yükleme (kamera/galeri/dosya seçim menüsü) · PC'den indirme kartı · Claude share_file tool ile gönderir |
| Macros / Rutinler | Tek dokunuşla çalışan kişisel komut zincirleri |
| GUI Otomasyon (Claude için) | take_screenshot (cursor görünür) · click · type_text (Türkçe destekli) · press_key · hotkey · scroll · drag · open_app (URI/AUMID/exe/Win+search/web fallback) · find_text (Windows native OCR) · list_windows · focus_window · get_active_window · take_region_screenshot |
| Diğer | Karanlık/aydınlık tema · 3 yazı boyutu · stats (model, son 5 saat, bugün, toplam) · tehlikeli komut için bypassPermissions modu (kişisel kullanım) · şifre + brute-force koruması |
git clone <repo> # veya zip indir
cd claude-kontrol
python -m venv venv # opsiyonel ama önerilir
venv\Scripts\activate
pip install -r requirements.txtClaude Agent SDK Claude Code'un üzerinden çalışır, abonelik tüketir (API key'e gerek yok).
npm install -g @anthropic-ai/claude-code
claude
# Açılan promptta /login yaz, tarayıcıdan claude.ai (Pro/Max) hesabınla giriş yap- PC'ye Tailscale kur, giriş yap.
- Funnel'i aç (PC'de stabil HTTPS URL almak için):
Sana
tailscale funnel --bg 5000
https://<makinen>.tail<id>.ts.netURL'i verir. - Telefona da Tailscale yükle, aynı hesapla giriş yap → telefon bu URL'e direkt mesh üzerinden bağlanır (Funnel hop'u atlar, latency düşer).
.env.example dosyasını .env olarak kopyala ve değerleri ayarla:
cp .env.example .env| Değişken | Varsayılan | Anlamı |
|---|---|---|
KONTROL_PASSWORD |
change-me |
Web/PWA login şifresi — sunucuyu açmadan önce mutlaka değiştir |
KONTROL_PORT |
5000 |
FastAPI portu |
KONTROL_WORKING_DIR |
(boş = ~) |
Claude'un işlem yaptığı klasör |
KONTROL_MAX_LOGIN_ATTEMPTS |
5 |
Brute-force eşiği |
KONTROL_LOGIN_BLOCK_MINUTES |
15 |
Eşik aşılınca block süresi |
.env yoksa veya python-dotenv kurulu değilse hardcoded varsayılanlar kullanılır.
start.batŞunu görmelisin:
============================================================
Claude Kontrol v1.0
http://localhost:5000
============================================================
Telefondan Tailscale URL'ine git → şifreni gir → "Ana ekrana ekle" ile PWA olarak kur. Ya da Capacitor APK'sını kur (aşağıda).
Native bildirim, mikrofon, kamera, geri tuşu gibi özellikleri tam kullanmak için. Tamamı capacitor-app/BUILD.md'de.
Özetle:
- Java JDK 17+ ve Android Studio kur
capacitor-app/capacitor.config.jsonvecapacitor-app/www/index.htmliçindekiyour-machine.tailXXXX.ts.netplaceholder'ını kendi Tailscale Funnel adresinle değiştircd capacitor-app && npm installnpx cap sync androidnpx cap open android→ Android Studio açılır → Build → Generate Signed Bundle / APK
İçerik (HTML/JS/CSS) Tailscale URL'inden yüklendiği için, web tarafında değişiklik yaptığında APK'yı yeniden derlemen gerekmez — telefonu kapat-aç yeterli.
Telefondan sohbet kutusuna yazabilirsin/söyleyebilirsin:
- "WhatsApp aç ve Ali'ye 'akşam buluşalım' yaz"
- "Notepad aç, içine 3 paragraf bir blog yazısı yaz, Masaüstü'ne kaydet"
- "Spotify'da klasik müzik aç"
- "Gmail'de en son 5 maili özetle"
- "İndirilenler klasöründeki en son PDF'i bana gönder"
- "Bilgisayarımı 10 dakika sonra kapat"
- "Hangi pencereler açık?"
claude-kontrol/
├── app.py # FastAPI backend + MCP tools
├── chat.html # Ana arayüz (vanilla JS)
├── login.html # Login sayfası
├── start.bat # Sunucuyu başlatır
├── requirements.txt # Python deps
├── .env.example # Config şablonu
├── .gitignore
├── README.md # bu dosya
├── scripts/
│ ├── generate_icons.py # PWA ikonları (static/'a yazar)
│ └── generate_android_assets.py # Capacitor android ikonları
├── static/ # Manifest, ikonlar, sw.js, assetlinks
├── capacitor-app/ # Android wrapper (BUILD.md içinde)
├── data.db # SQLite (gitignore)
└── uploads/ # Yüklenen dosyalar (gitignore)
app.py içindeki @tool(...) decorator'ı kullan, sonra kontrol_mcp = create_sdk_mcp_server(...) ve allowed_tools=[...] listelerine ekle. Tool fonksiyonları _tool_ok(text) / _tool_err(text) helper'larıyla tutarlı format döndürmeli.
Logo değiştirdikten sonra:
python scripts/generate_icons.py
python scripts/generate_android_assets.py # Capacitor android için| Sorun | Çözüm |
|---|---|
'whatsapp' Windows tarafından bulunamıyor dialog'u |
Bilinen sorun değil — _KNOWN_APPS mapping'i kayıtlı handler arar, yoksa Get-StartApps + AUMID dener, en son web fallback'e düşer |
| Port 5000 in use hatası | Get-Process python | Stop-Process -Force sonra start.bat |
| Mikrofon Capacitor APK'da çalışmıyor | APK rebuild gerek (manifeste RECORD_AUDIO izni ekledik). Ayrıca uygulamada izin diyaloğunu onaylaman lazım |
Screenshot tool 'data' hatası |
Eski kod çalışıyor demektir. start.bat penceresini kapat → Görev Yöneticisi'nden Python süreçlerini öldür → tekrar aç |
| Kaspersky python.exe'yi engelliyor | Klasörü Kaspersky exception'a ekle (Settings → Threats and Exclusions → Add) |
| mss "thread" hatası | app.py thread-local mss instance kullanıyor; restart yeterli |
| WhatsApp Desktop yerine web açılıyor | Desktop kuruluysa Get-StartApps onu bulmalı. Test: PowerShell'de Get-StartApps | where Name -like "*WhatsApp*" |
| Logo telefonda eski görünüyor | APK'yı kaldır → yeniden kur. Telefon ana ekranı eski ikonu cache'ler |
| Capacitor build "non-ASCII path" uyarısı | capacitor-app/android/gradle.properties'ta android.overridePathCheck=true kayıtlı (yol Masaüstü içerdiği için) |
- iOS yok — Capacitor desteklerse de bu projede setup edilmedi
- FCM push yok — uygulama tamamen kapalıyken bildirim gönderilmiyor (foreground/background sınırlı). LocalNotifications uygulama açıkken çalışıyor
- Tek kullanıcı — multi-user için tasarlanmadı
- PC açık olmalı — sunucu PC'de çalıştığı için açık olmadığında erişim yok
- Login/2FA bypass yok — Claude şifre veya CAPTCHA giremez, kullanıcıdan ister
- DRM/oyunlar tam yakalanmaz — DXGI lock'lı tam ekran içerik mss tarafından okunamayabilir
- HTTPS sadece Tailscale tüneli üzerinden — tail*.ts.net domaininde gerçek sertifika
- Şifre brute-force koruması: 5 yanlış denemede 15 dakika ban
- Cookie HTTP-only
- Claude SDK
bypassPermissionsmodunda çalışır — Claude tüm tool'ları onay sormadan kullanır (kişisel kullanım için isteneni; başka birine açacaksan permissions ekle) - Keystore (APK imzalama) kesinlikle yedeklenmeli — kaybolursa APK'yı güncelleyemezsin
Kişisel proje, herhangi bir lisans iddiası yok. İstediğin gibi kullan/değiştir.