تصور کنید یک برنامهنویس هستید که برای رفع یک باگ ساده، مدام بین پنجرهی ترمینال و مدیریت فایل جابجا میشود تا متنی را کپی کند یا فایلی را آپلود کند. Faro این «رقص دو-پنجرهای» خستهکننده بین ابزارهایی مانند PuTTY و FileZilla را به پایان میرساند و تمام ابزارهای مدیریت سرور را در یک محیط واحد جمع میکند. این اپلیکیشن دسکتاپ به کاربران اجازه میدهد تا SFTP، SSH و ذخیرهسازهای سازگار با S3 را در یک رابط کاربری مدیریت کنند. با به اشتراک گذاشتن یک اتصال واحد بین ترمینال و مرورگر فایل، این ابزار محیطهایی را که پیش از این از هم جدا بودند، یکپارچه میکند.
زمینه (Context)
برای بیش از یک دهه، مدیریت سرور بر ابزارهای پراکندهای متکی بوده است که وضعیت نشست (Session State) را با یکدیگر به اشتراک نمیگذارند. اکثر توسعهدهندگان یک پنجره را برای دسترسی به شِل (مانند PuTTY یا Windows Terminal + OpenSSH) و پنجرهای دیگر را برای انتقال فایل (مانند FileZilla) باز میکنند؛ این یعنی برای دسترسی به یک سرور واحد، باید دو بار عملیات لاگین را انجام دهند. در واقع، کاربر مجبور است یک سرور را در دو جای مجزا مدیریت کند، در حالی که این ابزارها هیچ ارتباطی با یکدیگر ندارند و لیست نشستها یا وضعیت اتصال را به اشتراک نمیگذارند.
این پراکندگی زمانی به یک گلوگاه امنیتی تبدیل میشود که بخواهیم از عاملهای هوش مصنوعی (AI Agents) برای عیبیابی استفاده کنیم. برای دریافت کمک در دیباگ کردن، کاربران اغلب مجبورند خروجی ترمینال را به صورت دستی کپی کرده و به مدل منتقل کنند یا کلیدهای خصوصی SSH خود را در اختیار یک پردازش ثالث قرار دهند. این فرآیند نهتنها کند است، بلکه مانع از آن میشود که عامل هوش مصنوعی بتواند به صورت موثر و تکرارشونده روی مشکل کار کند. این چالشها مشابه موانعی است که اپلیکیشن Hermes برای سادهسازی گردشکارهای چندعاملی و حذف نیاز به ترمینال سعی در رفع آنها دارد.
پروژه Faro برای حل این مشکل، از یک هستهی Rust و رابط کاربری React ساخته شده است که بر روی Tauri 2 پیادهسازی شده است. این ابزار بهجای اینکه یک وباپلیکیشن باشد که در پوسته Electron پیچیده شده باشد، به عنوان یک اپلیکیشن واقعی دسکتاپ طراحی شده است. اولویت اصلی در طراحی آن، تراکم اطلاعات (Density) و تجربهای است که ابتدا بر کیبورد متمرکز باشد، به جای اینکه صرفاً روی داشبوردهای تبلیغاتی و گرافیکی متمرکز شود.

