Sael
▸ наследник MCP
Source-available протокол для общения AI-агентов с тулзами. Стриминг, серверная композиция, подписки и capability-безопасность — встроены в протокол, а не прикручены сверху. Совместим с MCP через adapter. Лицензия BUSL-1.1 — коммерческое использование по лицензии.

MCP — это REST. Sael — это real-time web.
Та же эволюция, что веб уже прошёл: от запрос-ответ к стримам и подпискам. AI-тулинг сейчас застрял в 2010-х.
▸ главный инсайт
В агентных системах дефицитный ресурс — это контекстное окно. MCP гоняет каждый промежуточный результат обратно через модель: каждый хоп стоит токенов, латентности и денег. Sael оставляет данные на сервере — модель один раз описывает план и получает ответ. Модель перестаёт быть сетью.
Почему MCP перестал тянуть
MCP — это JSON-RPC из 2010-х, натянутый на AI. Для desktop-app — норм. В production — рвётся по швам.
Что встроено в Sael
Канал WebSocket держится живым. Каждая возможность — часть протокола, а не SDK-обёртка.






Как это работает
Один живой канал. Компактные фреймы. Сервер исполняет цепочку и шлёт клиенту только финал.
▸ один INV описывает всю цепочку
→ INV { pipeline: [
{ tool: 'github.list_repos', input: { owner: 'anthropic' } },
{ filter: 'stars > 100' },
{ map: ['name'] },
{ tool: 'slack.notify', input_bind: { items: '$prev', channel: '#dev' } },
] }
← RES { output: { delivered: 2 }, cost: { compute_ms: 14 } } // один round-trip▸ parallel fan-out — N веток конкурентно на сервере
→ INV { pipeline: [
{ tool: 'data.fetch', input: { n: 20 } },
{ parallel: [
[ { tool: 'enrich.summary', input_bind: { data: '$prev' } } ],
[ { tool: 'enrich.sentiment', input_bind: { data: '$prev' } } ],
[ { tool: 'enrich.translate', input_bind: { data: '$prev' } } ],
] },
] }
← RES { output: [ /* 3 results, in order */ ] } // 1 round-trip, ветки параллельно6 независимых веток × 50 мс: MCP — 7 round-trips, ~312 мс (последовательно). Sael — 1 round-trip, ~53 мс (wall-clock = медленная ветка, не сумма).
Бенчмарк, не маркетинг
Эталонный Go-сервер Sael против spec-корректного MCP. Те же тулзы, тот же датасет, тот же транспорт (WebSocket). Считаем структуру протокола, а не железо.
Выигрыш растёт с глубиной агентного цикла и размером данных. На одиночном tool-вызове разницы в round-trips нет — Sael выигрывает на многошаговых задачах, где MCP гоняет промежуточные данные через клиента.
Код: MCP против Sael
▸ MCP — каждый шаг отдельным round-trip
// 1. List repos
const repos = await mcp.call(
'github.list_repos',
{ owner: 'anthropic' }
)
// 2. Filter client-side
const big = repos.filter(r => r.stars > 100)
// 3. Get names
const names = big.map(r => r.name)
// 4. Send to slack
await mcp.call('slack.notify', {
channel: '#dev',
items: names
})▸ Sael — вся цепочка за 1 round-trip
await ch.pipeline([
{ tool: 'github.list_repos',
input: { owner: 'anthropic' } },
{ filter: 'stars > 100' },
{ map: ['name'] },
{ tool: 'slack.notify',
input_bind: {
items: '$prev',
channel: '#dev'
} },
])MCP vs Sael — по пунктам
| Возможность | MCP | Sael |
|---|---|---|
| Стриминг | Костыль на SSE | Нативно, любой вызов |
| Композиция | Нет — цепляет клиент | Серверные pipeline |
| Параллельный fan-out | N последовательных вызовов | 1 вызов, ветки конкурентно |
| Подписки | Polling | First-class push |
| Delta-стриминг | Слать целиком | Merge-patch дельты |
| Сессия | Stateless | Живой канал + resume |
| Backpressure | Нет | Встроен в транспорт |
| Capability-безопасность | Всё или ничего | Подписанные per-tool гранты |
| Multi-agent | Не решено | Федерация в протоколе |
| Транспорт | stdio / HTTP+SSE | WebSocket |
| Формат фреймов | Только JSON | JSON или MessagePack |
| Латентность N шагов | N round-trips | 1 round-trip |
Где Sael выигрывает
Экосистема
Живой demo
Прямо в браузере. Жми кнопки — они идут через WebSocket к живому Sael-серверу на unyly.org.
▸ кликни «подключиться» — увидишь живые v0.2 frames
▸ endpoint: wss://unyly.org/quark/ws
FAQ
Sael совместим с MCP?+
Да. Любой существующий MCP-сервер работает через Sael-adapter без изменений кода — стриминг, композицию и подписки подключаешь постепенно.
Нужно ли переписывать MCP-серверы?+
Нет. Адаптер говорит с твоим сервером по MCP, а с клиентом — по Sael. Переписываешь тулзу только когда хочешь нативный стриминг или композицию.
Какой транспорт у Sael?+
WebSocket. Двунаправленный стриминг, работает в любом браузере и на сервере, переживает смену сети на мобильном — в отличие от stdio или HTTP+SSE.
За счёт чего Sael быстрее MCP?+
Серверная композиция схлопывает N-шаговый workflow в один round-trip, а нативный стриминг отдаёт первый результат сразу. Измерено: −89% round-trips, −94% трафика, 10× быстрее до первого ответа на многошаговых цепочках.
Sael готов к production?+
v1.0 stable: подписанные capability-токены, session resume, heartbeat, cost-tracking, W3C-трейсинг и федерация. Эталонный Go-сервер работает и питает demo на этой странице.
Какая лицензия?+
Спецификация source-available под BUSL-1.1; текст спеки — CC BY-NC-ND. Есть SDK на TypeScript и Go. Коммерческая лицензия — по запросу.