Ralph CLI روی ماشین محلی عالی کار میکند، ولی یک جایی از خودت میپرسی چرا همهچیز به لپتاپم گره خورده؟ شاید در تیم کار میکنی، شاید مدام دستگاه عوض میکنی، یا فقط نمیخواهی کل Workflow ات به ماشین محلی وابسته باشد. اینجا Remote Worker وارد میشود — و این دقیقاً روشی است که سازنده سری چند ماه است Ralph را اجرا میکند.
دو راه، یک ایده
سازنده یک Mac Mini اختصاصی در دفتر خانه دارد که با `ssh cloudbox` در دسترس است. اما نیازی به ماشین اختصاصی نیست؛ هر VPS از هر Provider ای که بتوانی به آن SSH بزنی کار میکند.
راه اول: SSH + tmux دستی
سادهترین راه، همان چیزهایی است که قبلاً یاد گرفتیم:
ssh cloudbox
# روی ریموت مطمئن شو Ralph نصب و نسخه درست است
tmux new -s laracasts_ralph
cd project
ralphروی ریموت باید همان Setup محلی را داشته باشی: Ralph نصب، متغیر `LINEAR_API_KEY` (اگر Linear میخواهی)، YoloBox نصب، و GitHub CLI احراز هویتشده. بعد Detach کن (`Ctrl-B D`)؛ چون در حالت Linear با Polling هستیم، حلقه Headless میماند و کار را از Linear برمیدارد. حالا Linear عملاً Control Plane توست — حتی از موبایل میتوانی کار Dispatch کنی.
عیب این روش: برای دیدن خروجی یا کشتن ایجنت باید به ریموت و Session وصل شوی (`tmux attach -t laracasts_ralph`). ولی صادقانه، سازنده میگوید همینطوری اجرایش میکند و برایش مشکلی نیست.
راه دوم: پشتیبانی Remote توکار در CLI
اگر آن کنترل اضافه را میخواهی، Ralph CLI پشتیبانی Remote دارد. در `ralph.toml`:
[remote]
host = "cloudbox"
project_dir = "/home/user/laracasts"
workspace = "copy-on-write"
directory = "laracasts"
yolobox = true
auto_create_pr = trueحالا محلی با فلگ اجرا میکنی:
ralph --remote cloudboxپشت صحنه: Ralph یک Session SSH به ریموت باز میکند، حلقه را Headless داخل یک tmux Session اجرا میکند، و لاگها را به Control Plane محلیات Stream میکند. اگر وسط اجرا `Q` بزنی، حلقه را نمیکشی — فقط Detach میشوی و بعداً از هر دستگاهی دوباره وصل میشوی. وقتی حلقه تمام شد، Session tmux را هم میبندد؛ پس tmux لایه Persistence است که ماشین محلی میداند کدام ایجنت هنوز زنده است.
جداسازی هویت: کاربر GitHub اختصاصی
نکته مهم عملیاتی: روی ماشینهای ریموت با یک کاربر GitHub «اختصاصی» احراز هویت کن، نه کاربر شخصی خودت. دلایل:
- حتی با Fine-grained Token ها، تنظیم دقیق مرزها سخت است.
- استفاده از هویت خودت گیجکننده میشود: وقتی به یک Commit یا PR نگاه میکنی، معلوم نیست کار تو بوده یا ایجنت.
جداسازی تمیز بین «کار انسان» و «کار ایجنت» نهفقط برای امنیت، که برای وضوح ارزشمند است. هزینهاش شاید یک Seat اضافه باشد، ولی بهگفته سازنده میارزد. در PR واقعی، کاربر `cloudbox` سازنده PR است — کاملاً مشخص که کار ایجنت بوده.
اگر جایی گیر کردی، همانطور که سازنده میگوید، جادوی ایجنتها دم دستت است — از Claude بخواه مشکل Setup را برایت حل کند.
به زبان ساده
حلقه لازم نیست روی لپتاپت باشد. به یک VPS یا Mini وصل شو، داخل tmux اجرا کن، Detach کن. Linear از موبایل هم کار میفرستد.
مثال واقعی
سازنده چند ماه است روی Mac Mini با `ssh cloudbox` اجرا میکند. کاربر GitHub اختصاصی `cloudbox` PR میسازد — معلوم است کار ایجنت بوده نه انسان. Q در CLI ریموت حلقه را نمیکشد؛ فقط تو را جدا میکند.