جزئیات (Details)
طبق گزارشهای فنی، Faro چندین جریان کاری مجزا را در یک مدل ذهنی واحد یکپارچه کرده است. این برنامه ویژگیهای با تراکم بالای زیر را ارائه میدهد:
- اتصالات یکپارچه: یک نشست SSH واحد، همزمان هم مرورگر فایل دو-پنله (dual-pane) و هم ترمینال را تغذیه میکند و نیاز به دستاندازیهای (handshakes) مکرر را از بین میبرد.
- پشتیبانی گسترده از بکاند: این ابزار علاوه بر SFTP، از FTP/FTPS قدیمی و ذخیرهسازهای سازگار با S3 شامل Cloudflare R2, Backblaze B2 و Azure Blob پشتیبانی میکند.
- همگامسازی هوشمند: یک برنامهریز همگامسازی (Sync Planner)، انتقالهای محلی به راه دور و کپیهای بازگشتی (recursive) را مدیریت میکند. این قابلیت از همگامسازی یکطرفه در هر دو حالت Additive و Mirror در تمامی بکاندهای پشتیبانی شده عمل میکند.
- ویرایش درجا: کاربران میتوانند با راست-کلیک روی یک فایل راه دور، آن را از طریق یک فایل موقت در ویرایشگر پیشفرض محلی خود باز کنند؛ پس از ذخیره، فایل به طور خودکار آپلود میشود.
- آنبوردینگ سریع: برای جلوگیری از تایپ مجدد دهها هاست، Faro دارای واردکنندههایی (Importers) برای فایل
~/.ssh/config
، نشستهای PuTTY و فایلsitemanager.xmlدر FileZilla است. - تأیید هویت میزبان: برنامه از یک مودال با رنگ هشدار (danger-toned) استفاده میکند تا کاربر را در صورت عدم تطابق کلیدهای میزبان (host keys) هشدار دهد و تلاشهای حملات مرد-در-میان (MITM) را آشکار کند.
معماری این سیستم بر یک هسته Rust متکی است که در آن هر چیزی از طریق یک Trait واحد به نام RemoteFs جریان مییابد. این بدان معناست که هر پروتکل جدیدی که اضافه شود، به طور خودکار توسط GUI، CLI، برنامهریز همگامسازی و موتور انتقال شناسایی میشود. پشته تکنولوژی شامل React + TypeScript + Tauri webview است که از طریق دستورات و رویدادهای Tauri با هسته Rust (faro_lib) ارتباط برقرار میکند. همچنین یک SessionManager وجود دارد که برای هر پروفایل، یک نشست SSH را در یک استخر (pool) مدیریت میکند.
پل عامل (The Agent Bridge)
مهمترین تغییر فنی در این پروژه، معرفی Agent Bridge است. بهجای اینکه به یک عامل هوش مصنوعی دسترسی مستقیم به کلیدهای خصوصی بدهیم یا بخواهیم یک عامل راه دور روی سرور نصب کنیم (که اغلب غیرممکن یا ناامن است)، Faro اجازه میدهد عامل از یک نشست احراز هویتشدهی موجود «قرض» بگیرد.
هنگام استفاده از عاملی که از MCP (پروتکل زمینه مدل) پشتیبانی میکند، مانند Claude Code، کاربر یک دستور تکخطی از پنل فارو دریافت میکند تا عامل را از طریق یک سرور localhost متصل کند:
claude mcp add --transport http faro http://127.0.0.1:<port>/mcp --header "Authorization: Bearer <token>"
این کار یک مجرای امن ایجاد میکند که در آن عامل میتواند از دو ابزار خاص استفاده کند: faro_list_sessions و faro_exec. برای مثال، اگر کاربر از عامل بخواهد «میزان مصرف دیسک سرور را بررسی کن»، این درخواست به Faro ارسال میشود. سپس Faro دستور دقیق را نمایش داده و منتظر تأیید انسانی میماند تا آن را در نشست SSH زنده اجرا کرده و خروجی را بازگرداند. این رویکرد به مدیریت بهینه زمینه کمک میکند، مشابه آنچه در متد تکفایلی Dory برای جلوگیری از اتلاف وقت و تحلیل بهتر زمینه در چتهای AI مشاهده میکنیم.
برای تضمین امنیت، حفاظهای زیر به صورت پیشفرض فعال هستند:
- فقط localhost: سرور دقیقاً روی 127.0.0.1 و روی یک پورت تصادفی Bind میشود.
- توکن حامل (Bearer Token): برای هر درخواست یک توکن لازم است که در هر بار اجرای برنامه، مجدداً تولید میشود.
- اجازه دسترسی به نشست: اتصالات تا زمانی که به طور صریح فعال نشوند، برای عامل نامرئی میمانند.
- تأیید برای هر دستور: هر اجرای کد، یک درخواست تایید (prompt) در GUI فارو ایجاد میکند و تا زمان پاسخ کاربر متوقف میماند.
- گزارش بازرسی (Audit Log): هر دستور، تأیید یا رد، در پنل مربوطه ثبت میشود.
این رویکرد، عامل هوش مصنوعی را از یک پردازش ریسکی ثالث، به یک دستیار تحت نظارت تبدیل میکند. با انتقال «درگاه تأیید» به کلاینت محلی، Faro تضمین میکند که هوش مصنوعی هرگز مستقیماً به اعتبارنامههای سرور دسترسی ندارد و اصطکاکی که مانع از انجام کارهای زنده (مانند ریاستارت سرویسها یا بررسی لاگها) توسط AI میشد را از بین میبرد.
CLI و نقشه راه آینده
برای توسعهدهندگانی که اسکریپتنویسی را ترجیح میدهند، پروژه شامل faro-cli است؛ یک فایل باینری مستقل از Rust که از crate clap استفاده میکند. این ابزار تمام بکاندهایی را که GUI پشتیبانی میکند، با استفاده از همان پروفایلهای ذخیره شده اسکریپت میکند. یک مورد استفاده رایج، مرحله پیشنمایش استقرار است: faro-cli sync ./site prod:/var/www --mirror --dry-run.
Faro در حال حاضر تحت لیسانس MIT متنباز است. نصبکنندههای پیشساخته برای macOS، ویندوز و لینوکس در دسترس هستند و برنامه را میتوان از طریق سورسکد با دستور npm install && npm run tauri dev ساخت.
نقشه راه فعلی بر صیقل دادن برنامه و گسترش قابلیتها متمرکز است، از جمله:
- پشتیبانی از WebDAV.
- تعیین محدودیت سرعت انتقال و ویرایش صف (queue).
- پالت دستورات (Command Palette) و فیلترهای نام فایل.
- امضای دیجیتال کدها برای اطمینان از اینکه تجربه اولین اجرا توسط Gatekeeper یا SmartScreen مسدود نمیشود.
شما میتوانید اگر از عاملهای MCP استفاده میکنید، پل ارتباطی را تست کنید یا سورسکد را بررسی کنید تا ببینید Trait RemoteFs چگونه LocalFs، SftpFs، FtpFs و ObjectFs را مدیریت میکند.
گام بعدی شما
- اگر از عاملهای MCP مانند Claude Code استفاده میکنید، پل ارتباطی Faro را برای مدیریت سرورهای لینوکسی خود تست کنید.
- فایلهای
~/.ssh/configخود را وارد کنید تا از شر تعریف دستی هر هاست خلاص شوید. - سورسکد
RemoteFsدر گیتهاب را بررسی کنید تا ببینید چگونه چهار پروتکل مختلف در یک ساختار واحد مدیریت شدهاند.
این تنها آغاز ماجراست؛ اثر موجگونهی ادغام ابزارهای سیستمی با مدلهای استدلالی را در گزارش بعدی بررسی خواهیم کرد.




گفتگو