TypeScript 6.0 · V8 14.9 · 103MB binary · Node-compatible
TypeScript нативно
Node.js совместим
Secure by default
JSX/TSX встроен
npm registry
Deno.serve()

Сравнение runtime реальные цифры

Параметр
🦕 Deno 2.8
🥟 Bun 1.2
🟢 Node 20
Binary размер
103 MB
~85 MB лучший
не бинарь
RAM baseline
~60 MB
~30 MB лучший
~36 MB
TypeScript
✅ нативно
✅ нативно
❌ нужен tsc
JSX/TSX
✅ нативно
✅ нативно
❌ Babel/esbuild
npm совместимость
✅ node: + npm: imports
✅ полная
✅ родная
Встроенная БД
✅ Deno.Kv (SQLite)
✅ bun:sqlite
❌ внешний модуль
HTTP сервер
✅ Deno.serve()
✅ Bun.serve()
http module
Compile → exe
✅ deno compile
✅ bun build
❌ нет
Security model
✅ --allow-* flags лучший
❌ нет sandbox
❌ нет sandbox
Тест-раннер
✅ встроен
✅ встроен
jest/vitest
Web Workers
✅ Web API
✅ Web API
worker_threads
Скорость HTTP
~120k rps
~180k rps лучший
~80k rps
Jupyter Kernel
✅ deno jupyter

Что делает Deno уникальным

🔒
Security by Default
Единственный runtime с гранулярными разрешениями. Идеально для агентов — видно что разрешено.
deno run --allow-net=api.openai.com \
--allow-read=/data \
--deny-write \
agent.ts
📦
deno compile → exe
Компилирует TypeScript в единый статический бинарник. Деплой = один файл, как Go.
deno compile --allow-net \
--target x86_64-unknown-linux-gnu \
--output ui-director main.ts
# → 1 файл, работает без Deno
🌐
Deno.serve() нативно
HTTP сервер без импортов, с TypeScript, Request/Response Web API. Именно то что нужно relay-боту.
Deno.serve({port: 8080},
async (req: Request) => {
const body = await req.json();
return Response.json({ok: true});
});
🗄️
Deno KV (встроенная БД)
SQLite под капотом, key-value хранилище без npm. Для relay-бота: сессии, rate limits, кэш.
const kv = await Deno.openKv();
await kv.set(["chat", chatId], history);
const h = await kv.get(["chat", chatId]);
📓
Jupyter Kernel
Уникальная фича — Deno как Jupyter kernel. TypeScript ноутбуки для анализа данных / прототипов агентов.
deno jupyter --install
# TypeScript в Jupyter cells
# Работает в VS Code, JupyterLab
# Идеально для DevDir R&D
JSX без build step
TSX/JSX запускается напрямую. UI-директор может проверить компонент мгновенно без npm install.
deno run --allow-net Component.tsx
// Нет npm install
// Нет webpack/vite
// Нет tsconfig.json

Анализ: Deno для DevDir и UI-директора

🎨
UI-директор
Генерирует React/HTML → рендерит → скриншот → Telegram. JSX нативно, Playwright через npm:playwright.
✅ ОТЛИЧНЫЙ ФИТ
📡
Telegram relay-бот
Принять сообщение → metadata → kara → ответ. Deno.serve() + fetch + Deno.Kv для сессий. Но Bun быстрее и легче.
⚠️ РАБОТАЕТ, но Go/Bun лучше
🏗️
DevDir (orchestrator)
Думает, планирует, архитектурные решения — runtime не важен. DevDir = claude -p + промпт. Deno ничего не добавляет к качеству мышления.
❌ НЕ НУЖЕН для мышления
🧪
Тестировщик / CI агент
deno test встроен, deno compile → один бинарник. Запускает тесты, парсит результат, шлёт в TG. Security флаги — чётко ограничивает доступ.
✅ ХОРОШИЙ ФИТ
📊
R&D / прототипирование
Jupyter kernel — уникальная фича. TypeScript ноутбуки для анализа данных, прототипов агентной логики, без Python.
✅ УНИКАЛЬНАЯ ФИЧА
🔧
MCP сервер
jsr:@modelcontextprotocol/sdk — официальный MCP SDK есть в реестре Deno. Написать кастомный MCP-сервер проще чем на Python.
✅ ИНТЕРЕСНЫЙ ВАРИАНТ

Код: что реально выглядит иначе чем Node

UI-Director: render JSX → screenshotDeno TSX
// ui-director.ts — запуск: deno run --allow-all .
import { chromium } from "npm:playwright";
import { build } from "npm:esbuild";

export async function renderComponent(
  jsxPath: string, outPath: string
) {
  // 1. Bundle JSX без npm install
  const { outputFiles } = await build({
    entryPoints: [jsxPath], bundle: true,
    format: "esm", write: false,
    jsx: "automatic"
  });

  // 2. Spin up preview server (1 строка!)
  const server = Deno.serve({ port: 0 }, (req) =>
    new Response(html(outputFiles[0].text), {
      headers: { "content-type": "text/html" }
    })
  );

  // 3. Screenshot
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.goto(`http://localhost:${server.addr.port}`);
  await page.screenshot({ path: outPath, fullPage: true });
  await browser.close(); server.shutdown();
}
MCP Server на Deno (кастомный)Deno TypeScript
// mcp-anthill.ts — MCP сервер для Claude
import { McpServer } from
  "jsr:@modelcontextprotocol/sdk/server/mcp";
import { StdioServerTransport } from
  "jsr:@modelcontextprotocol/sdk/server/stdio";

const server = new McpServer({
  name: "anthill-deno", version: "1.0"
});

// Инструмент: поставить A2A задачу
server.tool("a2a_submit", {
  agent: { type: "string" },
  task:  { type: "string" }
}, async ({ agent, task }) => {
  const kv = await Deno.openKv();
  const id = crypto.randomUUID();
  await kv.set(["a2a", id], {
    agent, task, state: "submitted",
    ts: Date.now()
  });
  return { content: [{
    type: "text",
    text: `Task ${id} → ${agent}`
  }]};
});

const transport = new StdioServerTransport();
await server.connect(transport);
⚖️ Архитектурный вердикт: Deno в твоей экосистеме
✅ ГДЕ ИСПОЛЬЗОВАТЬ
UI-директор (JSX render → screenshot → Telegram) — Deno + Playwright без build step. Кастомные MCP серверы (jsr:@modelcontextprotocol). Тестировщик (deno test встроен, compile → 1 бинарник). Jupyter R&D для прототипирования агентов.
❌ ГДЕ НЕ ИСПОЛЬЗОВАТЬ
DevDir/Сметчик — runtime не влияет на качество мышления, claude -p лучше. Telegram relay (Go легче, 8MB vs 103MB). FinDir/Orchestrator — Python + hermes, там 80 инструментов.
💡 ГЛАВНОЕ ПРЕИМУЩЕСТВО vs Bun
Security model (--allow-*) — для агентов это важно: точно видишь что разрешено. deno compile в единый exe. Jupyter kernel уникален. JSX runtime для проверки UI без сборки.
📏 РАЗМЕР В КОНТЕКСТЕ
Deno binary 103MB — это больше чем Bun (~85MB) и Node baseline (36MB). НО: deno compile создаёт standalone exe который включает runtime. Для UI-директора: 1 файл деплой vs npm + node + конфиги.