Аяксий's avatar
Аяксий
npub1eefg...q6z8
Ajaxiis, вне политики против войн и терроризма. Новости, опенсорс, нейросети, и просто полезности на каждый день. #ru, #русскийязыккакязыкобщения, #nopolitic. Репосты приветствуются и я за них Благодарен. Давайте делать жизнь лучше вместе. Кошелька нет и не будет :) #free #opensors
**LlamaBarn** — это небольшой (всего 12 МБ) приложение для меню-бара macOS, разработанное организацией **ggml-org** (авторами популярного проекта llama.cpp). Его слоган: «Уютный дом для ваших LLM» (A cosy home for your LLMs). ### Основная цель Упростить запуск локальных больших языковых моделей (LLM) на Mac до уровня «как подключиться к Wi-Fi». Оно скрывает всю сложность командной строки: скачивание моделей, квантизацию, настройку контекста и параметров под аппаратное обеспечение. ### Ключевые особенности - Работает как иконка в меню-баре macOS (написано на Swift). - Встроенный каталог моделей — показывает только те, которые совместимы с вашим Mac (учитывает объём RAM, чип Apple Silicon и т.д.). - Автоматическая оптимальная конфигурация под ваше железо для максимальной производительности и стабильности. - Тесная интеграция с **llama.cpp** (включает его напрямую в проект). - При выборе модели запускает локальный сервер на ` http://localhost:2276`. - Предоставляет стандартный OpenAI-совместимый API — можно подключить к любому приложению (например, чатам, IDE и т.д.). - Встроенный веб-интерфейс для прямого чата с моделью в браузере. - Полностью локально, без облака и зависимостей от сторонних сервисов. ### Установка - Через Homebrew: `brew install --cask llamabarn` - Или скачать с страницы Releases на GitHub. ### Как использовать 1. Установите модель из встроенного каталога (скачивается автоматически). 2. Выберите модель в меню — приложение запустит сервер. 3. Общайтесь через веб-UI (` http://localhost:2276`) или API (например, через curl). Проект открытый (лицензия MIT), активно развивается организацией ggml-org. Это удобный «графический фронтенд» для llama.cpp специально для macOS, без лишних наворотов и бloatware. Репозиторий: #macos, #opensorce, #нейросети
Аяксий's avatar
Аяксий 6 days ago
Вышел альтернативный ИИ-ассистент SigmaAI Сервис ориентирован на безопасную работу с информацией и выдаёт ответы только с опорой на проверенные источники, без домыслов и «галлюцинаций». Основные особенности: • повышенное внимание к конфиденциальности; • запросы не сохраняются и не передаются третьим сторонам; • поддержка русского и множества других языков; • бесплатная версия с генерацией изображений, веб-поиском и расширенным анализом. Попробовать можно здесь #ассистент, #нейросети
Аяксий's avatar
Аяксий 2 weeks ago
Eclaire — локальный ИИ-помощник с открытым исходным кодом для работы с вашими данными. Объединяет задачи, заметки, документы, фотографии и закладки. Частное, локальное и расширяемое с помощью API решение. 🐱 GitHub #нейросети, #локалка
Аяксий's avatar
Аяксий 3 weeks ago
Raito — это Python‑фреймворк и набор инструментов для разработки внутренних дев‑утилит и ботов, объединяющий REPL, хот‑релоад, «клавиатуры» (систему команд/горячих клавиш), пагинацию и вспомогательные дев‑инструменты в одном проекте. [1][2][3] ## Назначение проекта Raito ориентирован на разработчиков, которым нужно быстро собирать и развивать внутренние инструменты (internal dev tools) и ботов на Python, не собирая стек из множества разрозненных библиотек. [1][2] Его слоган — «REPL, hot‑reload, keyboards, pagination, and internal dev tools — all in one», что подчёркивает цель иметь единое ядро для интерактивной разработки и управления ботом/инструментом. [2][3] ## Основные возможности - Интерактивный REPL и хот‑релоад: код можно менять на лету, а изменения подхватываются без перезапуска всего приложения, что удобно для экспериментов и быстрой отладки. [2][3] - «Клавиатуры» и пагинация: фреймворк предоставляет абстракции для построения многостраничных интерфейсов и навигации (например, списки, страницы, переключение между ними) поверх бота или интерактивного приложения. [1][2] ## Использование и экосистема Проект написан на Python и распространяется как открытый репозиторий GitHub `Aidenable/Raito`, где доступны исходники, тесты, примеры и документация. [1][3] Стабильное развитие подтверждается релизами (например, версия v1.3.7 от ноября 2025 года) и наличием набора тестов и директории `examples` в корне репозитория. [1] ## Ссылки - Репозиторий: https://github.com/Aidenable/Raito. [1][2] - Автор/владелец аккаунта: https://github.com/Aidenable. [3] Цитаты: [1] raito · GitHub Topics [2] Pull requests · Aidenable/Raito [3] Aidenable [4] Raito [5] How does auto-pagination work for queries? - 💬 App Building [6] Raito Docs: Home [7] The Ultimate Guide to 75% Keyboards: Everything You ... [8] User Guide https://files.customersaas.com/files/cdmieV6FNtvgYqaCzur3dPeY.pdf [9] EnterpriseOne Tools 8.94 PeopleBook https://docs.oracle.com/cd/B28736_01/jded/acrobat/e1-tools894tfd-b1104.pdf [10] Financial Aid Technical Manual https://health.uconn.edu/information-technology/wp-content/uploads/sites/45/2015/10/40tmfinaid.pdf
Аяксий's avatar
Аяксий 3 weeks ago
Handy — это кроссплатформенное офлайн‑приложение для преобразования речи в текст (speech‑to‑text), построенное на Tauri (Rust + React/TypeScript), которое вставляет распознанный текст прямо в любое активное текстовое поле и работает полностью локально, без отправки аудио в облако. [1] ## Основная идея и назначение Handy позиционируется как бесплатный, открытый и расширяемый инструмент для диктовки, где упор сделан не на «лучшее качество», а на «наиболее удобную базу для форков и доработок». [1] Проект ориентирован на приватность (все вычисления на машине пользователя), простоту («одна утилита — одна задача») и доступность как вспомогательного средства для ввода текста голосом. [1] ## Как работает Handy - Пользователь нажимает на настраиваемое глобальное сочетание клавиш, начинает говорить и отпускает клавишу по окончании фразы. [1] - Приложение локально обрабатывает аудиопоток: шум и паузы отфильтровываются VAD (Silero), затем сегменты передаются в модель распознавания речи. [1] - Полученный текст автоматически вставляется (paste) в текущее активное приложение/поле ввода. [1] ## Модели и локальная обработка - Whisper (через `whisper-rs`): поддерживаются варианты Small/Medium/Turbo/Large, с использованием GPU‑ускорения, если оно доступно. [1] - Parakeet V3 (через `transcription-rs`): CPU‑оптимизированная модель с авто‑детекцией языка, ориентирована на работу даже на не самых мощных машинах. [1] - Для VAD используется Silero, а для ресемплинга — `rubato`. [1] ## Архитектура и стек - Фронтенд: React + TypeScript + Tailwind CSS для интерфейса настроек. [1] - Бэкенд: Rust, отвечающий за интеграцию с ОС, аудиозахват (через `cpal`), глобальные хоткеи (`rdev`) и запуск ML‑инференса. [1] - Всё упаковано в Tauri‑приложение, что облегчает кроссплатформенную сборку и интеграцию с десктопом. [1] ## Платформы и требования - Поддерживаются: macOS (Intel и Apple Silicon), Windows x64, Linux x64 (рекомендованы Ubuntu 22.04/24.04). [1] - Для Whisper желательно наличие GPU (Intel/AMD/NVIDIA на Windows и Linux, M‑серия или Intel‑Mac на macOS), для Parakeet достаточно современного CPU уровня Intel Skylake или аналогичного AMD, где заявлена производительность около 5× real‑time на среднем железе. [1] ## Режим отладки и разработка - Встроен debug‑режим: Cmd+Shift+D на macOS и Ctrl+Shift+D на Windows/Linux. [1] - Для локальной разработки предлагается стандартный цикл: форк репозитория, ветка с фичей, сборка по инструкциям в BUILD.md, тестирование и PR. [1] ## Лицензия, сайт и ссылки - Лицензия: MIT (см. файл LICENSE в репозитории). [1] - Официальный сайт проекта с демо и документацией: [1] - Репозиторий: https://github.com/cjpais/Handy. [1] Цитаты: [1] cjpais/Handy: A free, open source, and extensible speech ... - GitHub
Аяксий's avatar
Аяксий 1 month ago
Целый день Пелефон не коннектиться в Бастион. Причем ни через Тор ни вне его. image
Аяксий's avatar
Аяксий 1 month ago
Бастион пал, гитхаб глючит. Это только у меня на 2х провайдерах интернета так или опять где -нибудь центральный сервер накрылся? image Либо это мои провайдеры блокировку начали, но я не в Рашке.
Аяксий's avatar
Аяксий 1 month ago
Blades — это мультимодальная платформа для ИИ-агентов на языке Go, поддерживающая пользовательские модели, инструменты, память, промежуточное ПО и т.д. Она подходит для многоэтапных диалогов, цепочек рассуждений и структурированного вывода, а также для других сценариев использования. 🐱 GitHub.
Аяксий's avatar
Аяксий 1 month ago
Как же раздражают все эти морды Ностра . У каждой свой функционал, но и дизайн тож авторский, кто куда... Ладно, короче идея сети требует голосования: прототип и Альфа -веомия должна быть в Андроид, по максимальному количеству юзеров и их времени в сети. Лайк- "за", дизлайк -"против" + коммент.
Аяксий's avatar
Аяксий 1 month ago
Вообще я заметил что мне лично сложно переключаться на людей и на ИИ. ИИ туп и соответственно ему нужно все разжёвывать, а с людьми наоборот чувствую себя тормозом. У себя заметил что пытаюсь всё время подогнать все под общий язык, но это неправильно так как : очеловечиваешь подсознательно ИИ и наоборот людей автоматизируешь. Эх! Простите братцы, мы живём в эпоху трансформаций и поэтому не знаем что творим ,... Ну это я так, жалуюсь :) А у вас как?
Аяксий's avatar
Аяксий 1 month ago
Короче aichat, aider это блин хардкор кодинг и кодинг агентов и моделей, там все настолько кастомно что модель без четко прописанного сценария не может сделать более 1 шага. Я конечно извращенец, но не мазохист. Альтернатива gemini cli, codex cli и подобных -это crush - прямая ссылка на crush репозиторий мульти провайдерного cli Прямая ссылка на репозиторий Crush (multi-provider CLI агент для терминала): [1][2]. Crush — это современный мульти-провайдерный CLI-инструмент для работы с ИИ-моделями прямо из терминала, поддерживающий OpenAI, Anthropic, Gemini, Groq, OpenRouter, Bedrock, Azure и локальные движки с OpenAI-совместимым API[3][1][2]. Цитаты: [1] charmbracelet/crush: The glamourous AI coding agent for ... [2] Crush CLI: FASTEST AI Coder + Opensource! BYE Gemini ... [3] Crush CLI: AI coding agent for your terminal (multi‑model ... [4] Dynamic CLI providers · Issue #724 · charmbracelet/crush [5] Run crush from the cli (no TUI ) so it can be used as a non- ... [6] should be an easy way to add mcp servers to crush like ... [7] Add auth provider for ChatGPT login through Codex-CLI [8] I built a CLI tool to extract folders or files from GitHub repos ... https://www.reddit.com/r/commandline/comments/1lqmot3/i_built_a_cli_tool_to_extract_folders_or_files/ [9] How to determine the URL that a local Git repository ... [10] Using the Github cli with Multiple Repos
Аяксий's avatar
Аяксий 1 month ago
# Обзор проекта run: Универсальный запускатель кода на множестве языков программирования В мире разработки ПО часто приходится переключаться между разными языками программирования, что иногда превращается в настоящую головную боль из-за необходимости устанавливать отдельные компиляторы, интерпретаторы и инструменты сборки. Представьте себе инструмент, который объединяет всё это в один простой CLI-интерфейс, позволяя запускать код на более чем 25 языках без лишних хлопот. Именно таким является **run** — универсальный multi-language runner и умный REPL (Read-Eval-Print Loop), написанный на языке Rust. Этот проект, созданный разработчиком под ником Esubaalew, стал настоящим спасением для тех, кто ценит скорость и удобство в повседневной работе. ## Что такое run и зачем он нужен? Run — это не просто утилита для запуска кода, а полноценная платформа для экспериментов с программированием. Его основная цель — упростить рабочий процесс для самых разных пользователей. Новички могут сразу погрузиться в кодинг, не тратя время на настройку окружения. Студенты и преподаватели оценят возможность демонстрировать разные парадигмы программирования через единый интерфейс. Разработчики используют его для быстрого прототипирования идей или тестирования алгоритмов, а инженеры DevOps — для создания и проверки скриптов автоматизации. В итоге run превращает хаос из инструментов в гармоничный workflow, где всё под рукой. Проект построен на Rust, что обеспечивает высокую производительность, надёжность и кросс-платформенность. Он работает на Windows, macOS и Linux, выдавая нативные бинарники без лишних зависимостей. Сердце инструмента — это поддержка более 25 языков, разделённых на категории: скриптовые (Python, JavaScript, Ruby, Bash, Lua, Perl, PHP, Groovy), компилируемые (Rust, Go, C, C++, Java, C#, Swift, Kotlin, Crystal, Zig, Nim), типизированные и функциональные (TypeScript, Haskell, Elixir, Julia), а также специализированные (R, Dart). Для каждого языка run полагается на стандартные инструменты из PATH, такие как python3 или gcc, так что никаких дополнительных установок не требуется — если у вас уже есть компилятор, он заработает. ## Ключевые возможности: от простоты до мощности Одна из главных фишек run — это единая команда для запуска кода в любом поддерживаемом языке. Забудьте о длинных командах вроде "python http://script.py" или "go run main.go": теперь достаточно `run python "print('hello')"` или `run --lang go --code "fmt.Println(\"hi\")"`. Автоматическое определение языка по расширению файла делает процесс ещё проще — просто укажите путь к файлу, и инструмент сам разберётся. Особого внимания заслуживает persistent REPL: сессия сохраняет состояние, включая переменные, что позволяет работать в интерактивном режиме без потери контекста. Войдите в REPL командой `run`, и вы получите доступ к командам вроде `:help` для справки или переключению языков (`:py` для Python, `:go` для Go, `:c` для C). Это идеально для экспериментов: напишите переменную в одной сессии, и она будет доступна в следующей команде. Run также поддерживает пайпинг из stdin, что полезно для обработки данных из внешних источников. Например, `echo "world" | run go --code '...'` — и вот уже ваш Go-код читает ввод и выводит "Hello, world!". Гибкий синтаксис команд позволяет комбинировать опции: `--lang` для явного указания языка, `--code` для фрагментов кода или просто путь к файлу для полного скрипта. В репозитории есть целая директория examples/, где собраны готовые демо для каждого языка — от простого "hello world" до более сложных сценариев вроде прогресс-баров. Это не только помогает разобраться, но и служит основой для ваших собственных тестов. Документация размещена на отдельном сайте http://run.esubaalew.et, где подробно описаны все нюансы. ## Установка: быстро и без боли Установить run проще простого, и вариантов хватает для любой платформы. Если у вас есть Rust, используйте `cargo install run-kit` — и через пару минут инструмент готов. На macOS подойдёт Homebrew: `brew install --formula https://github.com/Esubaalew/run/releases/latest/download/homebrew-run.rb`. Для Debian/Ubuntu скачайте .deb-пакет из релизов на GitHub (с проверкой SHA256 для безопасности). Windows-пользователи могут взять Scoop: `scoop install https://github.com/Esubaalew/run/releases/latest/download/run-scoop.json`. Есть даже универсальный скрипт для macOS и Linux: `curl -fsSLO https://raw.githubusercontent.com/Esubaalew/run/master/scripts/install.sh && chmod +x http://install.sh && ./http://install.sh`. А если хочется покопаться в исходниках, клонируйте репозиторий и соберите через `cargo install --path .` (требует Rust 1.70+). Текущая версия — v0.2.0, и проект активно развивается: релизы включают бинарники для Intel и Apple Silicon на macOS, Linux и Windows. Лицензия Apache 2.0 позволяет свободно использовать и модифицировать код. ## Структура репозитория: всё на своих местах Репозиторий организован лаконично и логично. Директория examples/ — это сокровищница: поддиректории по языкам с файлами вроде для Rust или http://counter.py для Python, плюс ожидаемые выводы для проверки. Scripts/ содержит установочный скрипт http://install.sh. Основной код спрятан в стандартных Rust-файлах вроде Cargo.toml, а лицензия и README доступны сразу на главной странице. Нет лишнего мусора — всё заточено под удобство. Автор, Esubaalew, ведёт проект с энтузиазмом: сайт http://run.esubaalew.et дополняет GitHub подробными гайдами. Пока что issues минимальны, что говорит о стабильности, но сообщество может расти — проект заслуживает большего внимания. ## Итог: run как must-have для полиглотов Run — это не просто инструмент, а революция в подходе к multi-language разработке. Он снимает барьеры установки, ускоряет прототипирование и делает обучение программированию увлекательным процессом. Если вы устали от раздробленного toolchain'а или просто хотите поэкспериментировать с новыми языками, скачайте run прямо сейчас. В эпоху, когда код пишут на всём подряд, такой универсальный помощник — настоящая находка. Проект открыт для вклада, так что если у вас есть идеи, добро пожаловать в комьюнити! Источник: [GitHub-репозиторий Esubaalew/run] (https://github.com/Esubaalew/run) (по состоянию на ноябрь 2025 года). #программирование, #rust, #cli, #opensors
Аяксий's avatar
Аяксий 1 month ago
### Godot + WebRTC + Nostr: Полная интеграция для устойчивой P2P-сети Фокус на Godot делает эту комбинацию идеальной для децентрализованных игр или приложений: WebRTC обеспечивает NAT-traversal и низколатентный P2P (пробой ~90% случаев через STUN/TURN), а Nostr — resilient signaling без центрального сервера (relay-based, устойчив к блокировкам). Готового плагина "из коробки" нет, но реализация проста: используйте встроенный WebRTC Godot + кастомный Nostr-клиент в GDScript (WebSocket к релеям) или GDExtension (для крипто). Это даёт сеть, где блокировка relay — не проблема (переключайтесь на 100+ публичных, Tor/VPN), а P2P-трафик direct/E2E. **Ключевые преимущества в Godot**: - **NAT/обход**: WebRTC's ICE автоматом (STUN: stun.l.google.com:19302; TURN: openrelay.metered.ca). Работает HTML5/native (Android/iOS с webrtc-native). - **Устойчивость**: Nostr NIP-04 (DM) для SDP/ICE-обмена — шифровано, ephemeral (не хранится). Блокировка? Outbox: рассылайте по 10+ relay (wss://relay.damus.io, nostr.wine). NIP-29 для приватных комнат. - **Масштаб**: Mesh до 8-16 peers; fallback TURN. Оффлайн: буферизуйте события локально. ### Шаги реализации в Godot 4.2+ 1. **Подготовка WebRTC**: - Native: Скачайте webrtc-native ( https://github.com/godotengine/webrtc-native), скомпилируйте/скачайте bin для платформ, добавьте в проект как GDExtension. - Включите в проект: Project Settings > Plugins > WebRTC (авто для HTML5). - STUN/TURN: `peer_connection.set_ice_servers([{"urls": ["stun:stun.l.google.com:19302", "turn:openrelay.metered.ca:80?username=openrelayproject&credential=openrelayproject"], "username": "...", "credential": "..."}])`. 2. **Nostr-клиент в GDScript (простой, без GDExtension)**: - Генерация ключей: Используйте `Crypto` (Godot's secp256k1 для Nostr). Пример: `var crypto = Crypto.new(); var key = crypto.generate_rsa(2048);` — но для Nostr лучше внешняя lib или JS-interop (HTML5). Для прототипа: hardcode или импорт nsec/npub. - Подключение к relay: `var ws = WebSocketPeer.new(); ws.connect_to_url("wss://relay.damus.io");`. - Events: NIP-01 (base), NIP-04 (DM для signaling). Сериализуйте SDP как JSON-event: `{kind:4, content: encrypted_sdp, pubkey: target_pub, tags:[["p", target_pub]]}`. Подписывайте (внешний signer или GDExtension). - Мульти-relay: Array релеев, рассылайте/поллинг параллельно. 3. **Signaling flow**: - Peer A: Создаёт offer (`peer.create_offer()`), сериализует SDP + ICE (`ice_candidate_created`), отправляет как NIP-04 DM в Nostr (event на relay). - Relay: DM доставляется Peer B (фильтр `["kinds":[4], "p":my_pub]`). - Peer B: `peer.set_remote_description(sdp)`, answer, back DM. - ICE: Кандидаты в отдельных DM или bundled. - Connect: `DataChannel` open → RPC/gossip. 4. **High-Level MultiplayerPeer**: - `multiplayer.multiplayer_peer = WebRTCMultiplayerPeer.new()`. - `multiplayer_peer.create_client(); multiplayer_peer.initialize("room_id")` — но signaling кастом через Nostr. **Псевдокод (NostrSignaling.gd)**: ```gdscript # NostrSignaling.gd (autoload/singleton) extends Node var relays = ["wss://relay.damus.io", "wss://nostr.wine", "wss://relay.nostr.band"] var websockets: Array[WebSocketPeer] = [] var my_keys = {"priv": "nsec1...", "pub": "npub1..."} # Генерация/импорт var peer: WebRTCPeerConnection var data_channel: WebRTCDataChannel var target_pub: String # npub для матча signal connected() func _ready(): peer = WebRTCPeerConnection.new() peer.initialize({"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}]}) peer.session_description_created.connect(_on_sdp) peer.ice_candidate_created.connect(_on_ice) data_channel = peer.create_data_channel("game", {"id": 1, "negotiated": true}) data_channel.ready_state_changed.connect(_on_channel_ready) for relay in relays: var ws = WebSocketPeer.new() ws.connect_to_url(relay) ws.data_received.connect(_on_nostr_msg.bind(ws)) websockets.append(ws) func host_game(target: String): target_pub = target peer.create_offer() func join_game(target: String): target_pub = target # Poll DM от target func _on_sdp(type: String, sdp: String): var event = { "kind": 4, # NIP-04 DM "content": _encrypt_nip04(sdp, target_pub), # Зашифровать "tags": [["p", target_pub]] } event = _sign_event(event, my_keys.priv) _publish_event(event) func _on_ice(mid: String, index: int, sdp: String): # Аналогично, отдельный event или bundle в DM func _on_nostr_msg(buffer: PackedByteArray, ws): var msg = JSON.parse_string(buffer.get_string_from_utf8()) if msg.type == "EVENT" and msg.event.kind == 4 and msg.event.pubkey == target_pub: var decrypted = _decrypt_nip04(msg.event.content, my_keys.priv) if decrypted.starts_with("offer:"): peer.set_remote_description(decrypted.substr(6)) # Handle answer/ice func _on_channel_ready(state): if state == WebRTCDataChannel.STATE_OPEN: connected.emit() # Заглушки: _encrypt_nip04, _sign_event (реализуйте через Crypto или GDExtension с secp256k1/libsodium) func _publish_event(event): ... # Отправить на все ws ``` **Крипто (NIP-04/подпись)**: Godot Crypto слаб для secp256k1 — сделайте GDExtension (C++ с libsecp256k1). Пример: godot-cpp + `schnorr_sign`. Или JS-lib в HTML5 (nostr-tools). ### Готовые решения/стартеры для Godot - **godot-matcha**: P2P WebRTC на WebTorrent-trackers (сигнализация как torrent). **Prepared Nostr integration** — форкните и доработайте ( https://github.com/search?q=godot-matcha). Идеально: mesh-комнаты по hash, fallback Nostr. - **Nostr Game Engine (NGE)**: WebRTC + Nostr signaling для игр. Не чистый Godot, но код JS/TS — портируйте в GDScript ( https://ngengine.org/docs/network). Low-latency после ICE. - **WebRTC Signaling Demo**: Официальный Godot ( https://github.com/godotengine/godot-demo-projects/tree/master/networking/webrtc_signaling). Замените WS на Nostr DM. - **SnakeVersusWebRTC**: P2P-игра демо ( https://github.com/henriquelalves/SnakeVersusWebRTC). Добавьте Nostr. - **webrtc-native**: Обязательно ( https://github.com/godotengine/webrtc-native). **Тестирование**: Запустите 2 Godot-инстанса, генерируйте npub, матчинг по DM. Latency: signaling ~1-3с (relay), P2P <100мс. Для блокировок: NIP-46 (signers), Tor-relays. Это работает — прототип за день. Если нужен полный проект/репо или GDExtension для крипто, уточните! С Уважением, Грок.
Аяксий's avatar
Аяксий 1 month ago
### Описание Scuttlebutt Secure Scuttlebutt (SSB), или просто Scuttlebutt, — это децентрализованный протокол peer-to-peer коммуникаций, mesh-сеть и экосистема для само-хостинга социальной сети, где каждый пользователь самостоятельно хостит свой контент на устройстве. В основе лежит база данных для неизменяемых (append-only) фидов сообщений, которые невозможно подделать, поскольку обновления возможны только от владельца фида. Протокол моделирует реальные социальные взаимодействия через механизм "сплетен" (gossip protocol), синхронизируя криптографически верифицированные фиды между узлами без центральных серверов. SSB ориентирован на оффлайн-работу: данные реплицируются локально и обмениваются при встречах узлов (например, по Wi-Fi или Bluetooth), не требуя постоянного интернета или реального времени, что делает его устойчивым к цензуре и отключениям. Идентичность пользователя — это криптографическая пара ключей, а социальная сеть строится на подписках на фиды друзей, с поддержкой сообщений, постов, чатов и даже Git-репозиториев. ### Реализация Реализация SSB строится вокруг создания, верификации и репликации фидов: пользователь генерирует фиды сообщений, подписывает их приватным ключом, а публичный ключ служит идентификатором. Синхронизация происходит через gossip: узлы обмениваются обновлениями фидов по запросу, используя эффективные алгоритмы вроде Plumtree для multicast-деревьев, чтобы минимизировать трафик. Криптография обеспечивает неизменяемость (Ed25519 для подписей), аутентификацию (Secret Handshake для безопасных каналов) и шифрование (NaCl/libsodium для метаданных и контента). RPC-команды (muxrpc) позволяют взаимодействовать с фидами, а репликация оптимизирована для p2p: узлы хранят только релевантные данные (свои и друзей), с lazy-push для эффективности. Основная логика реализована в JavaScript, с фокусом на модульность: библиотеки для фидов, индексации и сетевого стека. ### Технические требования Технические требования SSB минимальны, поскольку это легковесный p2p-протокол для локального хранения и обмена. На hardware: любой современный компьютер или мобильное устройство с 1 ГБ RAM и 100 МБ свободного места для базы (растет с фолловерами, ~1-10 МБ на 1000 постов). Нет жестких лимитов CPU/GPU, но репликация больших сетей требует стабильного соединения. Software: Node.js версии 10+ (рекомендуется LTS), ОС — Linux/macOS/Windows/Android/iOS через эмуляцию. Для полной функциональности нужен Tor-daemon (если используется onion), без интернета работает оффлайн. Нет зависимости от облаков; установка через npm, без pip или компиляции. Поддержка IPv6, но IPv4 по умолчанию; порт 8008 для репликации. ### Стек технологий Стек SSB преимущественно JavaScript/Node.js: core — ssb-server для запуска узла, ssb-db/ssb-db2 для хранения фидов (LevelDB-подобная база). Крипто: libsodium (Ed25519, XSalsa20). Сеть: TCP/UDP для muxrpc, Secret Handshake для TLS-like каналов. Дополнительно: pull-stream для асинхронных потоков, multiformats для адресов (ssb://). Для UI — Electron/React в клиентах вроде Patchwork. Нет фреймворков вроде Django; фокус на модулях npm (ssb-ref, ssb-ebt). Для мобильных — React Native в Manyverse. ### Интеграция с другими сетями SSB спроектирован как изолированный p2p-протокол, но поддерживает мосты и прокси для других сетей. С Tor: встроенная поддержка — узлы могут релеить сообщения через onion-сеть, если запущен TOR-daemon; это обеспечивает анонимность и доступ к .onion-эндпоинтам без изменения кода, просто настройка порта 9050. С Nostr: прямой интеграции нет, но есть сравнения и миграции — Nostr проще в онбординге (relay-based vs. gossip), некоторые проекты (как Nos) переходят с SSB на Nostr для лучшей масштабируемости, с возможностью импорта фидов через скрипты. С Matrix: отсутствует нативная интеграция, хотя оба децентрализованы (Matrix — federated серверы, SSB — чистый p2p); возможны мосты через кастомные боты или ReP2P-расширения для P2P-улучшения Matrix, но SSB остается отдельным для оффлайн-сценариев. С Simplex: нет упоминаний об интеграции — Simplex фокусируется на one-time адресах без ID, в отличие от ключевых фидов SSB; потенциал в прокси для анонимного обмена, но без готовых решений. ### Готовые решения со ссылками на репозитории Готовые решения SSB включают серверы, клиенты и библиотеки на GitHub. Основной сервер — ssb-server от ssbc (https://github.com/ssbc/ssb-server), но рекомендуется ssb-db2 для новой БД (https://github.com/ssbc/ssb-db2) — замена старой ssb-db с лучшей производительностью и индексацией. Библиотека для фидов и репликации — secure-scuttlebutt (https://github.com/staltz/secure-scuttlebutt), с инструментами для создания/верификации сообщений. Scuttlebot как gossip-сервер (https://github.com/marcbachmann/scuttlebot) для базовой репликации. Организация ssbc содержит общие libs (https://github.com/ssbc), включая sips для спецификаций протокола (https://github.com/ssbc/sips). Клиенты: Patchwork для десктопа (https://github.com/ssbc/patchwork) — UI для постов/чатов; Manyverse для мобильных (https://github.com/staltz/manyverse), оффлайн-дружественный. Туториал для новичков — ssb-tutorial (https://github.com/don-smith/ssb-tutorial). Для Git-интеграции — git-ssb (https://github.com/ssb-git/git-ssb). Все решения open-source под MIT/Apache, устанавливаются npm install.
Аяксий's avatar
Аяксий 1 month ago
Тут такая идея родилась: Что бы вы сказали про Nostr-клиента, реализованного на Godot - игровом движке. Основные механики: При запуски приложения открывается игра :тетрис, пинбол, цивилизация, го или подобные со скрытой клавиатурой пароля. В принципе, на первый взгляд это игрушка . Но с пасхалкой. Набираете код, открывается соцсеть с сайтами, форумами, звонками и т.п. , также есть и релей (включается в настройках) или отдельный загрузочный файл. В клиенте есть : локальные заметки, форумы, чаты, контакты как и везде, но локальное хранилище запаролено и зашифровано. Прочитать извне эту папку, файлы невозможно а при неправильном наборе (3 раза) пароля или пароля - "сигналам" вся эта локальная база стирается безопасным алгоритмом (удаление-перезапись). В общем для "параноиков". Преимущества игрового движка : 1 )код под все ОС, 2) действительно игра. 3)локальные заметки , (аналог обсидиана) Жду отзывов, мнений, предложений.