- Kişisel veri içermeyen yedek bir Mac’e Claude Code kurularak, ana Mac’in SSH’ından ve telefondaki Claude uygulamasından her zaman erişilebilen bağımsız bir çalışma ortamı olarak yapılandırılır
- Konteynerlere göre donanım izolasyonu daha yüksektir; Unity ve Mac’e özel GUI uygulamaları da kullanılabildiği için
--dangerously-skip-permissions riskini ana Mac’ten ayırmak mümkündür
- Yeni yerel yönetici hesabı, parolasız
sudo ve SSH, uyku modunu engelleme, pano senkronizasyonu ve Claude Code kurulumu üzerinden uzaktan çalışma temeli oluşturulur
- GUI kontrolü, LaunchAgent’ın GUI oturumu içinde tuttuğu bir tmux sunucusu ile uygulanır; ekran kaydı, erişilebilirlik ve tam disk erişimi izinleri ise kişi tarafından elle verilmelidir
- Remote Control, Claude in Chrome, Screen Sharing ve Tailscale eklendiğinde telefondan kontrolden tarayıcı otomasyonuna ve dışarıdan erişime kadar mümkün olur; ancak ayrı kimlik doğrulama ve macOS izin ayarları gerekir
Yapılandırmanın amacı ve temel ilkeler
- Claude Code’un bağımsız olarak kontrol edebileceği bir ortam oluşturup araştırma ve geliştirme işlerini ana Mac’in dışına devretmek
--dangerously-skip-permissions kullanan ajanlar geniş yetkilere sahip olduğundan, erişilebilecek hassas bilgileri azaltmak için kişisel veri ve Apple ID içermeyen ayrı bir cihazda çalıştırmak
- Telefondaki Claude uygulaması veya ana Mac’in SSH’ı üzerinden Claude Code’a her zaman erişebilmek
- Temel yapılandırma için aynı Wi-Fi’a bağlı yedek bir hedef Mac ve günlük olarak kullanılan bir kaynak Mac gerekir
Konteyner veya OpenClaw yerine yedek Mac kullanma nedeni
- Konteynerler hâlâ ana Mac üzerinde çalışır ve ağ istekleri de ana Mac üzerinden geçtiği için tam bir cihaz ayrımı sağlamaz
- Unity veya Mac’e özel uygulamaları çalıştırmak zordur; bilgisayar kullanım özellikleriyle tıklama ve sürükleme gerektiren GUI işlerinde de kısıtlamalar vardır
- Yedek Mac yapılandırması, en yeni Claude Code özelliklerini, Claude uygulaması kontrolünü ve mevcut Claude abonelik kullanım hakkını olduğu gibi kullanır
- Ortam şu ilkelere göre ayrılır
- Ana Mac yerine eski bir yedek Mac kullanılır
- Kişisel veri ve Apple ID içermeyen yeni bir yerel hesap oluşturulur
- Yerel ağda SSH, telefonda Claude uygulaması ile kontrol edilir
1. Hedef Mac’i sıfırlama ve hesap izolasyonu
- Mevcut kişisel veriler varsa ajan bunların tamamına erişebileceğinden önce cihaz silinir
- Desteklenen Mac: System Settings → General → Transfer or Reset → Erase All Content and Settings
- Eski Intel Mac: Açılışta
Cmd-R ile Recovery’ye girip Disk Utility ile dahili sürücüyü silin, ardından macOS’i yeniden kurun
- Gerekirse System Settings → General → Software Update üzerinden en yeni macOS’e güncelleyin
- Yeni bir yerel kullanıcı hesabı oluşturun ve Apple ID ile oturum açmayı atlayın
sudo kullanabilmesi için hesaba yönetici yetkisi verin
- System Settings → Users & Groups bölümünde
Allow this user to administer this computer seçeneğini etkinleştirin
- Başka bir yönetici hesabından kurtarma yaparken
sudo dseditgroup -o edit -a <user> -t user admin kullanılabilir
2. SSH uzaktan oturumu etkinleştirme
- Hedef Mac’te aşağıdaki komutla Remote Login özelliğini etkinleştirin
sudo systemsetup -setremotelogin on
Turning Remote Login on or off requires Full Disk Access privileges hatası oluşursa Terminal’e Full Disk Access verin
- System Settings → Privacy & Security → Full Disk Access bölümünde Applications → Utilities → Terminal’i ekleyin
- Terminal’i kapatıp yeniden açın ve komutu tekrar çalıştırın
3. Parolasız sudo ayarı
- Ajan ve SSH komutları her seferinde parola istemesin diye
/etc/sudoers.d/ altında hesaba özel bir kural oluşturun
echo "<user> ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/<user>-nopasswd >/dev/null
sudo chmod 440 /etc/sudoers.d/<user>-nopasswd
sudo visudo -cf /etc/sudoers.d/<user>-nopasswd
- İlk komut kuralı yazar, ikinci komut
sudonun gerektirdiği salt okunur izni ayarlar
- Son doğrulamada mutlaka
parsed OK çıktısı görülmelidir; hatalı sudoers söz dizimi sudo erişimini engelleyebilir
sudo -n true çıktısız başarılı olursa parolasız sudo çalışıyor demektir
4. Hedef Mac adresini doğrulama
- IP yeniden başlatma sonrası veya zamanla değişebileceğinden sabit bir ana makine adı kullanılması önerilir
scutil --get LocalHostName
- Çıkan ada
.local ekleyerek <target-host>.local biçiminde kullanın
- Aynı ağda iki Mac’in
.local adları çakışırsa yanlış cihaza bağlanılabileceğinden benzersiz bir ad belirleyin
sudo scutil --set LocalHostName newmacbook
- IP gerekiyorsa
ipconfig getifaddr en0 ile kontrol edilebilir, ancak değişebilir
- Bundan sonra adres
<user>@<target-host>.local biçiminde kullanılır
5. Kaynak Mac’te parolasız SSH yapılandırması
- Mevcut SSH anahtarı yoksa kaynak Mac’te Ed25519 anahtarı oluşturun
ssh-keygen -t ed25519
ssh-copy-id <user>@<target-host>.local
- Açık anahtarı kurarken hedef hesabın parolasını bir kez girin
- Aşağıdaki komut parola girişi olmadan hedef kullanıcı adını yazdırıyorsa kurulum tamamlanmıştır
ssh <user>@<target-host>.local whoami
6. Uyku ve otomatik kilidi engelleme
- macOS, güç bağlıyken bile yaklaşık 10 dakika boşta kalınca uykuya geçip ağdan kaybolabileceğinden uyku modunu devre dışı bırakın
sudo pmset -c sleep 0
sudo pmset -c disablesleep 1
sudo pmset -c displaysleep 0
- Komutlar sırasıyla şarjdayken sistem uykusunu engellemeyi, kapak kapalıyken uykuyu engellemeyi ve ekran uykusunu engellemeyi uygular
pmset -g | grep -iE 'sleep' çıktısında sleep 0, SleepDisabled 1, displaysleep 0 değerlerini kontrol edin
- Pilde de uygulamak için
-c yerine -a kullanılır, ancak pil tüketimi artar
- Ekran koruyucudan kaynaklanan otomatik kilidi de engelleyin
defaults -currentHost write com.apple.screensaver idleTime 0
7. SSH pano senkronizasyonu
- macOS’in
pbcopy ve pbpaste araçlarını SSH ile bağlarsanız Apple ID veya harici servis olmadan şifreli P2P yöntemiyle metin aktarabilirsiniz
clip.sh görüntü aktarımını da destekler
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o ~/.local/bin/clip
chmod +x ~/.local/bin/clip
export IC_BOX="<user>@<target-host>.local"
IC_BOX ayarını ~/.zshrc dosyasına ekleyin
clip send, kaynak Mac’teki metni veya görüntüyü hedefe gönderir; görüntüler hedefteki Claude Code oturumuna Ctrl-V ile yapıştırılabilir
clip get, hedef Mac’in panosunu kaynak Mac’e getirir
8. Claude Code kurulumu
- Kaynak Mac’ten SSH üzerinden hedef Mac’e belirli bir Claude Code sürümü kurun
ssh <user>@<target-host>.local 'curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.201'
- Sürüm
2.1.201 yerine latest veya stable da belirtebilirsiniz
~/.local/bin için PATH uyarısı çıkarsa, tüm zsh oturumlarının okuduğu ~/.zshenv dosyasına yolu ekleyin
ssh <user>@<target-host>.local 'echo '\''export PATH="$HOME/.local/bin:$PATH"'\'' >> ~/.zshenv'
9. Claude Code dostu ortamı isteğe bağlı olarak kurma
- İsteğe bağlı
setup-claude-env.sh, shell alias’ları, DX eklentileri, settings.json ayarları, GitHub CLI ve isteğe bağlı Playwright MCP ile yt-dlp’yi kurar
- Tüm bileşenleri
claude-env-components.md içinde görebilirsiniz
- Etkileşimli çalıştırmada varsayılan öğeler seçili, isteğe bağlı kurulum öğeleri ise kapalı olan bir kontrol listesi sunulur
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o setup-claude-env.sh && bash setup-claude-env.sh'
- Etkileşimsiz çalıştırma varsayılan olarak yalnızca temel öğeleri kurar;
--yt-dlp, --playwright, --all, --core bayraklarını destekler
- Betik idempotent yapıdadır; tekrar çalıştırılabilir
10. Claude ve GitHub’a giriş yapma
- SSH ile hedef Mac’e bağlanıp
claude çalıştırın; ana Mac’in tarayıcısında tamamlanabilen tarayıcı/cihaz kodu akışıyla Anthropic hesabınıza giriş yapın
- Depo işlemleri için
gh auth login ile GitHub girişini de eklemeniz önerilir
- Ajanın ana hesabınızı etkilememesi için ayrı bir GitHub hesabı kullanmak daha güvenlidir
11. SSH üzerinden bilgisayar kullanma özelliği
-
GUI oturumuna bağlanma yöntemi
- SSH süreci, GUI oturum açma oturumuna bağlı ekran kaydı ve erişilebilirlik izinlerini doğrudan kullanamaz
- LaunchAgent, GUI oturumu içindeki sabit bir sokette tmux sunucusunu ve
cc adlı anchor oturumunu tutar
- Bu sunucu içinde başlatılan Claude Code, GUI oturumunu devralarak ekran görüntülerine, fare ve klavye kontrolüne erişir
-
Kurulum
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o setup-computer-use.sh && bash setup-computer-use.sh'
- LaunchAgent ve tmux anchor’ını kurar,
~/.claude.json içinde yerleşik computer-use aracını etkinleştirir
- tmux ve Claude Pro veya Max planı gerekir; betik yeniden çalıştırılabilir ve
--uninstall ile kaldırılabilir
-
ic komutuyla oturum yönetimi
- Kaynak Mac’e
ic.sh dosyasını kurun
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o ~/.local/bin/ic
chmod +x ~/.local/bin/ic
echo 'export IC_BOX="<user>@<target-host>.local"' >> ~/.zshrc
- Başlıca komutlar şunlardır
ic: Yeni Claude oturumu
ic -c, ic -r: Son konuşmaya devam etme veya devam ettirme seçici
ic --chrome: Claude in Chrome ile birlikte çalıştırma
ic sh: Hedefte normal shell
ic vnc: Screen Sharing’i çalıştırma
ic rc: Telefon Remote Control sunucusu
ic history, ic ls: Kayıtlı konuşmaları ve çalışan oturumları görme
ic attach <id>, ic kill <id>, ic kill-all, ic kill-except: Oturuma bağlanma ve sonlandırma yönetimi
- Tüm
ic oturumları --dangerously-skip-permissions ile çalışır; ic rc ise --permission-mode bypassPermissions kullanır
- tmux içinde Claude’un dışa aktardığı OSC52 pano dizilerini Terminal.app alamadığından, tüm ekranı kopyalamak için
Cmd-A ardından Cmd-C kullanın
-
Ajanlar arası delege etme
- Kaynak Mac’teki Claude Code, SSH ve
tmux send-keys kullanarak hedefte çalışan Claude oturumuna prompt gönderebilir
- Uzun prompt’larda metinle aynı aktarım grubuna dahil edilen Enter gönderim olarak işlenmeyebilir; kısa süre bekledikten sonra bir kez daha Enter göndermek gerekir
tmux capture-pane ve tail ile yanıtı okuyup iş bitene kadar tekrar tekrar kontrol edebilirsiniz
-
İnsan tarafından doğrudan verilmesi gereken izinler
- Ekran kaydı ve erişilebilirlik izinleri macOS GUI’de bir kişi tarafından doğrudan onaylanmalıdır; sentetik tıklamalarla yapılamaz
- İlk yakalama sırasında görünen
bypass the window picker izin isteği de onaylanmalıdır; yaklaşık ayda bir tekrar görünebilir
- İzin hedefi
claude değil, sorumlu süreç olan tmux ikili dosyasıdır
- Intel yolu:
/usr/local/bin/tmux
- Apple Silicon yolu:
/opt/homebrew/bin/tmux
- Ekran kaydı ekran görüntülerini, erişilebilirlik ise fare ve klavye kontrolünü sağlar
- İzin durumu süreç başlatılırken önbelleğe alındığı için izin verdikten sonra
tmux -S /tmp/cc-tmux.sock kill-server ile sunucuyu yeniden başlatmanız gerekir
- Ayarlar listesinde tmux görünmüyorsa,
ic içinde Claude’dan ekran görüntüsü isteyerek önce izin talebinin oluşmasını sağlayın
- Güncel macOS’ta uygulama bazlı veri erişim isteklerinin tekrarlanmaması için tmux’a Full Disk Access verin ve sunucuyu yeniden başlatın
12. VPN ve diğer GUI uygulamalarını kurma
- Hedef Mac’in trafiğini yerel IP’den ayırmak için Proton VPN gibi bir VPN kurabilirsiniz
- Bilgisayar kullanma özelliğini ayarladıysanız
ic içinden Claude’dan uygulama kurmasını isteyebilirsiniz; ancak aşağıdaki işlemleri bir insan yapmalıdır
- Ücretsiz planda bile giriş bilgileri gerekir; parola
clip send ile aktarılabilir
- İlk bağlantıda VPN/ağ yapılandırma iznini ve Mac parola isteğini onaylamanız gerekir
- Yalnızca GUI üzerinden kontrol edilen uygulamalar için bilgisayar kullanma özelliği gerekir
- Giriş yaptıktan sonra ajan bağlantı kurma ve sunucu değiştirme işlemlerini yapabilir; aynı akış başka uygulamalara da uygulanabilir
13. Telefondan kontrol
- Mevcut bir oturumda
/remote-control veya /rc çalıştırırsanız Claude uygulamasıyla aynı oturumu sürdürüp kontrol edebilirsiniz
claude remote-control, telefondan mevcut oturuma bağlanmanın yanı sıra yeni oturum oluşturmayı da destekler
ic rc ile başlatırsanız telefonda oluşturulan oturumlar da hedef Mac’in bilgisayar kullanma özelliğine erişebilir
14. Chrome’da Claude ayarı
- Genel bilgisayar kullanımı özelliği tarayıcı ekranını görebilir, ancak tıklama veya giriş yapma konusunda kısıtlamaları vardır
- Claude in Chrome uzantısı gezinmeyi, tıklamayı, form doldurmayı, konsol günlüklerini ve ağ isteklerini okumayı destekler
- Playwright MCP’den farklı olarak hedef Mac’in normal Chrome profilini kullandığı için zaten oturum açılmış durumlardan yararlanabilir
- Hedef Mac’te Chrome ve Anthropic Pro, Max, Team veya Enterprise doğrudan aboneliği gerekir
- Aşağıdaki işler bir kişi tarafından doğrudan yapılmalıdır
- Chrome Web Store’da
Add to Chromea tıklamak
- Uzantıda Claude hesabında oturum açmak; kimlik bilgileri
clip send ile aktarılabilir
- Claude Code’da
/chrome çalıştırarak varsayılan olarak etkinleştirin veya oturum bazında claude --chrome ya da ic --chrome kullanın
- Bağlanmazsa Chrome’u bir kez yeniden başlatın
-
- adım ortam betiği, koordinatlar yerine erişilebilirlik ağacındaki öğe başvurularını kullanmak ve istenmeyen ekran görüntülerinden kaçınmak için
~/.claude/CLAUDE.md dosyasına yönergeler ekler
- Kaynak ve hedef Chrome aynı hesaptaki uzantıyı aynı anda çalıştırırsa seçim isteği görünür ve yerel makine tespitinin hatalı olabildiği issue #74667 vardır
- Kaynak Mac’teki uzantıyı geçici olarak kaldırarak veya kaynakta Chrome’u kapatarak bundan kaçınılabilir
- Telefondan oluşturulan oturumlarda şu anda tarayıcı araçlarının sunulmadığı issue #74671 vardır
- Oturumu terminalden başlatın, ardından telefonu
/rc ile bağlayın
15. macOS Screen Sharing
- Yerleşik Screen Sharing ile kaynak Mac’ten hedef ekranı gerçek zamanlı görebilir ve fare ile klavyeyi doğrudan kontrol edebilirsiniz
- macOS 12.1’den itibaren komut satırından etkinleştirilemediği için hedef GUI üzerinden ayarlanmalıdır
- System Settings → General → Sharing bölümünde Screen Sharing’i açın
- Remote Management açıksa ve anahtar görünmüyorsa önce onu kapatın
- Kaynak Mac’ten aşağıdaki komutla bağlanın
open vnc://<user>@<target-host>.local
- Hedef hesap parolasıyla oturum açın; Keychain’de parola kaydetmeyi seçebilirsiniz
16. Tailscale üzerinden harici ağ erişimi
.local adresleri yalnızca LAN’da çalışır, ancak Tailscale P2P uçtan uca şifreli WireGuard tüneli üzerinden SSH, ic, clip ve Screen Sharing’i harici ağlarda da kullanılabilir hale getirir
- Hizmetleri açık internete maruz bırakmaz; ev ağında doğrudan LAN yolunu kullanır
- Tailscale ağına katılım yalnızca cihazlar arasında erişilebilirlik sağlar, bu nedenle SSH anahtarı veya Screen Sharing parolası hâlâ gereklidir
- Hedef Mac’e headless şekilde kurun ve çıktıda verilen URL’den oturum açın
ssh <user>@<target-host>.local 'brew install tailscale'
ssh <user>@<target-host>.local 'sudo brew services start tailscale'
ssh <user>@<target-host>.local 'sudo tailscale up --operator=<user>'
- Kaynak Mac’e de kurun ve hedefle aynı Tailscale hesabıyla oturum açın
brew install --cask tailscale-app
- Varsayılan olarak etkin MagicDNS’i kullanırsanız
.local olmadan ana makine adıyla her yerden erişebilirsiniz
export IC_BOX="<user>@<target-host>"
# export IC_BOX="<user>@<target-host>.local"
- Screen Sharing adresini de
open vnc://<user>@<target-host> olarak değiştirin
- Yönetici konsolunda aşağıdaki güvenlik ve erişilebilirlik ayarları önerilir
- Ele geçirilmiş bir oturum açma tek başına yeni cihaz ekleyemesin diye device approval’ı etkinleştirin
- Hedef cihaz yaklaşık 180 gün sonra anahtar süresi dolduğu için bağlantıdan düşmesin diye key expiry’yi devre dışı bırakın
- Gerçek uzaktan erişimi, kaynak Mac’i telefon hotspot’u gibi farklı bir ağa bağladıktan sonra
ic ls ile kontrol edin
1 yorum
Hacker News yorumları
Yazıda bahsedilen grafik geliştirme söz konusu değilse, ajanı gerçek donanımda izole etmenin bir nedeni yok. Claude’a özel grafik masaüstü oluşturup Chrome kullanıcı kabul testlerine kadar çalıştıran bir betik yazdım
Tüm root yetkilerini verseniz bile bir sorun çıkarsa birkaç saniye içinde atıp yeniden kurabilirsiniz
sudo useradd agent,sudo su agentgibi ayrı bir kullanıcı oluşturup ajanın yalnızca kendi dosyalarını bozabilmesini sağlıyorum. Headless Chrome ile ekran görüntüsü de aldım, VNC de yapılandırdım ama kullanmaya pek değmedi3 dolarlık VPS üzerinde bile bozulursa hemen yeniden kurulabildiği için ajana root vermenin keyfi var
Yapay zekanın gerçekten 24 saat boyunca sürekli yardımcı olacağı bir kullanım alanı bir türlü bulamıyorum, ama ben de buna ihtiyaç duymak isterdim
Gerçekten de dışarıdayken Datadog, bulut logları ve GitHub uyarıları üst üste gelirse Claude Code’a incelemeyi bırakıp “iş ortağı bankanın API’sinde bir saat öncesinden beri isteklerin yaklaşık %15’inde zaman aşımı yaşanıyor” gibi sınıflandırma yaptırabilirsiniz. Sorumlu kişiyle iletişime geçip hafta sonunuza dönebilirsiniz
Düzgün bir on-call sistemi daha iyi olurdu, ama iş yerinin sağladığı esneklik düşünüldüğünde hafta sonu Slack uyarılarına da katlanılabilir
Çoğu zaman abonelik limitlerinden ziyade donanım darboğaz oluyor
Claude’u üçüncü bir PC’ye kurup kimsenin istemediği kodları sürekli halüsinasyonla üretmesine izin vererek geride kalmamaya çalışmak yerine, kod yazmanın kendisinden keyif aldığım için doğrudan kod yazacağım
OpenClaw botunun ücretsiz alternatifi olarak eski bir Mac’te benzer şekilde kurdum. Bazen bağlantı kopup telefondan devri yeniden yapmam gerekiyor, ama Claude’un kontrol edebildiği Homebridge de birlikte çalıştığı için oldukça kullanışlı
Ayrı bir Mac mini M4 üzerine Claude Desktop kurup Dispatch ile kontrol ediyorum. Claude’a verdiğim yerel hesabı zaten tamamen kontrol edebiliyor; bu yönteme geçmek için bir neden var mı merak ediyorum
Her host oturumunda RC çalıştırmak yerine Claude’un bilgisayarımı sandbox host olarak kullanabilmesini isterdim. Şu anda master RC oturumunun her kodlama işi için yeni bir tmux penceresi ve Claude RC oturumu oluşturduğu geçici bir yapı kullanıyorum
RC’de bug çıkarsa Termux’ta Code’u doğrudan kullanabiliyorum, ama iOS’un izin arayüzü biraz istikrarsızdı
curlvewgetkullanırken sorun çıkarmıyorTüm kısıtları çözmese de UTM ile Mac üzerindeki bir sanal makineye macOS ve Claude Code kurabilirsiniz. UTM yönetici olmayan hesapla da çalışır ve çoğu Mac native aracını kullanabilirsiniz
Ancak sanal makinedeki Claude Code UI etkileşimli performansta iyi değil; host üzerindeki yönetici olmayan hesaptan terminalle bağlanarak bunun önüne geçilip geçilemeyeceğinden emin değilim
Aşırı ısınma sorununu çözemediğim eski NUC yerine i5’li bir HP EliteDesk ile homelab ve medya sunucumu yeniden kurdum. Temel Ubuntu üzerinde izolasyon için sanal makineler oluşturup Claude’u çalıştırarak Dispatch’i denemeyi ya da Claude Code’u doğrudan kurduktan sonra iPhone ve iPad’de Moshi uygulamasını kullanmayı düşünüyorum
Eski bir M2 ile benzer şekilde kurdum. Yeterince güçlü yerel modeller çalıştırmak için yetersiz ama OpenClaw ve Claude için mükemmel
M1/M2 MacBook fiyatlarının artık Mac mini’ye kıyasla ucuz sayılmasına şaşırıyorum