
casty
البدء السريع
Section titled “البدء السريع”git clone https://github.com/castyfun/casty.git && cd casty./scripts/0-provision.sh # (0) compute: a server with a 2 TB volume, or --host user@ip for your own./scripts/1-node.sh # (1) a Snapchain read node: installed, synced, with a tunnel to it./scripts/2-client.sh # (2) a client: casty, an app key for your account, your feed from your nodeثلاثة أوامر: (0) موارد الحوسبة، (1) عقدة قراءة، (2) عميل. يشغّل ./scripts/deploy.sh الثلاثة دفعة واحدة، ويشرح الطريق كله كل خطوة والبروتوكول الذي تقوم عليه.
يضع casty عقدة قراءة Snapchain، وهي نسخة كاملة من Farcaster، على مضيف تتحكم فيه، ويمنحك عميلًا لا يتصل بشيء غيرها: أمرًا في الطرفية وصفحة للمتصفح والهاتف. تُقرأ تغذيتك وإشارات الذِكر وسلاسل المحادثة من عقدتك؛ وتخرج من خلالها منشوراتك وردودك وإعجاباتك وإعادات النشر والمتابعات. لا تقف واجهة API مستضافة بينك وبين الشبكة، فلا يوجد مفتاح API تحصل عليه ولا حدّ لمعدّل الطلبات تلتزم به.
ابدأ بأمر واحد
Section titled “ابدأ بأمر واحد”عقدة جديدة خاصة بك
Section titled “عقدة جديدة خاصة بك”خادم مع قرص بسعة 2 TB وجدار حماية على Hetzner أو AWS، وعليه Snapchain، والعميل على جهازك، والصفحة على المضيف خلف HTTPS. تتزامن العقدة لبضع ساعات.
git clone https://github.com/castyfun/casty.git && cd casty./scripts/deploy.sh --fid <your fid> --domain node.example.orgلديك بالفعل جهاز Linux فيه 2 TB من القرص الحر؟ أضف -- --host user@ip.
casty على عقدة تعمل بالفعل
Section titled “casty على عقدة تعمل بالفعل”بلا خادم: يتصل casty بأي عقدة Snapchain، عقدة لك على جهاز آخر أو عقدة عامة، ويتذكرها. جاهز خلال دقيقة.
git clone https://github.com/castyfun/casty.git && cd casty./scripts/2-client.sh --node https://snap.farcaster.xyz:3381 --fid <your fid>ثم ./bin/casty web، وتحت «you»، «add a key with your wallet».
دع وكيلًا يقوم بذلك
Section titled “دع وكيلًا يقوم بذلك”الصق موجّهًا واحدًا في Claude Code أو Codex أو Cursor أو أي وكيل برمجة آخر. يقرأ llms.txt، ويسألك أيّ الطريقتين تريد، ولا يطلب منك عبارة البذرة أبدًا.
Set up casty for me: https://github.com/castyfun/casty.Read https://castyfun.github.io/casty/llms-full.txt first....كيف تترابط الأجزاء
Section titled “كيف تترابط الأجزاء”تأتي القراءات من عقدتك، فتكون التغذية بسرعة الجهاز الذي تعمل عليه. وتُوقَّع الكتابات على جهازك بمفتاح تطبيق لا يحمله إلا casty، وتنقلها عقدتك إلى المدقِّقين. يُضاف المفتاح برسالة موقّعة واحدة، تأذن بها محفظتك في المتصفح: بلا معاملة، وبلا رسوم غاز، وبلا Ethereum RPC.
ما تحصل عليه
Section titled “ما تحصل عليه”- ثلاثة سكربتات وأمر واحد. يستأجر
0-provision.shالخادم أو يفحص جهازك، ويثبّت1-node.shبرنامج Snapchain وينتظر اكتمال مزامنته، ويثبّت2-client.shأداةcastyويضيف مفتاحًا. ويشغّلهاdeploy.shبالترتيب ويتابع من حيث توقف التشغيل السابق. - عميل للطرفية.
casty feedوcasty castوcasty like 2: نص عادي لك، و--jsonللسكربتات، وأرقام تنتقل من أمر إلى الذي يليه. - صفحة للمتصفح والهاتف. التغذية وسلاسل المحادثة وإشارات الذِكر والملفات الشخصية ومربع كتابة، بسمة فاتحة وداكنة، مع اختصارات لوحة المفاتيح على الحاسوب المحمول والتثبيت على الشاشة الرئيسية على الهاتف.
- عقدتك، من أي مكان. يضع
casty serveالصفحة على مضيف العقدة خلف HTTPS، مع فهرس للتغذية يجيب فورًا وإشعارات دفع لإشارات الذِكر والردود. - مفاتيح تراها. كل مفتاح تطبيق لحسابك، وما يجوز له أن يوقّعه، ومتى تنتهي صلاحيته، وإلغاؤه من الطرفية أو بالمفتاح نفسه.
- مُختبَر بدون عقدة. تتحقق عقدة Snapchain وهمية من كل توقيع، فيُجري العميل والسكربتات والصفحة فحوصاتها دون اتصال في CI.
في الطرفية
Section titled “في الطرفية”$ casty feed --limit 31 @casty-test · 0s · via casty Reading the feed from my own node. No API key, no rate limit.
2 @user-2000000002 · 22d · via app-alpha @casty-test thanks for the pointer, it worked. https://example.com/2000000002/3
3 @user-2000000011 · 22d · via app-beta Reading the Snapchain docs on a train. A good way to spend an hour.
$ casty like 2liked 2000000002:0x973d398ad75e1f25fa780085f3c22d30b01d2504في المتصفح وعلى الهاتف
Section titled “في المتصفح وعلى الهاتف”



