ТЕХНОЛОГИИ / ОТКРЫТЫЙ КОД

Обычные детали. Собраны один раз.

Каждому проекту нужен бэкенд, и ни одному не стоит его строить. Части, необходимые компании, пишутся один раз как обвязка с открытым кодом на Rust. Проект выбирает нужные модули, соединяет их в одном файле и поставляется как один воркер без состояния с собственной базой данных.

Фабрика в цифрах

venture
2317 валидация · 1 прототип · 5 запуск
на стеке
17из 23 venture, общие части
open source
118 MIT · 3 Apache-2.0
работают на harness
1818 в работе сегодня · 1 запланировано
записи о решениях
30в репозитории harness

КАК СТРОИТСЯ ПРОЕКТ

Один файл называет компанию.

Бэкенд venture — это небольшой проект на Rust. В нём перечислены используемые модули, адаптеры, которые связывают их с внешним миром, а также собственное имя и домен venture. Всё остальное — harness. После сборки получается один worker, содержащий ровно эти модули и ничего больше.

Если модулю нужно то, чего среда выполнения предоставить не может, или два модуля претендуют на одну таблицу, сборка падает до любого деплоя. Неверно настроенный проект не может попасть в продакшен.

Harness::builder() .venture(Venture::new("factory0", "factory0.ventures") .cors_origins(["https://factory0.ventures"])) .module(EmailSignup::new().double_opt_in(true)) .module(Waitlist::new() .products(["kontinuum", "undercover-rockstars"])) .runtime(Cloudflare::new() .db("DB") .mailer(Resend::from_env()) .captcha(Turnstile::from_env())) .build()?
  1. Шаг 1

    Назовите его

    Venture, его домен, модули и адаптеры, которые за них отвечают. Один файл.

  2. Шаг 2

    Соберите его

    Сборка отклоняет модуль, чей порт рантайм не предоставляет, и два модуля, претендующих на одну таблицу или маршрут.

  3. Шаг 3

    Запустите его

    Один stateless worker, содержащий ровно перечисленные модули, со своей базой данных, секретами и доменом.

СЛОИ

Шесть слоёв: от рантайма до продуктов.

Читайте снизу вверх: где выполняется код, harness, из которого компилируется каждый бэкенд, бэкенды, общие продукты, агенты, управляющие компанией, и самостоятельные venture. Сплошные чипы — в работе сегодня, чипы с контуром — в harness, пунктирные — запланированы.

01РАНТАЙМ

Cloudflare Workers, скомпилированные в WebAssembly

Где работает каждый venture worker. Данные и почта находятся рядом, и тот же код может работать на сервере.

Workers (wasm32)База данных D1Почта ResendKVTurnstileОграничение частоты запросовPostgres, нативный рантайм
02HARNESS

Cratefield: открытое ядро на Rust

Порты, маршрутизатор и модули. Модуль запрашивает порт; адаптер отвечает.

Cratefield

Ports

DatabaseMailerCaptchaRateLimiterKeyValueSigner

Модули

email-signupлист ожидания
03БЭКЕНДЫ

Один worker и одна база данных на venture

Каждый venture собирается из harness и разворачивается отдельно. Сегодня на harness в работе:

ColonizerFindsYou.workSupportGeniuspromptdecodeGroove GuruPosPluginKeep ShippingOwlpostBloodrankratecla.imSealbinrelease.showLiving BrainShoalTokkerLedgersGhostwritin'SqueezinYoginini
04ПОЛКИ

Стек: продукты, к которым подключается каждый venture

Общие продукты, расставленные по полкам в зависимости от назначения. Каждый — компания со своими клиентами.

Выпуск и эксплуатация

  • VibeCaddie
  • Keep Shipping
  • release.show
  • Shoal

Коммуникация

  • Owlpost
  • Squeezin

Безопасность

  • promptdecode
  • Sealbin

Клиенты

  • SupportGenius
  • PosPlugin
  • Ledgers

