این پروژه چیست
Terminal یک اپ بومی macOS برای شلهای محلی، SSH، ایجنتهای کدنویسی و
کارهای Git و سیستمی اطراف آنهاست. روی
SwiftTerm و درون یک پنجرهٔ
SwiftUI ساخته شده، بهطور پیشفرض از رندرر Metal در SwiftTerm استفاده میکند و
CoreText را بهعنوان جایگزین دارد، و روی macOS 14 و بالاتر، هم Apple silicon و
هم Intel، اجرا میشود. نسخهٔ بتای عمومی رایگان است: بدون حساب کاربری و بدون
پرداخت.
چه مشکلی را حل میکند
بخش بزرگی از وقت ترمینال حالا صرف اجرای ایجنتهای کدنویسی — Claude Code،
Codex، Grok — در کنار شلهای معمولی، git، SSH و TUIها میشود. این ایجنتها
در بازههای مصرفی کار میکنند که طبق زمانبندی ریست میشوند، و معمولاً تنها
راه دانستن مقدار باقیمانده پرسیدن از خود ایجنت یا باز کردن یک تب مرورگر است.
Terminal این عدد را تا وقتی پنجره روی صفحه است در نوار وضعیت نگه میدارد، و وقتی
ایجنتی که حواستان به آن نیست ساکت میشود، خبرتان میکند.
قاعدهای که پروژه به آن پایبند است: قابلیتهای ایجنت نقطهٔ تمایز هستند، اما کف
کار ترمینالی است که در هر صورت بهعنوان ابزار روزمره نگهش میدارید.
قابلیتها
- ظاهر بومی. تبها در نوار عنوان macOS قرار دارند — یک ردیف کروم، نه دو
ردیف. تقسیم به راست و پایین، هر پنل با پروسهٔ زندهٔ خودش؛ ترتیب بستن: پنل،
سپس تب، سپس پنجره.
- پروفایلهای اجرای ایجنت برای Claude Code، Codex، Grok، Cursor Agent،
Kimi Code و OpenCode، بهعلاوهٔ پروفایل سفارشی (فایل اجرایی، آرگومانها،
متغیرهای محیطی، آیکون، اندازهٔ فونت).
- نمایش زندهٔ بازههای مصرف برای Claude، Codex، Grok و Kimi، با خواندن
ورود CLI که از قبل روی مک شماست و endpoint خود ارائهدهنده. Cursor Agent و
OpenCode اجرا میشوند، اما جایی که endpoint فردی وجود ندارد عددی ساخته
نمیشود.
- هشدار توجه وقتی ایجنتی که در فوکوس نیست ساکت میشود، و CPU/حافظه برای کل
درخت پروسهٔ ایجنت، از جمله سرورهای MCP.
- SSH با میزبانهای
~/.ssh/config در منو و پالت، بدون نصب چیزی روی سرور
راه دور.
- نشستهای ماندگار مبتنی بر tmux (نیاز به tmux روی
PATH).
- زمینهٔ Git: شاخه، تغییرات ذخیرهنشده و جلو/عقب بودن در نوار وضعیت؛
ویرایش هویت محلی بدون دست زدن به
~/.gitconfig؛ pull requestها از طریق
gh خودتان.
- پالت فرمان، جستوجو در اسکرولبک، نشانههای پرامپت OSC 133، مسیر فایلهایی
که در ویرایشگر شما باز میشوند، و نمایشگر JSON برای متن انتخابشده.
- ۲۲ تم (۱۱ تیره، ۱۱ روشن)، هر کدام با پالت کامل ۱۶ رنگ ANSI و نسبت
کنتراست WCAG اندازهگیریشده که در تنظیمات نمایش داده میشود.
- ابزارهای سیستمی: مانیتور پروسه، تلهمتری دستگاه در نوار وضعیت، و
فهرستبرداری درخواستی از System Data با پاکسازی محتاطانه.
رازها و حریم خصوصی
- رازهای متغیر محیطی در Keychain macOS نگه داشته میشوند و در صورت انتخاب شما
به شلهای جدید تزریق میشوند. نامهایی که میتوانند اجرای پروسه را
در دست بگیرند —
PATH، SHELL، HOME، DYLD_*، LD_* و مشابه آنها —
رد میشوند.
- حالت حریم خصوصی پنجره را از ضبط صفحه حذف میکند و نوار عنوان، مسیر و
نوار وضعیت را میپوشاند.
- پوشاندن زنده یک انتخاب جداگانه است، چون جریان بایت PTY را پیش از رسیدن
به شبیهساز بازنویسی میکند. طول جایگزینها با متن اصلی فرق دارد، پس ممکن
است چیدمان TUIهایی را که مکاننما را با مختصات جابهجا میکنند به هم بریزد، و
خود اپ هم همین را میگوید.
- ایجنتها، SSH و ویرایشگرها بهصورت آرایهٔ آرگومان اجرا میشوند، هرگز
بهصورت رشتهٔ درونیابیشده در شل. دادهٔ مصرف از ارائهدهندهها میآید؛ چیزی
برای سازنده ارسال نمیشود.
محدودیتهای صادقانه
- EDR برای نمایش است، نه متن شبکه. SwiftTerm گلیفها را در یک اطلس
۸ بیتی sRGB رسم میکند، پس کار محدودهٔ دینامیکی گسترده مکاننما، انتخاب و
پالتهای انتخابشده را روشنتر میکند، نه تکتک خانهها را.
- مصرف زنده به شبکه و یک ورود CLI موجود نیاز دارد.
- بدون App Sandbox: شل به دسترسی واقعی به فایلسیستم و پروسهها نیاز دارد.
فناوریها
Swift 6، SwiftUI و AppKit، SwiftTerm (Metal / CoreText)، XcodeGen. مخزن
همچنین یک خط لولهٔ مستقل PTY → پارسر VT → شبکهٔ خانهها → Metal با تستهای
خودش دارد؛ این بخش بهعنوان پژوهش نگه داشته شده و مسیر نمایش اپ نیست.