ما تحتاجه
Section titled “ما تحتاجه”- حساب Farcaster للاختبار: معرّف fid له وحدة تخزين واحدة على الأقل، ومحفظة تحمل العنوان المسجّل له، أو عبارة البذرة لذلك العنوان. يستخدم casty العبارة مرة واحدة، لتوقيع طلب المفتاح، ولا يكتبها على القرص أبدًا.
- مضيف. إما بيانات اعتماد Hetzner Cloud (
HCLOUD_TOKENوأداةhcloud) أو AWS (أداة AWS CLI v2 مع ملف تعريف أو مفتاح وصول)، أو وصول SSH إلى جهاز لديك بالفعل يستطيع تشغيل Docker. راجع عقدة في المنزل للحالة الأخيرة. - زوج مفاتيح SSH، افتراضيًا
~/.ssh/id_ed25519و~/.ssh/id_ed25519.pub. - على جهازك:
sshوcurlوjq. ولا يلزم Node.js 22.12 أو أحدث إلا لبناء العميل بنفسك (2-client.sh --from-source). يعمل على macOS وLinux؛ وعلى Windows، شغّل السكربتات داخل WSL2.
يحتاج مضيف العقدة إلى ما يطلبه Snapchain: ذاكرة 16 GB، و4 vCPU، و2 TB من القرص الحر، وعنوان IP عام (البدء). على مضيف مستأجر، تختار الخطوة 0 الخادم والقرص، وتفحص الخطوة 1 المضيف قبل أن تثبّت أي شيء.
كم يستغرق ذلك
Section titled “كم يستغرق ذلك”الخطوة 1 هي الأطول: عند أول تشغيل تنزّل العقدة لقطة بحجم عدة مئات من
GB، ثم تلحق بالكتل التي أُنتجت منذ تلك اللقطة. توقّع ساعات.
ينتظر 1-node.sh ويطبع مقدار تأخر العقدة بعد كل فحص. الضغط على Ctrl-C ينهي
الانتظار فقط؛ وتواصل العقدة المزامنة، ويستأنف ./scripts/1-node.sh status --wait الانتظار
مجددًا.
كم يكلّف ذلك
Section titled “كم يكلّف ذلك”لا يعرف casty أسعار مزوّدك. يسرد التشغيل الفعلي لـ 0-provision.sh الخادم والقرص
وجدار الحماية الذي سينشئه، ويذكر أنها تُحاسَب حتى تحذفها، ولا يتابع
إلا بعد أن تكتب اسم الخادم مجددًا. ويحذف ./scripts/0-provision.sh --destroy الثلاثة.
جرّبه بدون عقدة
Section titled “جرّبه بدون عقدة”يأتي المستودع مع عقدة Snapchain وهمية تقدّم واجهة HTTP API نفسها من بيانات ثابتة، وتتحقق من التواقيع على كل رسالة تُرسل إليها. بها يعمل العميل كله دون اتصال:
pnpm install --frozen-lockfilepnpm demoيشغّل pnpm demo العقدة الوهمية على منفذ حر، ويضيف مفتاح تطبيق بعبارة الاختبار BIP-39
test test test test test test test test test test test junk، ويقرأ التغذية مع منشورات
تطبيق واحد وبدونها، وينشر منشورًا، ويعجب بآخر، ثم يحذف إعداداته المؤقتة في النهاية. تبدأ
معرّفات fid في البيانات الثابتة من 2000000001 ولا تخص أحدًا.
يقوم pnpm demo:web بالتهيئة نفسها، ثم يقدّم casty web، صفحة المتصفح والهاتف،
على منفذ حر حتى تضغط Ctrl-C.
أمر واحد
Section titled “أمر واحد”Usage: deploy.sh [--domain <name> | --tailscale] [--read-only] [--fid <fid>] [--from-source] [--env <file>] [--yes] [--dry-run] [-- <0-provision.sh options>]
Runs, in order: 0-provision.sh (unless --env's file already describes a host; with --domain, again on that host to open 80 and 443), 1-node.sh (the node, the wait for its sync, the tunnel), 2-client.sh (the client, an app key, the feed) and, with a front named, 1-node.sh serve. Every step is safe to run again: the same command picks up where a run stopped.
--domain <name> serve the page on the host as https://<name> (Caddy; opens 80 and 443) --tailscale serve it as the host's name on your tailnet instead --read-only a page that reads only: no app key or passphrase leaves this machine --fid <fid> no seed phrase: 2-client.sh --fid; add the key in ./bin/casty web with your wallet, then run the same command again for the page on the host --from-source build the client here with Node and pnpm instead of downloading it --env <file> node.env to write or read (default: node.env) --yes do not ask before creating anything --dry-run print what provisioning and the node would run; the client is skipped -- <options> passed to 0-provision.sh, e.g. -- --provider aws --region eu-west-1
Exit codes: 0 ok, 2 bad arguments, otherwise the code of the step that stopped.إلى أين بعد ذلك
Section titled “إلى أين بعد ذلك”ابدأ بـ 0. تجهيز مضيف. إن أردت أن تعرف ما تُعِدّه السكربتات قبل تشغيلها، فاقرأ عقد القراءة والمدقِّقون و عنوان الحفظ ومفاتيح التطبيقات. تسرد صفحة الأمان كل سر معني وكيفية إلغاء كل واحد منها.