Контент и ИИ

  • Kontinuum
  • Living Brain
  • Tokker
  • Ghostwritin'
05АГЕНТЫ

Пять слоёв, по одному агенту на каждую функцию

Каждая функция в каждом слое — это агент. Colonizer запускает кодинг-агентов для слоя сборки.

  • ПОИСК3 агента
  • СБОРКА4 агента
  • ЭКСПЛУАТАЦИЯ4 агента
  • РАСПРОСТРАНЕНИЕ3 агента
  • ОБУЧЕНИЕ3 агента

Colonizer: кодинг-агенты, превращающие задачи GitHub в pull request’ы

06ПРОДУКТЫ

Самостоятельные venture

Venture вне стека. Они наследуют фундамент и ничего в него не добавляют.

Undercover RockstarsYogininiFindsYou.workGroove GuruBloodrankratecla.im

Шесть слоёв снизу вверх

  1. рантайм: Cloudflare Workers, скомпилированные в WebAssembly. Где работает каждый venture worker. Данные и почта находятся рядом, и тот же код может работать на сервере.
  2. harness: Cratefield: открытое ядро на Rust. Порты, маршрутизатор и модули. Модуль запрашивает порт; адаптер отвечает.
  3. бэкенды: Один worker и одна база данных на venture. Каждый venture собирается из harness и разворачивается отдельно. Сегодня на harness в работе:
  4. полки: Стек: продукты, к которым подключается каждый venture. Общие продукты, расставленные по полкам в зависимости от назначения. Каждый — компания со своими клиентами.
  5. агенты: Пять слоёв, по одному агенту на каждую функцию. Каждая функция в каждом слое — это агент. Colonizer запускает кодинг-агентов для слоя сборки.
  6. продукты: Самостоятельные venture. Venture вне стека. Они наследуют фундамент и ничего в него не добавляют.

ЗАПРОС ОТ НАЧАЛА ДО КОНЦА

Кто что делает, когда посетитель подписывается.

Нарисовано только по связям из реестра. Сплошная линия — в работе сегодня и передаёт трафик; пунктирная — запланировано, трафика пока нет.

  1. Visitor

    человек на сайте venture

  2. Venture worker

    один worker на venture, на harness Cratefield

    в работе
  3. Owlpost

    почта для венчуров

    в работе
  4. SupportGenius

    баг-репорты и поддержка

    в планах
  5. Colonizer

    кодинг-агенты на harness

    в работе
  6. Living Brain

    знания, сохраняющие то, что сработало

    в планах

Связи в этом потоке: посетитель к воркеру венчура, HTTPS-запрос: в работе. Воркер венчура к Owlpost, письмо-подтверждение: в работе. Воркер венчура к SupportGenius, ошибки становятся issue: в планах. SupportGenius к Living Brain, поддержка пополняет знания: в планах. Colonizer к Living Brain, агенты пополняют знания: в работе.

Подписка на venture и то, куда сообщение уходит дальше. Стрелки показывают направление каждой связи; статус взят из реестра.

МОДУЛИ ВИДЯТ ТОЛЬКО ПОРТЫ

Порты с одной стороны. Адаптеры — с другой.

Модуль запрашивает порт, а не вендора. Рантайм отвечает через адаптер. Адаптеры принадлежат самому harness; статус показывает, где живой venture использует адаптер сегодня.

  • Database

    таблицы, запросы и миграции

    • D1 (в работе)
    • Postgres (в harness)
    • SQLite (в harness)
  • Mailer

    транзакционная почта

    • Resend (в работе)
    • Owlpost (запланировано)
  • Captcha

    проверка на бота, при сбое отказывает

    • Turnstile (в harness)
  • KeyValue

    небольшое состояние «ключ-значение»

    • Cloudflare KV (в harness)
  • RateLimiter

    бюджеты запросов на ключ

    • Cloudflare Rate Limiting (в harness)
    • Redis (в harness)
  • Payments

    оплата и биллинг

    • Polar (запланировано)
    • Stripe (в harness)
  • TextModel

    ответ модели

    • Anthropic (в harness)
    • OpenAI-compatible (в harness)
  • Push

    уведомления на устройства

    • APNs (в harness)
    • FCM (в harness)
    • Web Push (в harness)
  • Signer

    подпись по ссылке на ключ

    • Turnkey (в harness)

