ТЕХНОЛОГИИ / ОТКРЫТЫЙ КОД
Обычные детали. Собраны один раз.
Каждому проекту нужен бэкенд, и ни одному не стоит его строить. Части, необходимые компании, пишутся один раз как обвязка с открытым кодом на 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
Назовите его
Venture, его домен, модули и адаптеры, которые за них отвечают. Один файл.
- Шаг 2
Соберите его
Сборка отклоняет модуль, чей порт рантайм не предоставляет, и два модуля, претендующих на одну таблицу или маршрут.
- Шаг 3
Запустите его
Один stateless worker, содержащий ровно перечисленные модули, со своей базой данных, секретами и доменом.
СЛОИ
Шесть слоёв: от рантайма до продуктов.
Читайте снизу вверх: где выполняется код, harness, из которого компилируется каждый бэкенд, бэкенды, общие продукты, агенты, управляющие компанией, и самостоятельные venture. Сплошные чипы — в работе сегодня, чипы с контуром — в harness, пунктирные — запланированы.
Cloudflare Workers, скомпилированные в WebAssembly
Где работает каждый venture worker. Данные и почта находятся рядом, и тот же код может работать на сервере.
Cratefield: открытое ядро на Rust
Порты, маршрутизатор и модули. Модуль запрашивает порт; адаптер отвечает.
Ports
Модули
Один worker и одна база данных на venture
Каждый venture собирается из harness и разворачивается отдельно. Сегодня на harness в работе:
Стек: продукты, к которым подключается каждый venture
Общие продукты, расставленные по полкам в зависимости от назначения. Каждый — компания со своими клиентами.
Выпуск и эксплуатация
VibeCaddie
Keep Shipping
release.show
Shoal
Коммуникация
Owlpost
Squeezin
Безопасность
promptdecode
Sealbin
Клиенты
SupportGenius
PosPlugin
Ledgers
Контент и ИИ
Kontinuum
Living Brain
Tokker
Ghostwritin'
Пять слоёв, по одному агенту на каждую функцию
Каждая функция в каждом слое — это агент. Colonizer запускает кодинг-агентов для слоя сборки.
- ПОИСК3 агента
- СБОРКА4 агента
- ЭКСПЛУАТАЦИЯ4 агента
- РАСПРОСТРАНЕНИЕ3 агента
- ОБУЧЕНИЕ3 агента
Colonizer: кодинг-агенты, превращающие задачи GitHub в pull request’ы
Самостоятельные venture
Venture вне стека. Они наследуют фундамент и ничего в него не добавляют.
Шесть слоёв снизу вверх
- рантайм: Cloudflare Workers, скомпилированные в WebAssembly. Где работает каждый venture worker. Данные и почта находятся рядом, и тот же код может работать на сервере.
- harness: Cratefield: открытое ядро на Rust. Порты, маршрутизатор и модули. Модуль запрашивает порт; адаптер отвечает.
- бэкенды: Один worker и одна база данных на venture. Каждый venture собирается из harness и разворачивается отдельно. Сегодня на harness в работе:
- полки: Стек: продукты, к которым подключается каждый venture. Общие продукты, расставленные по полкам в зависимости от назначения. Каждый — компания со своими клиентами.
- агенты: Пять слоёв, по одному агенту на каждую функцию. Каждая функция в каждом слое — это агент. Colonizer запускает кодинг-агентов для слоя сборки.
- продукты: Самостоятельные venture. Venture вне стека. Они наследуют фундамент и ничего в него не добавляют.
ЗАПРОС ОТ НАЧАЛА ДО КОНЦА
Кто что делает, когда посетитель подписывается.
Нарисовано только по связям из реестра. Сплошная линия — в работе сегодня и передаёт трафик; пунктирная — запланировано, трафика пока нет.
Visitor
человек на сайте venture
Venture worker
один worker на venture, на harness Cratefield
в работеOwlpost
почта для венчуров
в работеSupportGenius
баг-репорты и поддержка
в планахColonizer
кодинг-агенты на harness
в работеLiving Brain
знания, сохраняющие то, что сработало
в планах
Связи в этом потоке: посетитель к воркеру венчура, HTTPS-запрос: в работе. Воркер венчура к Owlpost, письмо-подтверждение: в работе. Воркер венчура к SupportGenius, ошибки становятся issue: в планах. SupportGenius к Living Brain, поддержка пополняет знания: в планах. Colonizer к Living Brain, агенты пополняют знания: в работе.
МОДУЛИ ВИДЯТ ТОЛЬКО ПОРТЫ
Порты с одной стороны. Адаптеры — с другой.
Модуль запрашивает порт, а не вендора. Рантайм отвечает через адаптер. Адаптеры принадлежат самому 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.
Прогресс отслеживается в открытом виде: задачами и этапами.
- M0готово
Фундамент
Инструменты рабочего пространства, ядро, рантайм Cloudflare, адаптеры Resend и Turnstile, адаптер SQLite, CLI fz и набор для тестирования.
- M1готово
Первые модули
Email-подписка, лист ожидания, шаблоны, базовая защита и наблюдаемость.
- M2в процессе
Первый venture в работе
Публикация на crates.io, документация, версионирование контрактов и первый venture на собственном API-домене.
- M3готово
Переносимость на собственный хостинг
Адаптер Postgres, нативный рантайм, набор тестов на паритет для SQLite и Postgres, а также экспорт и импорт данных.
- ДИЗАЙН
- 30 записей о решениях, все в репозитории
- АРХИТЕКТУРА
- 12 разделов в документе об архитектуре
- ПЕРВЫЕ МОДУЛИ
- Email-подписка и лист ожидания, собрано
- ОПУБЛИКОВАНО
- Большинство крейтов опубликованы на crates.io. Раунд релизов ожидается.
- УПРАВЛЯЕМЫЙ СЕРВИС
- Ещё не построено. Плоскость управления спроектирована, но не написана.
Показатели harness: считаны из Cratefield/harness 2026-10-21.
БЕЗОПАСНОСТЬ И ПРИВАТНОСТЬ
Шесть слоёв между запросом и данными.
Каждый слой — это контроль, описанный в harness. Полный список — в его документах по безопасности и приватности.
- 01 · ПЕРИМЕТР
Только собственные origin’ы venture
Worker venture отвечает на собственном домене. CORS разрешает только origin’ы, которые перечислил venture, и каждый ответ возвращает идентификатор запроса.
- 02 · ЗАЩИТА ОТ ЗЛОУПОТРЕБЛЕНИЙ
Боты и наплыв запросов
Turnstile, при сбое отказывает. Лимиты частоты на каждую публичную запись через порт RateLimiter.
- 03 · ЗАПРОСЫ
Ошибки и логи без адресов
Ошибки — это problem+json с фиксированным slug для каждого случая. Одна структурированная строка на запрос, никогда не содержащая email-адреса.
- 04 · ТОКЕНЫ
Ссылки, а не сессии
Ссылки подтверждения и отписки подписаны HMAC, с ротацией ключей. Хранилища сессий, которое нужно запускать, масштабировать или которое может утечь, нет.
- 05 · СЕКРЕТЫ
Конвертное шифрование
Секреты шифруются конвертным способом и привязаны к своей строке. Локальный файловый провайдер порта KMS отказывается работать в продакшене.
- 06 · ИЗОЛЯЦИЯ
Один venture, одна база данных
Общего рантайма между компаниями нет. У каждой свой worker, свои данные и секреты, и её можно перенести или отключить отдельно.
ЧТО ОТКРЫТО
Заводской цех открыт. Рецепты — нет.
Harness, его рантайм, адаптеры и первые два модуля распространяются под лицензией MIT и разрабатываются открыто. Любой может построить на них бэкенд, и так делает каждый наш venture. Модули, в которых закодировано, как Factory Zero управляет своими компаниями, остаются закрытыми. Бэкенд каждого venture тоже закрыт.
Один из проектов — сама обвязка. Cratefield берёт обвязку с открытым кодом и добавляет вокруг неё управляемый слой: он разворачивал бы воркер, базу данных и секреты в вашем собственном аккаунте Cloudflare и затем обслуживал их. Обвязка реальна и работает; эта панель управления спроектирована, но ещё не написана. Именно здесь граница модулей оправдывает себя: клиент может собрать и развернуть собственный модуль, и его исходный код никогда не попадёт к нам.
Решения записываются по мере принятия. Документ архитектуры и записи о решениях лежат в репозитории, включая ту, где объяснено, почему первая попытка была выброшена.
- MITобвязкаядро, среда выполнения, адаптеры, регистрация по почте, лист ожидания, CLI, набор для тестов
- DOCархитектураполное проектное описание, двенадцать разделов
- ADRзаписи о решенияхпочему Rust, почему порты, почему композиция происходит во время компиляции
- MITшаблон бэкенда ventureотправная точка для нового бэкенда venture
- SRCэтот сайтстатика, без этапа сборки, без зависимостей
- FZ-004Cratefieldуправляемый сервис, создаваемый на обвязке
- ORGgithub.com/Factory-Zeroорганизация студии; сама обвязка теперь находится под Cratefield
Лицензии по всему стеку
Из 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.