गाइड

tmux से Claude Code सेशन को चालू रखना

टर्मिनल एजेंट टर्मिनल के अंदर रहता है। विंडो बंद, तो एजेंट गया। SSH कनेक्शन टूटा, तो एजेंट गया। tmux एजेंट को एक ऐसे सेशन में रखता है जिसे टर्मिनल बस देखता है। जब आप हट जाते हैं, तब भी सेशन चलता रहता है। हर एजेंट Mac पर हम यही सेटअप इस्तेमाल करते हैं। नीचे सटीक कमांड हैं।

इंस्टॉल करें और शुरू करें

brew install tmux
tmux new -s agent

अब आप agent नाम के सेशन के अंदर हैं। इसमें एजेंट को किसी भी दूसरी कमांड की तरह शुरू करें।

claude

Codex के लिए उसकी कमांड चलाएँ। इस पेज की हर चीज़ दोनों टूल के लिए एक जैसी काम करती है।

Detach करें और वापस आएँ

Ctrl-b दबाएँ, छोड़ें, फिर d दबाएँ। टर्मिनल आपके शेल पर लौट आता है, और एजेंट बैकग्राउंड में काम करता रहता है। मशीन के किसी भी टर्मिनल से उस पर लौटने के लिए नाम से attach करें।

tmux attach -t agent

नाम भूल जाएँ, तो देखें कि क्या चल रहा है।

tmux ls

फ़ोन से जारी करें

फ़ोन पर एक SSH क्लाइंट इंस्टॉल करें। Termius और Blink Shell आम हैं। Mac से कनेक्ट करें और उसी सेशन में attach करें। आप ठीक वही देखते हैं जो एजेंट कर रहा है, और उसे टाइप करके जवाब दे सकते हैं। लंबे प्रॉम्प्ट के लिए फ़ोन का कीबोर्ड अच्छा नहीं है। इसलिए ज़्यादातर लोग फ़ोन से प्रोग्रेस देखते हैं और किसी सवाल का जवाब देते हैं। असली काम वे लैपटॉप से करते हैं।

Claude Code के लिए फ़ोन पर Remote Control, SSH से बेहतर अनुभव देता है। यह Claude ऐप को चल रहे सेशन से जोड़ देता है, बिना किसी टर्मिनल के। Claude Code को 24/7 चलाने की गाइड में इसका सेटअप है। tmux फिर भी नीचे ज़रूरी है, क्योंकि Remote Control उसी सेशन से जुड़ता है जो मौजूद हो।

इसे आरामदायक बनाएँ

दो सेटिंग्स एजेंट के काम के लिए tmux को काफ़ी आसान बना देती हैं। इन्हें अपने होम फ़ोल्डर में .tmux.conf नाम की फ़ाइल में डालें।

set -g mouse on
set -g history-limit 50000

पहली सेटिंग से आप ट्रैकपैड या उंगली से स्क्रॉल कर सकते हैं। दूसरी इतना आउटपुट रखती है कि आप पढ़ सकें कि एजेंट ने एक घंटा पहले क्या किया। फ़ाइल सेव करने के बाद tmux रीस्टार्ट करें, या सेशन के अंदर से उसे रीलोड करें।

tmux source-file ~/.tmux.conf

रीबूट के बाद भी बचा रहे

tmux सेशन मेमोरी में रहते हैं। रीस्टार्ट उन्हें मिटा देता है। बिना निगरानी वाली मशीन पर सेशन अपने आप लौटना चाहिए। लॉग इन पर चलने वाला LaunchAgent यही करता है। इसे dev.local.agent-session.plist नाम की फ़ाइल के रूप में सेव करें। यह फ़ाइल आपकी होम Library के अंदर LaunchAgents फ़ोल्डर में जाएगी।

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>dev.local.agent-session</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/sh</string>
    <string>-c</string>
    <string>/opt/homebrew/bin/tmux has-session -t agent 2>/dev/null || /opt/homebrew/bin/tmux new -d -s agent</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>StartInterval</key><integer>60</integer>
</dict>
</plist>

इसे एक बार लोड करें। फिर यह हर लॉग इन पर चलेगा और उसके बाद हर मिनट जाँच करेगा।

launchctl load ~/Library/LaunchAgents/dev.local.agent-session.plist

इससे एक खाली सेशन बनता है। यह उसके अंदर एजेंट को रीस्टार्ट नहीं करता, और ऐसा जानबूझकर है। जब कोई इंसान जागा न हो और एजेंट खुद को आधे-अधूरे टास्क में फिर शुरू कर दे, तो नतीजे चौंका सकते हैं। यूज़र के लिए automatic login चालू करें, ताकि LaunchAgent को चलने के लिए सेशन मिले। फिर अगली बार attach करने पर टास्क खुद शुरू करें।

दो सेशन, दो एजेंट

एक ही मशीन पर एक सेशन में Claude Code और दूसरे में Codex चलाने से आपको कोई नहीं रोकता। दो रिपॉज़िटरी पर दो Claude Code सेशन भी चलते हैं। उनका नाम काम के हिसाब से रखें।

tmux new -s api-refactor
tmux new -s ios-tests

हर एजेंट को उसकी अपनी रिपॉज़िटरी checkout में रखें, ताकि वे एक ही फ़ाइलें एडिट न करें। Git worktrees से यह सस्ता पड़ता है।

अक्सर पूछे जाने वाले सवाल

अगर Mac स्लीप हो जाए, तो क्या tmux एजेंट को चालू रखता है?

+

नहीं। tmux टर्मिनल बंद होने और कनेक्शन टूटने से बचाता है। स्लीप पूरी मशीन को जमा देता है, tmux समेत। स्लीप को पावर सेटिंग्स से अलग ठीक करें, फिर उसके ऊपर tmux इस्तेमाल करें।

tmux और screen में क्या फ़र्क है?

+

दोनों एक ही समस्या हल करते हैं। tmux अभी मेंटेन होता है, Homebrew में आता है, और इसमें ऊपर वाली माउस और scrollback सेटिंग्स हैं। जो आप जानते हैं, वही इस्तेमाल करें। कमांड अलग हैं, पर विचार एक ही है।

क्या मैं attach करने से पहले का एजेंट का आउटपुट देख सकता हूँ?

+

हाँ। सेशन के अंदर ऊपर स्क्रॉल करें। history-limit सेटिंग तय करती है कि कितनी लाइनें रखी जाएँ। माउस मोड चालू हो तो ट्रैकपैड से स्क्रॉल करें। वरना Ctrl-b और फिर बायाँ ब्रैकेट दबाएँ, स्क्रॉल करें, और बाहर निकलने के लिए q दबाएँ।

क्या यह होस्टेड Mac पर काम करता है?

+

हाँ, और हमारे एजेंट Mac इसी तरह सेट होते हैं। लॉग इन पर agent नाम का सेशन बनता है, जिसमें आपका चुना हुआ एजेंट चलता है। ब्राउज़र में खुलने वाले डेस्कटॉप पर एक Terminal विंडो उससे जुड़ी रहती है।

संबंधित गाइड