
casty
Быстрый старт
Заголовок раздела «Быстрый старт»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) read-нода, (2) клиент. ./scripts/deploy.sh выполняет все три разом, а Весь путь объясняет каждый шаг и протокол, на котором он держится.
casty ставит read-ноду Snapchain, полную копию Farcaster, на хост, которым вы управляете, и даёт вам клиент, который ни с чем больше не общается: команду для терминала и страницу для браузера и телефона. Ваша лента, упоминания и треды читаются с вашей ноды; ваши касты, ответы, лайки, рекасты и подписки уходят через неё. Между вами и сетью нет хостингового API, поэтому не нужно получать API-ключ и не во что упираться по лимиту запросов.
Начните с одной команды
Заголовок раздела «Начните с одной команды»Новая собственная нода
Заголовок раздела «Новая собственная нода»Сервер с томом 2 ТБ и файрволом у 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 ТБ свободного места? Добавьте -- --host user@ip.
casty на уже работающей ноде
Заголовок раздела «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».
Поручите это агенту
Заголовок раздела «Поручите это агенту»Вставьте один промпт в Claude Code, Codex, Cursor или другой агент для программирования. Он читает llms.txt, спрашивает, какой из двух вариантов вам нужен, и никогда не просит вашу seed-фразу.
Set up casty for me: https://github.com/castyfun/casty.Read https://castyfun.github.io/casty/llms-full.txt first....Как это устроено
Заголовок раздела «Как это устроено»Чтение идёт с вашей ноды, поэтому лента работает так быстро, как машина, на которой нода запущена. Записи подписываются на вашей машине ключом приложения, который есть только у casty, и ваша нода передаёт их валидаторам. Ключ добавляется одним подписанным сообщением, которое одобряет ваш кошелёк в браузере: без транзакции, без газа, без Ethereum RPC.
Что вы получаете
Заголовок раздела «Что вы получаете»- Три скрипта и одна команда.
0-provision.shарендует сервер или проверяет ваш,1-node.shставит Snapchain и ждёт его синхронизации,2-client.shставитcastyи добавляет ключ.deploy.shзапускает их по порядку и продолжает с того места, где запуск остановился. - Клиент для терминала.
casty feed,casty cast,casty like 2: простой текст для вас,--jsonдля скриптов, номера, которые переходят из одной команды в следующую. - Страница для браузера и телефона. Лента, треды, упоминания, профили и поле для нового каста, в светлой и тёмной теме, с сочетаниями клавиш на ноутбуке и установкой на домашний экран на телефоне.
- Ваша нода откуда угодно.
casty serveставит страницу на хост ноды за HTTPS, с индексом ленты, который отвечает сразу, и push-уведомлениями об упоминаниях и ответах. - Ключи на виду. Каждый ключ приложения вашего аккаунта, что он может подписывать, когда он истекает, и отзыв из терминала или самим ключом.
- Проверено без ноды. Mock-нода Snapchain проверяет каждую подпись, так что клиент, скрипты и страница проходят свои проверки офлайн в CI.
В терминале
Заголовок раздела «В терминале»$ 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В браузере и на телефоне
Заголовок раздела «В браузере и на телефоне»



Что нужно
Заголовок раздела «Что нужно»- Тестовый аккаунт Farcaster: fid хотя бы с одним storage unit и кошелёк, в котором есть адрес, на который он зарегистрирован, или seed-фраза этого адреса. casty использует фразу один раз, чтобы подписать запрос ключа, и никогда не записывает её на диск.
- Хост. Либо учётные данные Hetzner Cloud (
HCLOUD_TOKENи CLIhcloud) или 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 ГБ RAM, 4 vCPU, 2 ТБ свободного диска и публичный IP (getting started). На арендованном хосте шаг 0 выбирает сервер и том, а шаг 1 проверяет хост, прежде чем что-либо ставить.
Сколько это занимает
Заголовок раздела «Сколько это занимает»Дольше всего длится шаг 1: при первом запуске нода скачивает снимок в несколько сотен
ГБ, затем догоняет блоки, вышедшие после этого снимка. Рассчитывайте на часы.
1-node.sh ждёт и после каждой проверки печатает, насколько нода отстаёт. Ctrl-C завершает
только ожидание; нода продолжает синхронизацию, а ./scripts/1-node.sh status --wait снова
начинает ждать.
Сколько это стоит
Заголовок раздела «Сколько это стоит»casty не знает цен вашего провайдера. Настоящий запуск 0-provision.sh перечисляет сервер, том
и файрвол, которые он собирается создать, сообщает, что за них выставляется счёт, пока вы их не удалите, и продолжает
только после того, как вы введёте имя сервера. ./scripts/0-provision.sh --destroy удаляет все три.
Попробовать без ноды
Заголовок раздела «Попробовать без ноды»В репозитории есть mock-нода Snapchain, которая отдаёт тот же HTTP API из фикстур и проверяет подписи каждого присланного ей сообщения. С ней весь клиент работает офлайн:
pnpm install --frozen-lockfilepnpm demopnpm demo запускает mock-ноду на свободном порту, добавляет ключ приложения с тестовой фразой BIP-39
test test test test test test test test test test test junk, читает ленту с кастами одного
приложения и без них, публикует каст, ставит лайк одному и в конце удаляет свой временный конфиг.
Fid в фикстурах начинаются с 2000000001 и никому не принадлежат.
pnpm demo:web делает ту же подготовку, а затем отдаёт casty web, страницу для браузера и телефона,
на свободном порту, пока вы не нажмёте Ctrl-C.
Одна команда
Заголовок раздела «Одна команда»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.Что дальше
Заголовок раздела «Что дальше»Начните с 0. Подготовка хоста. Если хотите знать, что скрипты настраивают, прежде чем их запускать, прочитайте Read-ноды и валидаторы и Custody-адрес и ключи приложений. Безопасность перечисляет каждый задействованный секрет и как отозвать каждый из них.