Порты и их адаптеры: Database (таблицы, запросы и миграции): D1 (в работе), Postgres (в harness), SQLite (в harness). Mailer (транзакционная почта): Resend (в работе), Owlpost (запланировано). Captcha (проверка на бота, при сбое отказывает): Turnstile (в harness). KeyValue (небольшое состояние «ключ-значение»): Cloudflare KV (в harness). RateLimiter (бюджеты запросов на ключ): Cloudflare Rate Limiting (в harness), Redis (в harness). Payments (оплата и биллинг): Polar (запланировано), Stripe (в harness). TextModel (ответ модели): Anthropic (в harness), OpenAI-compatible (в harness). Push (уведомления на устройства): APNs (в harness), FCM (в harness), Web Push (в harness). Signer (подпись по ссылке на ключ): Turnkey (в harness).

ПРАВИЛА ДИЗАЙНА

Четыре правила, которых придерживается дизайн.

  • 01

    Модули видят только порты.

    Модуль запрашивает базу данных, почтовик, капчу. Он никогда не касается привязки Cloudflare или клиента поставщика. Отвечают адаптеры. Именно это единственное правило делает последующий уход с Cloudflare заменой одного крейта.

    модульMailerадаптер
  • 02

    Композиция происходит на этапе компиляции.

    Никакой загрузки плагинов, никакого сервиса реестра, никаких сюрпризов в рантайме. Worker содержит то, что перечислил venture, а компилятор — первый ревьюер. Модуль, исходный код которого не должен попадать в общую сборку, может работать как отдельный worker, смонтированный по тому же пути через service binding. Он всё равно собран в композицию, просто не в тот же бинарник.

    сборкаотказразвёртывание
  • 03

    Один проект — одна база данных.

    Между компаниями во время работы ничего не используется совместно. У каждой свой воркер, свои данные, свои секреты. Проект можно сохранить в резервную копию, перенести или закрыть, не затрагивая другие.

    workerбаза данныхсекреты
    workerбаза данныхсекреты
    workerбаза данныхсекреты

    общего рантайма нет

  • 04

    Без состояния по конструкции.

    После запроса не остаётся ничего, кроме записанного в базу данных. Ссылки подтверждения и отписки — подписанные токены, поэтому нет хранилища сессий, которое нужно запускать, масштабировать или которое может утечь.

    запросworkerбаза данных

    хранилища сессий нет

СТАТУС

Где находится harness.

Прогресс отслеживается в открытом виде: задачами и этапами.

  1. M0готово

    Фундамент

    Инструменты рабочего пространства, ядро, рантайм Cloudflare, адаптеры Resend и Turnstile, адаптер SQLite, CLI fz и набор для тестирования.

  2. M1готово

    Первые модули

    Email-подписка, лист ожидания, шаблоны, базовая защита и наблюдаемость.

  3. M2в процессе

    Первый venture в работе

    Публикация на crates.io, документация, версионирование контрактов и первый venture на собственном API-домене.

  4. M3готово

    Переносимость на собственный хостинг

    Адаптер Postgres, нативный рантайм, набор тестов на паритет для SQLite и Postgres, а также экспорт и импорт данных.

ДИЗАЙН
30 записей о решениях, все в репозитории
АРХИТЕКТУРА
12 разделов в документе об архитектуре
ПЕРВЫЕ МОДУЛИ
Email-подписка и лист ожидания, собрано
ОПУБЛИКОВАНО
Большинство крейтов опубликованы на crates.io. Раунд релизов ожидается.
УПРАВЛЯЕМЫЙ СЕРВИС
Ещё не построено. Плоскость управления спроектирована, но не написана.

Показатели harness: считаны из Cratefield/harness 2026-10-21.

БЕЗОПАСНОСТЬ И ПРИВАТНОСТЬ

Шесть слоёв между запросом и данными.

Каждый слой — это контроль, описанный в harness. Полный список — в его документах по безопасности и приватности.

  1. 01 · ПЕРИМЕТР

    Только собственные origin’ы venture

    Worker venture отвечает на собственном домене. CORS разрешает только origin’ы, которые перечислил venture, и каждый ответ возвращает идентификатор запроса.

  2. 02 · ЗАЩИТА ОТ ЗЛОУПОТРЕБЛЕНИЙ

    Боты и наплыв запросов

    Turnstile, при сбое отказывает. Лимиты частоты на каждую публичную запись через порт RateLimiter.

  3. 03 · ЗАПРОСЫ

    Ошибки и логи без адресов

    Ошибки — это problem+json с фиксированным slug для каждого случая. Одна структурированная строка на запрос, никогда не содержащая email-адреса.

  4. 04 · ТОКЕНЫ

    Ссылки, а не сессии

    Ссылки подтверждения и отписки подписаны HMAC, с ротацией ключей. Хранилища сессий, которое нужно запускать, масштабировать или которое может утечь, нет.

  5. 05 · СЕКРЕТЫ

    Конвертное шифрование

    Секреты шифруются конвертным способом и привязаны к своей строке. Локальный файловый провайдер порта KMS отказывается работать в продакшене.

  6. 06 · ИЗОЛЯЦИЯ

    Один venture, одна база данных

    Общего рантайма между компаниями нет. У каждой свой worker, свои данные и секреты, и её можно перенести или отключить отдельно.

ЧТО ОТКРЫТО

Заводской цех открыт. Рецепты — нет.

Harness, его рантайм, адаптеры и первые два модуля распространяются под лицензией MIT и разрабатываются открыто. Любой может построить на них бэкенд, и так делает каждый наш venture. Модули, в которых закодировано, как Factory Zero управляет своими компаниями, остаются закрытыми. Бэкенд каждого venture тоже закрыт.

Один из проектов — сама обвязка. Cratefield берёт обвязку с открытым кодом и добавляет вокруг неё управляемый слой: он разворачивал бы воркер, базу данных и секреты в вашем собственном аккаунте Cloudflare и затем обслуживал их. Обвязка реальна и работает; эта панель управления спроектирована, но ещё не написана. Именно здесь граница модулей оправдывает себя: клиент может собрать и развернуть собственный модуль, и его исходный код никогда не попадёт к нам.

Решения записываются по мере принятия. Документ архитектуры и записи о решениях лежат в репозитории, включая ту, где объяснено, почему первая попытка была выброшена.

Лицензии по всему стеку

Из 17 венчуров стека 11 открыты, у каждого публичный репозиторий под лицензией OSI. Полоса и плитки строятся по полю лицензии из реестра.

  • KontinuumMIT
  • CratefieldMIT
  • ColonizerMIT
  • SupportGeniusMIT
  • promptdecodeMIT
  • Keep ShippingMIT
  • LedgersMIT
  • Ghostwritin'MIT
  • SealbinApache-2.0
  • Living BrainApache-2.0
  • TokkerApache-2.0
  • VibeCaddieНе open source
  • PosPluginНе open source
  • OwlpostНе open source
  • release.showНе open source
  • ShoalНе open source
  • SqueezinНе open source

Венчуры стека по лицензии: Kontinuum: MIT. Cratefield: MIT. VibeCaddie: Не open source. Colonizer: MIT. SupportGenius: MIT. promptdecode: MIT. PosPlugin: Не open source. Keep Shipping: MIT. Owlpost: Не open source. Sealbin: Apache-2.0. release.show: Не open source. Living Brain: Apache-2.0. Shoal: Не open source. Tokker: Apache-2.0. Ledgers: MIT. Ghostwritin': MIT. Squeezin: Не open source.